download original
#!/usr/bin/octave --persist
# -*- octave -*-
# generic (non-linear) numerical optimization of a function of 2 parameters
1;
global M = [3;2]
function phi = phi(x)
global M
phi = -exp(-sum((x - M).^2));
endfunction
##plot it -- incredibly convoluted
# nested function -- only works when copied & pasted into the command line???
function plotR2_R = plotR2_R(func, domain)
#ezmesh(funcmesh, [0 5]) #error
#ezmesh('funcmesh', [0 5]) #error
#ezmesh(@funcmesh, domain) #error ("handles to nested functions are not yet supported")
ezmesh(@(x,y) funcmesh(func, x, y), domain)
endfunction
# private to plotR2_R -- nested only works on command line??
function funcmesh = funcmesh(func, xs, ys)
funcmesh = ones([size(xs,1), size(xs,2)]);
for m = 1:size(xs,1)
for n = 1:size(xs,2)
funcmesh(m,n) = func([xs(m,n); ys(m,n)]);
endfor
endfor
endfunction
plotR2_R(@phi, [0 5 0 5]);
xmin = sqp([1;1], @phi)
hold on
plot3([xmin(1),xmin(1)], [xmin(2),xmin(2)], [-2,1]);
back to matlab_octave
(C) 1998-2017 Olaf Klischat <olaf.klischat@gmail.com>