0% encontró este documento útil (0 votos)
203 vistas7 páginas

Solucionario de Métodos Numéricos en MATLAB

Este documento presenta dos métodos para resolver sistemas de ecuaciones lineales: el método de Newton-Raphson y el método de Doolittle. En el método de Newton-Raphson, se utiliza el método de Newton-Raphson modificado para encontrar las raíces de un sistema de ecuaciones no lineales derivadas de un modelo de Langmuir. En el método de Doolittle, se factoriza la matriz aumentada del sistema de ecuaciones en factores triangulares inferior y superior para resolver el sistema.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
203 vistas7 páginas

Solucionario de Métodos Numéricos en MATLAB

Este documento presenta dos métodos para resolver sistemas de ecuaciones lineales: el método de Newton-Raphson y el método de Doolittle. En el método de Newton-Raphson, se utiliza el método de Newton-Raphson modificado para encontrar las raíces de un sistema de ecuaciones no lineales derivadas de un modelo de Langmuir. En el método de Doolittle, se factoriza la matriz aumentada del sistema de ecuaciones en factores triangulares inferior y superior para resolver el sistema.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Solucionario Segundo consolidado

1.

Newton Rapson
clear, clc;
syms k K Co;
f1=log(Co/5.45)+K*(Co^2-5.45^2)-(k*K*10*(Co+5.45))/(Co-5.45);
f2=log(Co/1.06)+K*(Co^2-1.06^2)-(k*K*20*(Co+1.06))/(Co-1.06);
f3=log(Co/0.35)+K*(Co^2-0.35^2)-(k*K*30*(Co+0.35))/(Co-0.35);
%direfenciales parciales de cada función
%funcion f1
df1k=diff(f1,k);
df1K=diff(f1,K);
df1Co=diff(f1,Co);
%funcion f2
df2k=diff(f2,k);
df2K=diff(f2,K);
df2Co=diff(f2,Co);
%fucnion f3
df3k=diff(f3,k);
df3K=diff(f3,K);
df3Co=diff(f3,Co)
Aj=[df1k df1K df1Co;df2k df2K df2Co;df3k df3K df3Co];
Bj=[-f1;-f2;-f3];
fprintf('i k K Co d\n')
e=0.0001;
ks=1;
k0=0;
K0=0;
Co0=0;
mk0=[k0;K0;Co0];
k=k0; K=K0; Co=Co0
fprintf('%2d %10.6f %10.6f\n',0,k0,K0,Co0)
ks=1;
A=eval(Aj);
B=eval(Bj);
hj=inv(A)*B;
k1=k0+hj(1); K1=K0+hj(2); Co1=Co0+hj(3);
d=norm([k1,K1,Co1]-[k0,K0,Co0]);
fprintf('%2d %10.6f %10.6f %10.5e\n',ks,k1,K1,Co1,d)
while e<d
ks=ks+1;
k=k1; K=K1; Co=Co1;
A=eval(Aj);
B=eval(Bj);
hj=inv(A)*B;
k2=k1+hj(1); K2=K1+hj(2); Co2=Co1+hj(3);
d=norm([k2,K2,Co2]-[k1,K1,Co1]);
fprintf('%2d %10.6f %10.6f %10.5e\n',ks,k2,K2,Co2,d)
if d<e
break
end
ks=ks+1;
k=k2; K=K2; Co=Co2;
A=eval(Aj);
B=eval(Bj);
hj=inv(A)*B;
k3=k2+hj(1); K3=K2+hj(2); Co3=Co2+hj(3);
d=norm([k3,K3,Co3]-[k2,K2,Co3]);
fprintf('%2d %10.6f %10.6f %10.5e\n',ks,k3,K3,Co3,d)
k1=k3; K1=K3;Co1=Co3;
end

1/Co + 2*Co*K - (30*K*k)/(Co - 7/20) + (30*K*k*(Co +


7/20))/(Co - 7/20)^2

i k K Co d

0 0.000000 0.000000
0
1 Inf Inf Inf
2 NaN NaN NaN
3 NaN NaN NaN

Newton Rapson modificado

clear, clc;
syms k K Co;
f1=log(Co/5.45)+K*(Co^2-5.45^2)-(k*K*10*(Co+5.45))/(Co-5.45);
f2=log(Co/1.06)+K*(Co^2-1.06^2)-(k*K*20*(Co+1.06))/(Co-1.06);
f3=log(Co/0.35)+K*(Co^2-0.35^2)-(k*K*30*(Co+0.35))/(Co-0.35);
%direfenciales parciales de cada función
%funcion f1
df1k=diff(f1,k);
df1K=diff(f1,K);
df1Co=diff(f1,Co);
%funcion f2
df2k=diff(f2,k);
df2K=diff(f2,K);
df2Co=diff(f2,Co);
%fucnion f3
df3k=diff(f3,k);
df3K=diff(f3,K);
df3Co=diff(f3,Co)
Aj=[df1k df1K df1Co;df2k df2K df2Co;df3k df3K df3Co];
Bj=[-f1;-f2;-f3];
fprintf('i k K Co d\n')
e=0.0001;
ks=1;
k0=0;
K0=0;
Co0=0;
mk0=[k0;K0;Co0];
k=k0; K=K0; Co=Co0
fprintf('%2d %10.6f %10.6f\n',0,k0,K0,Co0)
ks=1;
A=eval(Aj);
B=eval(Bj);
hj=inv(A)*B;
k1=k0+hj(1); K1=K0+hj(2); Co1=Co0+hj(3);
d=norm([k1,K1,Co1]-[k0,K0,Co0]);
fprintf('%2d %10.6f %10.6f %10.5e\n',ks,k1,K1,Co1,d)
while e<d
ks=ks+1;
k=k1; K=K1; Co=Co1;
A=eval(Aj);
B=eval(Bj);
hj=inv(A)*B;
k2=k1+hj(1); K2=K1+hj(2); Co2=Co1+hj(3);
d=norm([k2,K2,Co2]-[k1,K1,Co1]);
fprintf('%2d %10.6f %10.6f %10.5e\n',ks,k2,K2,Co2,d)
if d<e
break
end
ks=ks+1;
k=k2; K=K2; Co=Co2;
A=eval(Aj);
B=eval(Bj);
hj=inv(A)*B;
k3=k2+hj(1); K3=K2+hj(2); Co3=Co2+hj(3);
d=norm([k3,K3,Co3]-[k2,K2,Co3]);
fprintf('%2d %10.6f %10.6f %10.5e\n',ks,k3,K3,Co3,d)
k1=k3; K1=K3;Co1=Co3;
end

i k K Co d

0 -10.000000 -20.000000
0 1 -Inf -Inf

NaN NaN >>

2.

Doolitle
clc, clear all
a=[18 20 24;4 4 3;5 4 6];%matriz de coeficientes
b=[26400;4900;6200];
ab=[a,b];%matriz aumentada
n=3;
u=zeros(3);
syms l21 l31 l32 u11 u12 u13 u22 u23 u33 c1 c2 c3 x1 x2 x3
l=[1 0 0;l21 1 0;l31 l32 1];
u=[u11 u12 u13;0 u22 u23;0 0 u33];
lu=l*u
for i=1:3
for j=1:n
fprintf('%2.2f=',a(i,j)), disp(lu(i,j))
end
end
u(1,1)=a(1,1); u(1,2)=a(1,2); u(1,3)=a(1,3);
l(2,1)=a(2,1)/u(1,1); u(2,2)=a(2,2)-l(2,1)*u(1,2);
u(2,3)=a(2,3)-l(2,1)*u(1,3);
l(3,1)=a(3,1)/u(1,1);
l(3,2)=(a(3,2)-l(3,1)*u(1,2))/u(2,2);
u(3,3)=(a(3,3)-l(3,1)*u(1,3)-l(3,2)*u(2,3));
C=[c1;c2;c3];
x=[x1;x2;x3];
lc=l*C;
fprintf('%5s\t','');disp('haciendo L*C=B, obtenemos:')
fprintf('%5s\t','');disp('==========================================')
for i=1:n
fprintf('%2.3f=',b(i)), disp(lc(i))
end
fprintf('%5s\t','');disp('Resolviendo las tres ecuaciones obtenemos:')
fprintf('%5s\t','');disp('==========================================')
fprintf('\n')
c1=b(1,1);
c2=(b(2,1)-l(2,1)*c1);
c3=b(3,1)-l(3,1)*c1-l(3,2)*c2;
c=[c1;c2;c3];
fprintf('c1='), disp(c(1,1)), fprintf('\n')
fprintf('c2='), disp(c(2,1)), fprintf('\n')
fprintf('c3='), disp(c(3,1)), fprintf('\n')
ux=u*x;
fprintf('%5s\t','');disp('haciendo U*X=c, y resolviendo obtenemos:')
fprintf('%5s\t','');disp('==========================================:')
fprintf('\n')
x3=c(3)/u(3,3)
x2=(c(2)-u(2,3)*x3)/u(2,2)
x1=(c(1)-u(1,2)*x2-u(1,3)*x3)/u(1,1)

u=

[ u11, u12, u13]

[ l21*u11, u22 + l21*u12, u23 + l21*u13]

[ l31*u11, l31*u12 + l32*u22, u33 + l31*u13 + l32*u23]

18.00=u11

20.00=u12

24.00=u13

4.00=l21*u11

4.00=u22 + l21*u12
3.00=u23 + l21*u13

5.00=l31*u11

4.00=l31*u12 + l32*u22

6.00=u33 + l31*u13 + l32*u23

haciendo L*C=B, obtenemos:

==========================================

26400.000=c1

4900.000=(2*c1)/9 + c2

6200.000=(5*c1)/18 + (7*c2)/2 + c3

Resolviendo las tres ecuaciones obtenemos:

==========================================

c1=26400

c2=-2900/3

c3=2250

haciendo U*X=c, y resolviendo obtenemos:

==========================================:
x3 =

300

x2 =

600

x1 =

400

>>

También podría gustarte