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