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 {
}
};
// TODO: take a reference to a correction
template <class Functional>
typename Functional::SmallVector minimise(
const Functional J, const typename Functional::SmallVector x) {
void minimise(const Functional J, const typename Functional::SmallVector x,
typename Functional::SmallVector &corr) {
typename Functional::SmallVector descDir = J.descentDirection(x);
if (descDir == typename Functional::SmallVector(0.0))
return typename Functional::SmallVector(0.0);
if (descDir == typename Functional::SmallVector(0.0)) {
corr = typename Functional::SmallVector(0.0);
return;
}
// {{{ Construct a restriction of J to the line x + t * descDir
......@@ -137,9 +137,8 @@ typename Functional::SmallVector minimise(
<< std::endl;
;
typename Functional::SmallVector middle = descDir;
middle *= m;
return middle;
corr = descDir;
corr *= m;
}
template <int dim, class Function>
......@@ -149,7 +148,7 @@ void functionTester(
typename SampleFunctional<dim, Function>::SmallVector correction;
std::cout << "Old value: J(...) = " << J(start) << std::endl;
for (size_t i = 1; i <= runs; ++i) {
correction = minimise(J, start);
minimise(J, start, correction);
start += correction;
if (i != runs)
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.
Finish editing this message first!
Please register or to comment