function x=backward(a,b) fori=1:n, md=[md;x,y,er];
n=length(a); b(i)=b(i)/a(i,i); x0=x; x(n)=b(n)/a(n,n); a(i,:)=a(i,:)/a(i,i); y0=y; fori=n-1:-1:1, end end s=0; D=eye(n)-a; newton---------------------------------------------------- for j=i+1:n, x=[1,1]'; % mi primer programa s=s+a(i,j)*x(j); er=1; % metodo de Newton end error=0.00001; clc x(i)=(b(i)-s)/a(i,i); whileer>error, clear end y=D*x+b; display('METODO DE NEWTON N=2') x=x'; er=norm(y-x,inf)/norm(y,inf); x0=0.5; egaussian ------------------------------------------------- x=y; y0=0.3; function x=egaussian(a,b) end er=1; n=length(a); jacobian --------------------------------------------------- E=0.0001; for j=1:n-1, clc n=0; fori=j+1:n, a=[4 1 -2;2 3 0.5;1 -2 4]; md=[n,x0,y0,er]; p=-a(i,j)/a(j,j); b=[3 ; 1;3]; whileer>E, a(i,:)=a(i,:)+p*a(j,:); n=length(a); % sistema de ecuaciones H b(i)=b(i)+p*b(j); fori=1:n, J=[1 , -cos(y0) ; sin(x0)/2 , 1]; end b(i)=b(i)/a(i,i); b=[x0-sin(y0) ; y0-cos(x0)/2 ]; end a(i,:)=a(i,:)/a(i,i); H=jacobi(J,b); if prod(diag(a)) ~0 end x=x0-H(1); x=backward(a,b); D=eye(n)-a; y=y0-H(2); else x=[1,1,1]'; er=norm([x,y]-[x0,y0])/norm([x,y]); display('matriz no singular') er=1; n=n+1; x=[]; error=0.00001; md=[md;n,x,y,er]; end md=[0,x',er]; x0=x; worward--------------------------------------------------function m=0; y0=y; x=forward(a,b) whileer>error, end n=length(a); m=m+1; display('la aproximacion es: ') x(1)=b(1)/a(1,1); y=D*x+b; disp([x,y]) fori=2:n, er=norm(y-x,inf)/norm(y,inf); display('las aproximaciones son: ') s=0; md=[md;m,y',er]; disp(md) for j=1:i-1, x=y; newtonmultivariado ----------------------------------- s=s+a(i,j)*x(j); end % % functionmf=newtonmultivar(FF,aprox,error) end md % mi primer programa x(i)=(b(i)-s)/a(i,i); punto fijo sistema -------------------------------------- % metodo de Newton end clc clc x=x'; clear clear gaussiana------------------------------------------------- g1=input('g1: ') display('METODO DE NEWTON N=2') % METODO ELIMINACION GAUSSIANA g2=input('g2: ') syms x y clc ezplot('y-cos(x)/2',[0,2,0,2]) FF=[x-sin(y);y-cos(x)/2]; clear hold on aa=jacobian(FF); a=[ 1 3 4; 2 1 0; 4 -1 2] ezplot('x-sin(y)',[0,2,0,2]) F=inline(FF); n=length(a) hold off a=inline(aa); for j=1:n-1, error=0.0001; x0=0.5; for i=j+1:n, er=1; y0=0.3; p=-a(i,j)/a(j,j); %w0=[0.5,0.3]' er=1; a(i,:)=a(i,:)+p*a(j,:); x0=0.5; E=0.0001; a y0=0.3; n=0; end md=[x0,y0,er]; md=[n,x0,y0,er]; end whileer>error, whileer>E, jacobi------------------------------------------------------ x=sin(y0); % sistema de ecuaciones H function y=jacobi(a,b) y=cos(x0)/2; ma=a(x0,y0); mb=F(x0',y0); n=0; a H=jacobi(ma,mb); md=[n,x0,y0,er]; ifbol==0 x=x0-H(1); whileer>E, %PASO 8 y=y0-H(2); % sistema de ecuaciones TETA=H if a(n,n)==0 & a(n,n+1)==0 er=norm([x,y]-[x0,y0])/norm([x,y]); ma=a(x0,y0) disp('EL SISTEMA TIENE INFINITAS SOLUCIONES'); n=n+1; mb=F(x0',y0) fprintf('PROCEDIMIENTO TERMINADO SIN EXITO\n'); md=[md;n,x,y,er]; H=ma\mb; x0=x; x=x0-H(1); else if a(n,n)==0 & a(n,n+1)~=0 y0=y; y=y0-H(2); disp('EL SISTEMA NO TIENE SOLUCION'); end er=norm([x,y]-[x0,y0])/norm([x,y]); fprintf('PROCEDIMIENTO TERMINADO SIN EXITO\n'); display('la aproximacion es: ') n=n+1; else % PASO9 %Haga los pasos 9-11 disp([x,y]) md=[md;n,x,y,er]; x(n)=a(n,n+1)/a(n,n); display('las aproximaciones son: ') x0=x; %comienza la sustitucion hacia atras disp(md) y0=y; %PASO 10 primer programa --------------------------------------- end fori=n-1:-1:1 % mi primer programa display('la aproximacion es: ') s=0; clc disp([x,y]) for j=i+1:n clear display('las aproximaciones son: ') s=s+a(i,j)*x(j); a=[4,1,-1;1,-2,4;2,3,0.5] disp(md) end n=length(a); gausianno------------------------------------------------- x(i)=(a(i,n+1)-s)/a(i,i); for j=1:n-1, clear end if a(j,j)==0 clc %PASO 11 %intercambio a=input('INGRESE LA MATRIZ AUMENTADA a='); disp('la solucion aproximada del sistema es') [m,pos]=max(a(:,j)) %a=[1 -1 2 -1 -8; 2 -2 3 -3 -20; 1 1 1 0 -2; 1 -1 4 3 4]; fori=1:n aux=a(j,:) %PASO 1 fprintf('\n x(%1d)=%6.3f',i,x(i)); a(j,:)=a(pos,:) [n,m]=size(a); end a(pos,:)=aux bol=0; fprintf('\nPROCEDIMIENTO TERMINADO pause %PASO 2 Haga pasos 3-5 SATISFACTORIAMENTE\n'); end for i=1:n-1 end fori=j+1:n, for p=i:n end p=-a(i,j)/a(j,j); if a(p,i)~=0 else a(i,:)=a(i,:)+p*a(j,:); break; fprintf('PROCEDIMIENTO TERMINADO SIN EXITO\n'); end end end end end %LA EJECUCION DEL PROGRAMA: a if p==n newtonmulti--------------------------------------------- disp('EL SISTEMA TIENE INFINITAS SOLUCIONES O NO EXISTE % % functionmf=newtonmultivar(FF,aprox,error) SOLUCION'); % mi primer programa bol=1; % metodo de Newton break; clc end clear %PASO 4 intercambio de filas display('METODO DE NEWTON N=2') if p~=i ezplot('x^2-y^2+2*y') disp('pivoteando') hold on aux=a(i,:); ezplot('2*x+y^2-6') a(i,:)=a(p,:); hold off a(p,:)=aux; syms x y end FF=[x^2-y^2+2*y;2*x+y^2-6] %PASO 5 Haga los pasos 6-7 aa=jacobian(FF) for j=i+1:n F=inline(FF); %PASO 6 a=inline(aa); m(j,i)=a(j,i)/a(i,i); x0=1; %PASO 7 y0=2.5; a(j,:)=a(j,:)-m(j,i)*a(i,:); er=1; end E=0.0001; end