X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=CreaPhase.git;a=blobdiff_plain;f=octave_packages%2Foptim-1.2.0%2Fnrm.m;fp=octave_packages%2Foptim-1.2.0%2Fnrm.m;h=e2e0c7ab8110d241a62024d3e4c4056cb41e0e23;hp=0000000000000000000000000000000000000000;hb=c880e8788dfc484bf23ce13fa2787f2c6bca4863;hpb=1705066eceaaea976f010f669ce8e972f3734b05 diff --git a/octave_packages/optim-1.2.0/nrm.m b/octave_packages/optim-1.2.0/nrm.m new file mode 100644 index 0000000..e2e0c7a --- /dev/null +++ b/octave_packages/optim-1.2.0/nrm.m @@ -0,0 +1,38 @@ +## Copyright (C) 2000 Ben Sapp +## Copyright (C) 2002 Paul Kienzle +## +## This program is free software; you can redistribute it and/or modify it under +## the terms of the GNU General Public License as published by the Free Software +## Foundation; either version 3 of the License, or (at your option) any later +## version. +## +## This program is distributed in the hope that it will be useful, but WITHOUT +## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +## details. +## +## You should have received a copy of the GNU General Public License along with +## this program; if not, see . + +## -*- texinfo -*- +## @deftypefn {Function File} {@var{xmin} =} nrm(@var{f},@var{x0}) +## Using @var{x0} as a starting point find a minimum of the scalar +## function @var{f}. The Newton-Raphson method is used. +## @end deftypefn + +## Reference: David G Luenberger's Linear and Nonlinear Programming + +function x = nrm(f,x,varargin) + velocity = 1; + acceleration = 1; + + h = 0.01; + while(abs(velocity) > 0.0001) + fx = feval(f,x,varargin{:}); + fxph = feval(f,x+h,varargin{:}); + fxmh = feval(f,x-h,varargin{:}); + velocity = (fxph - fxmh)/(2*h); + acceleration = (fxph - 2*fx + fxmh)/(h^2); + x = x - velocity/abs(acceleration); + endwhile +endfunction