x=randn(n,1); g=dejer(x); h=jacnum('ejer',x)'; norm(g-h)/max(1,norm(g)) x=randn(n,1); A=hejer(x); B=jacnum('dejer',x); B=(B+B')/2; norm(A-B,1)/max(1,norm(A,1)) em=eps/2; e0=sqrt(em); x=[ ]'; fx=ejer(x); gfx=dejer(x); A=hejer(x); [R q]=chol(A); if q==0, r=rcond(A); if r<e0, q=1; end, end, if q>0, v=eig(A); M=max(v); m=min(v); if M==m, A=eye(size(A)); else, lambda=(e0*M-m)/(1- e0); A=A+lambda*eye(size(A)); end, end, d=-A\gfx; [xn,fxn,ro,info]=armijo('ejer',x,d,fx,gfx); if info==-1, info, return, end, gfxn=dejer(xn); [fx-fxn,norm(xn-x),norm(gfxn)] x=xn; fx=fxn; gfx=gfxn; A=hejer(x); [R q]=chol(A); if q==0, r=rcond(A); if r<e0, q=1; end, end, if q>0, v=eig(A); M=max(v); m=min(v); if M==m, A=eye(size(A)); else, lambda=(e0*M-m)/(1-e0); A=A+lambda*eye(size(A)); end,end, d=-A\gfx; [xn,fxn,ro,info]=armijo('ejer',x,d,fx,gfx); if info==-1, info, return, end, gfxn=dejer(xn); [fx-fxn,norm(xn-x),norm(gfxn)] x=xn, fx=fxn, gfx=gfxn, A=hejer(x); [R,q]=chol(A); q x=randn(n,1); g=dejer(x); h=jacnum('ejer',x)'; norm(g-h)/max(1,norm(g)) x=[ ]'; fx=ejer(x); gfx=dejer(x); B=eye(length(x)); d=-B\gfx; ro=-2*max(1,abs(fx))/(gfx'*d); [xn,ro,fxn,gfxn,info]=wolfe(x,d,fx,gfx,ro, 'ejer', 'dejer'); if info==-1, info, return, end, s=xn-x; y=gfxn-gfx; [fx-fxn,norm(s),norm(gfxn)], sy=s'*y; bs=B*s; sbs=s'*bs; if sy<0.2*sbs, theta=0.8*sbs/(sbs-sy); y=theta*y+(1-theta)*bs; sy=0.2*sbs; end, alpha=y'*y/sy; B=alpha*B; bs=alpha*bs; sbs=alpha*sbs; B=B+y*y'/sy-(bs*bs')/sbs; x=xn; fx=fxn; gfx=gfxn; d=-B\gfx; ro=1; [xn,ro,fxn,gfxn,info]=wolfe(x,d,fx,gfx,ro,'ejer', 'dejer'); if info==-1, info, return, end, s=xn-x; y=gfxn-gfx; [fx-fxn,norm(s),norm(gfxn)], sy=s'*y; bs=B*s; sbs=s'*bs; if sy<0.2*sbs, theta=0.8*sbs/(sbs-sy); y=theta*y+(1-theta)*bs; sy=0.2*sbs; end, B=B+y*y'/sy-(bs*bs')/sbs; x, fx, gfx, A=jacnum('dejer',x); A=(A+A')/2; [R,q]=chol(A); q function y=dproducto(x) j=find(x==0); l=length(j); if l==0 y=prod(x)./x; elseif l==1 y=zeros(length(x),1); x(j)=[]; y(j)=prod(x); else y=zeros(length(x),1); end