Skip to content
Snippets Groups Projects
Commit 2f1b9c5b authored by Elias Pipping's avatar Elias Pipping Committed by Elias Pipping
Browse files

Make minimise() write to a reference

parent afd0e74a
No related branches found
No related tags found
No related merge requests found
...@@ -94,15 +94,15 @@ class SampleFunctional { ...@@ -94,15 +94,15 @@ class SampleFunctional {
} }
}; };
// TODO: take a reference to a correction
template <class Functional> template <class Functional>
typename Functional::SmallVector minimise( void minimise(const Functional J, const typename Functional::SmallVector x,
const Functional J, const typename Functional::SmallVector x) { typename Functional::SmallVector &corr) {
typename Functional::SmallVector descDir = J.descentDirection(x); typename Functional::SmallVector descDir = J.descentDirection(x);
if (descDir == typename Functional::SmallVector(0.0)) if (descDir == typename Functional::SmallVector(0.0)) {
return typename Functional::SmallVector(0.0); corr = typename Functional::SmallVector(0.0);
return;
}
// {{{ Construct a restriction of J to the line x + t * descDir // {{{ Construct a restriction of J to the line x + t * descDir
...@@ -137,9 +137,8 @@ typename Functional::SmallVector minimise( ...@@ -137,9 +137,8 @@ typename Functional::SmallVector minimise(
<< std::endl; << std::endl;
; ;
typename Functional::SmallVector middle = descDir; corr = descDir;
middle *= m; corr *= m;
return middle;
} }
template <int dim, class Function> template <int dim, class Function>
...@@ -149,7 +148,7 @@ void functionTester( ...@@ -149,7 +148,7 @@ void functionTester(
typename SampleFunctional<dim, Function>::SmallVector correction; typename SampleFunctional<dim, Function>::SmallVector correction;
std::cout << "Old value: J(...) = " << J(start) << std::endl; std::cout << "Old value: J(...) = " << J(start) << std::endl;
for (size_t i = 1; i <= runs; ++i) { for (size_t i = 1; i <= runs; ++i) {
correction = minimise(J, start); minimise(J, start, correction);
start += correction; start += correction;
if (i != runs) if (i != runs)
std::cout << "New value: J(...) = " << J(start) << std::endl; std::cout << "New value: J(...) = " << J(start) << std::endl;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment