Está en la página 1de 3

Backward ------------------------------------------------- n=length(a); er=norm([x-x0,y-y0],inf)/norm([x,y],inf);

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

También podría gustarte