function [x,k,err]=Newton(B1,B2,b1,b2,x0,eps,kmax) //- Methode de Newton pour resoudre max(B1 x-b1,B2 x-b2)=0; //- Initialisations: k=0; x=x0; err=eps+1; Fp=spzeros(B1); Id=speye(B1); PRINT=0 while( keps ) k=k+1 xold=x; //- Definition de F'(x): test=(B1*x-b1) - (B2*x-b2); i=find(test>=0); Fp(i,:)=B1(i,:); j=find(test<0); Fp(j,:)=B2(j,:); F=max(B1*x-b1,B2*x-b2); //- Definition nouvel x x=x-Fp\F; //- Estimateur pour convergence err=norm(max(B1*x-b1,B2*x-b2),'inf'); if PRINT printf('k=%5i, err=%12.6f, n(x-xold)=%10.6f\n',k,err,norm(x-xold)); //scanf('%c'); end end endfunction