From: <sch...@us...> - 2010-05-25 13:50:25
|
Revision: 7342 http://octave.svn.sourceforge.net/octave/?rev=7342&view=rev Author: schloegl Date: 2010-05-25 13:50:16 +0000 (Tue, 25 May 2010) Log Message: ----------- simplify arg-list, remove obsolete leval.oct Modified Paths: -------------- trunk/octave-forge/main/optim/inst/d2_min.m trunk/octave-forge/main/optim/inst/line_min.m trunk/octave-forge/main/optim/inst/nelder_mead_min.m Removed Paths: ------------- trunk/octave-forge/main/optim/src/leval.cc Modified: trunk/octave-forge/main/optim/inst/d2_min.m =================================================================== --- trunk/octave-forge/main/optim/inst/d2_min.m 2010-05-25 12:59:43 UTC (rev 7341) +++ trunk/octave-forge/main/optim/inst/d2_min.m 2010-05-25 13:50:16 UTC (rev 7342) @@ -178,7 +178,7 @@ niter += 1; if nev(1) < maxev, break; end; - [v,d,h] = feval (d2f, {args{1:narg-1},reshape(x,sz),args{narg+1:end}}{:}); + [v,d,h] = feval (d2f, args{1:narg-1},reshape(x,sz),args{narg+1:end}); nev(2)++; if prudent && niter <= 1 && \ @@ -192,7 +192,7 @@ d = d(:); if prudent - v2 = feval (f, {args{1:narg-1},reshape(x,sz),args{narg+1:end}}{:}); + v2 = feval (f, args{1:narg-1},reshape(x,sz),args{narg+1:end}); nev(1)++; if abs(v2-v) > 0.001 * sqrt(eps) * max (abs(v2), 1) printf ("d2_min : f and d2f disagree %8.3g\n",abs(v2-v)); @@ -246,7 +246,7 @@ printf ("d2_min : Whoa!! any(isnan(xnew)) (1)\n"); end - vnew = feval (f, {args{1:narg-1},reshape(xnew,sz),args{narg+1:end}}{:}); + vnew = feval (f, args{1:narg-1},reshape(xnew,sz),args{narg+1:end}); nev(1)++; if vnew<vbest # Stash best values @@ -285,7 +285,7 @@ if any(isnan(xnew)), printf ("d2_min : Whoa!! any(isnan(xnew)) (2)\n"); end - vnew = feval (f, {args{1:narg-1},reshape(xnew,sz),args{narg+1:end}}{:}); + vnew = feval (f, args{1:narg-1},reshape(xnew,sz),args{narg+1:end}); nev(1)++; while vnew < vbest, @@ -294,7 +294,7 @@ xbest = xnew; wn = wn*ocoeff ; xnew = x+wn*dbest; - vnew = feval (f, {args{1:narg-1},reshape(xnew,sz),args{narg+1:length(args)}}{:}); + vnew = feval (f, args{1:narg-1},reshape(xnew,sz),args{narg+1:length(args)}); if verbose printf ( "Looking farther : v = %8.3g\n",vnew); end @@ -319,7 +319,7 @@ if vbest < vold ## "improvement found" if prudent - tmpv = feval (f, {args{1:narg-1},reshape(xbest,sz),args{2:end}}{:}); + tmpv = feval (f, args{1:narg-1},reshape(xbest,sz),args{2:end}); nev(1)++; if abs (tmpv-vbest) > eps @@ -342,7 +342,7 @@ abest = args; # Check whether eval (code) changes value if prudent - tmpv = feval (f, {args{1:narg-1},reshape(x,sz),args{2:end}}{:}); + tmpv = feval (f, args{1:narg-1},reshape(x,sz),args{2:end}); nev(1)++; if abs (tmpv-vbest) > max (min (100*eps,0.00001*abs(vbest)), eps) , printf ("d2_min : Whoa! Value changes by %g after eval (code)\n",\ @@ -386,7 +386,7 @@ # One last check if prudent - err = feval (f, {args{1:narg-1},reshape(xbest,sz),args{2:end}}{:}); + err = feval (f, args{1:narg-1},reshape(xbest,sz),args{2:end}); nev(1)++; if abs (err-vbest) > eps, Modified: trunk/octave-forge/main/optim/inst/line_min.m =================================================================== --- trunk/octave-forge/main/optim/inst/line_min.m 2010-05-25 12:59:43 UTC (rev 7341) +++ trunk/octave-forge/main/optim/inst/line_min.m 2010-05-25 13:50:16 UTC (rev 7342) @@ -51,12 +51,9 @@ a = 0; # was 1e-4 while (abs (velocity) > 0.000001) - arglist = {args{1:narg-1}, x+a*dx, args{narg+1:end}}; - fx = feval (f,arglist{:}); - arglist = {args{1:narg-1}, x+(a+h)*dx, args{narg+1:end}}; - fxph = feval (f,arglist{:}); - arglist = {args{1:narg-1}, x+(a-h)*dx, args{narg+1:end}}; - fxmh = feval (f,arglist{:}); + fx = feval (f,args{1:narg-1}, x+a*dx, args{narg+1:end}); + fxph = feval (f,args{1:narg-1}, x+(a+h)*dx, args{narg+1:end}); + fxmh = feval (f,args{1:narg-1}, x+(a-h)*dx, args{narg+1:end}); velocity = (fxph - fxmh)/(2*h); acceleration = (fxph - 2*fx + fxmh)/(h^2); Modified: trunk/octave-forge/main/optim/inst/nelder_mead_min.m =================================================================== --- trunk/octave-forge/main/optim/inst/nelder_mead_min.m 2010-05-25 12:59:43 UTC (rev 7341) +++ trunk/octave-forge/main/optim/inst/nelder_mead_min.m 2010-05-25 13:50:16 UTC (rev 7342) @@ -219,7 +219,7 @@ u += jumplen * randn (size (u)); for i = 1:N+1, y(i) = \ - feval (f, {args{1:narg-1},reshape(u(i,:),R,C),args{narg+1:length(args)}}{:}); + feval (f, args{1:narg-1},reshape(u(i,:),R,C),args{narg+1:length(args)}); end nev += N+1; [ymin,imin] = min(y); [ymax,imax] = max(y); @@ -251,7 +251,7 @@ ## f2 = f1 - (-1) = 2/N + 1 = (N+2)/N xnew = (2*xsum - (N+2)*u(imax,:)) / N; ## xnew = (2*xsum - N*u(imax,:)) / N; - ynew = feval (f, {args{1:narg-1},reshape(xnew,R,C),args{narg+1:length(args)}}{:}); + ynew = feval (f, args{1:narg-1},reshape(xnew,R,C),args{narg+1:length(args)}); nev++; if ynew <= ymin , # Reflection is good @@ -268,7 +268,7 @@ ## f1 = (1-2)/N = -1/N ## f2 = f1 - 2 = -1/N - 2 = -(2*N+1)/N xnew = ( -xsum + (2*N+1)*u(imax,:) ) / N; - ynew = feval (f, {args{1:narg-1},reshape(xnew,R,C),args{narg+1:length(args)}}{:}); + ynew = feval (f, args{1:narg-1},reshape(xnew,R,C),args{narg+1:length(args)}); nev++; if ynew <= ymin , # expansion improves @@ -299,7 +299,7 @@ ## f1 = (1-0.5)/N = 0.5/N ## f2 = f1 - 0.5 = 0.5*(1 - N)/N xnew = 0.5*(xsum + (N-1)*u(imax,:)) / N; - ynew = feval (f, {args{1:narg-1},reshape(xnew,R,C),args{narg+1:length(args)}}{:}); + ynew = feval (f, args{1:narg-1},reshape(xnew,R,C),args{narg+1:length(args)}); nev++; if ynew >= ymax , # New point is even worse. Contract whole @@ -316,7 +316,7 @@ else ii = [1:imin-1,imin+1:N+1]; end for i = ii y(i) = \ - ynew = feval (f, {args{1:narg-1},reshape(u(i,:),R,C),args{narg+1:length(args)}}{:}); + ynew = feval (f, args{1:narg-1},reshape(u(i,:),R,C),args{narg+1:length(args)}); end ## 'contraction' tra += 16 ; Deleted: trunk/octave-forge/main/optim/src/leval.cc =================================================================== --- trunk/octave-forge/main/optim/src/leval.cc 2010-05-25 12:59:43 UTC (rev 7341) +++ trunk/octave-forge/main/optim/src/leval.cc 2010-05-25 13:50:16 UTC (rev 7342) @@ -1,63 +0,0 @@ -// Copyright (C) 2002 Etienne Grossmann. All rights reserved. -// -// 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 2, or (at your option) any -// later version. -// -// This 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. - - -#include "config.h" -#include <oct.h> -#include <octave/parse.h> - - -DEFUN_DLD (leval, args, nargout, - "-*- texinfo -*-\n\ -@deftypefn {Built-in Function} {} leval (@var{name}, @var{list})\n\ -Evaluate the function named @var{name}. All the elements in @var{list}\n\ -are passed on to the named function. For example,\n\ -\n\ -@example\n\ -leval (\"acos\", list (-1))\n\ - @result{} 3.1416\n\ -@end example\n\ -\n\ -@noindent\n\ -calls the function @code{acos} with the argument @samp{-1}.\n\ -\n\ -The function @code{leval} provides provides more flexibility than\n\ -@code{feval} since arguments need not be hard-wired in the calling \n\ -code. @seealso{feval and eval}\n\ -@end deftypefn") -{ - octave_value_list retval; - - int nargin = args.length (); - - if (nargin == 2) - { - std::string name = args(0).string_value (); - if (error_state) - error ("leval: first argument must be a string"); - - octave_value_list lst = args(1).list_value (); - if (error_state) - error ("leval: second argument must be a list"); - - retval = feval (name, lst, nargout); - - } - else - print_usage (); - - return retval; -} - -/* -%!assert(leval("acos", list(-1)), pi, 100*eps); - */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |