Matlab 源码,function前一行表文件名:
1 multphr.m 2 function [x, mu, lambda, output] = multphr(fun, hf, gf, dfun, dhf, dgf, x0) 3 maxk=500; sigma=2; eta=2; theta=0.8; epsilon=1e-5; k=0; ink=0; 4 x=x0; he=feval(hf, x); gi=feval(gf, x); l=length(he); m=length(gi); 5 6 mu=0.1*ones(l,1); lambda=0.1*ones(m,1); 7 btak=10; btakold=10; 8 9 while btak>epsilon && k<maxk 10 [x, ~, ik] = bfgs('mpsi', 'dmpsi', x0, fun, hf, gf, dfun, dhf, dgf, mu, lambda, sigma); 11 ink = ink+ik; 12 he=feval(hf, x); gi=feval(gf, x); 13 btak=0; 14 for i=1:l 15 btak=btak+he(i)^2; 16 end 17 for i=1:m 18 btak=btak+min(gi(i), lambda(i)/sigma)^2; 19 end