diff --git a/src/duneminimise.cc b/src/duneminimise.cc index 6e492fab12e090f1cd17c6ab68f28ac9f318a61d..e0b19bbf55b2da595ad224572e46552cb12c9b7d 100644 --- a/src/duneminimise.cc +++ b/src/duneminimise.cc @@ -37,10 +37,9 @@ DEFUN_DLD(duneminimise, args, nargout, "the help string") { SampleFunctional::SmallVector correction; Dune::minimise(J, start, correction); - start += correction; ColumnVector ret(dim); - Dune::duneToOctave<dim>(start, ret); + Dune::duneToOctave<dim>(correction, ret); return octave_value(ret); } diff --git a/src/foo.m b/src/foo.m index f23ed2e69479889dceba1419aa1a6e4db19ae45f..6abab3252c81c942ef39eaf76584441580abade0 100644 --- a/src/foo.m +++ b/src/foo.m @@ -24,12 +24,12 @@ oldvec = [279; 0]; olddiff = [ 0; 0]; for i=1:10 - newvec=duneminimise(oldvec); + newdiff=duneminimise(oldvec); + newvec = oldvec + newdiff; line([oldvec(1) newvec(1)], ... [oldvec(2) newvec(2)], ... [duneevaluate(oldvec) duneevaluate(newvec)], ... 'color', 'r'); - newdiff = newvec - oldvec; printf("Norm of step: %f\n", norm(newdiff)); if (i != 1) printf("Angle between steps: %f degrees\n", acos( dot(olddiff,newdiff) / (norm(olddiff) * norm(newdiff)) ) / pi * 180);