Está en la página 1de 18

PARCIAL FINAL DE METODOS NUMERICOS

NEWTON RAPHSON-BROYDEN Y HOMOTOPIA DIFERENCIAL

VALMER JOSE PERALTA MERCADO


LUIS EDUARDO ACEVEDO CASTILLA

PROF:
MIGUEL ANGEL MUESES

CARTAGENA DE INDIAS DISTRITO TURISTICO Y CAPITAL


28 DE MAYO DEL 2014

V = 0.335337996022187
L = 0.664662003977813
Ee =

2.200069979204363e-03

nie1 = 0.500220006997920
nie2 = 0.500220006997920
nie3 =

2.200069979204363e-04

nie4 =

2.200069979204363e-04

Grafica de Tvsyx

Error global y norma vs iteraciones

Algoritmo
1. Inicio
2. Plantear la funcin objetivo (FO)
(

Para esta funcin objetivo cada una de las concentraciones calculadas estn representadas por

Las

se calcularon mediante la ecuacin

Y a su vez

se calcul con la ecuacin de antoine.

3. Establecemos como parmetros ajustable a L y


4. Derivamos numricamente FO con respecto a cada parmetro

5. Planteamos un sistema de ecuaciones de 2x2 para cada yi


6. A este sistema se le aplica homotopia diferencial
7. Para esto establecemos un vector inicial X0=( L0, 0) y una tolerancia
8. Se establece tambin nmero de particiones para hallar el tamao de paso

mediante la ecuacin

9. Se vuelve a derivar nuestro sistema de ecuaciones con respecto a los parmetros


ajustables
10. Se la matriz jacobiana que va estar compuesta por la derivadas del paso anterior la cual se
va a resolver mediante GJPPRC
[
[

11. Al resolver el jacobiano se tiene que

Sistema de ecuaciones diferenciales

12. Una vez obtenidos los valores de ge y gL se aplica RK4 con los valores de gi,, como se
muestra a continuacin:

13. Una vez calculado los parmetros se calcula los errores de cada parmetro se selecciona
el mayor y se compara con la tolerancia si es mayor ir al paso siguiente sino volver al
paso.
14. Fin
Cdigo computacional
close all
format long
clc
%valores reemplazados
T=[348 349 350 351 352 353 354 355 356];
%T=T1-273.15;
y1=[0.1549 0.1400 0.1279 0.1176 0.1085 0.1003 0.0927
y2=[0.0253 0.0302 0.0351 0.0402 0.0540 0.0509 0.0567
y3=[0.5619 0.5489 0.5348 0.5198 0.5043 0.4882 0.4716
y4=[0.2579 0.2809 0.3022 0.3224 0.3418 0.3606 0.3790
v1=1; v2=1; v3=1; v4=1;
%ecuacion de antoine
%Etanol
A1=5.33675; B1=1648.22; C1=230.918;
%acido acetico
A2=4.54456; B2=1555.12; C2=224.65;
%acetato de etilo
A3=4.13361; B3=1195.13; C3=212.47;
%agua
A4=5.11564; B4=1687.537; C4=230.17;
%valores iniciales
L=0.75;%input('valor inicial L: ');%0.9;
Ee=0.000220004;%input('valor inicial Ee: ');%0.05;
hL=abs(L)*1e-7;hEe=abs(Ee)*1e-7;
for i=1:9

0.0855
0.0629
0.4546
0.3970

0.0787];
0.0696];
0.4372];
0.4145];

P1sat(i)=exp(A1-B1/(T(i)+C1)); P1sat(i)=P1sat(i)*100000;
P2sat(i)=exp(A2-B2/(T(i)+C2)); P2sat(i)=P2sat(i)*100000;
P3sat(i)=exp(A3-B3/(T(i)+C3)); P3sat(i)=P3sat(i)*100000;
P4sat(i)=exp(A4-B4/(T(i)+C4)); P4sat(i)=P3sat(i)*100000;
%calculo de xi
P=101325;
x1(i)=(P*y1(i))/P1sat(i);
x2(i)=(P*y2(i))/P2sat(i);
x3(i)=(P*y3(i))/P3sat(i);
x4(i)=1-x3(i)-x2(i)-x1(i);%x4(i)=(P/(P4sat(i)*100000))*y4(i);
k1(i)=y1(i)./x1(i);
k2(i)=y2(i)./x2(i);
k3(i)=y3(i)./x3(i);
k4(i)=y4(i)./x4(i);
end
%Funcion Objetivo
for i=1:9
%Derivadas con respecto a L
FOLy1(i)=sum(((y1(i)-(k1(i)*((0.5-Ee)/((L+hL)+(k1(i)*(1(L+hL)))))))^2-((y1(i)-(k1(i)*((0.5-Ee)/(L+(k1(i)*(1-L))))))^2))/hL);
FOLy2(i)=sum(((y2(i)-(k2(i)*((0.5-Ee)/((L+hL)+(k2(i)*(1(L+hL)))))))^2-((y2(i)-(k2(i)*((0.5-Ee)/(L+(k2(i)*(1-L))))))^2))/hL);
FOLy3(i)=sum(((y3(i)-(k3(i)*((-Ee)/((L+hL)+(k3(i)*(1-(L+hL)))))))^2((y3(i)-(k3(i)*((-Ee)/(L+(k3(i)*(1-L))))))^2))/hL);
FOLy4(i)=sum(((y4(i)-(k4(i)*((-Ee)/((L+hL)+(k4(i)*(1-(L+hL)))))))^2((y4(i)-(k4(i)*((-Ee)/(L+(k4(i)*(1-L))))))^2))/hL);
%Derivadas con respecto a Ee
FOEey1(i)=sum(((y1(i)-(k1(i)*((0.5-(Ee+hEe))/(L+(k1(i)*(1-L))))))^2((y1(i)-(k1(i)*((0.5-Ee)/(L+(k1(i)*(1-L))))))^2))/hEe);
FOEey2(i)=sum(((y2(i)-(k2(i)*((0.5-(Ee+hEe))/(L+(k2(i)*(1-L))))))^2((y1(i)-(k2(i)*((0.5-Ee)/(L+(k2(i)*(1-L))))))^2))/hEe);
FOEey3(i)=sum(((y3(i)-(k3(i)*((-(Ee+hEe))/(L+(k3(i)*(1-L))))))^2((y3(i)-(k3(i)*((-Ee)/(L+(k3(i)*(1-L))))))^2))/hEe);
FOEey4(i)=sum(((y4(i)-(k4(i)*((-(Ee+hEe))/(L+(k4(i)*(1-L))))))^2((y4(i)-(k4(i)*((-Ee)/(L+(k4(i)*(1-L))))))^2))/hEe);
end
F1=sum(FOLy1+FOLy2+FOLy3+FOLy4);
F2=sum(FOEey1+FOEey2+FOEey3+FOEey4);
%tolerancia
tol=1e-5;
errorL=1;
errorEe=1;
errorglobal=1;
it=1;
pp1=0;
pp=1500;
while (errorglobal>tol) & (pp1<pp)
for i=1:9
dFOLy1L(i)=sum((((y1(i)-(k1(i)*((0.5-Ee)/((L+2*hL)+(k1(i)*(1(L+2*hL)))))))^2-((y1(i)-(k1(i)*((0.5-Ee)/((L+hL)+(k1(i)*(1(L+hL)))))))^2))/hL-FOLy1(i))/hL);
dFOLy2L(i)=sum((((y2(i)-(k2(i)*((0.5-Ee)/((L+2*hL)+(k2(i)*(1(L+2*hL)))))))^2-((y2(i)-(k2(i)*((0.5-Ee)/((L+hL)+(k2(i)*(1(L+hL)))))))^2))/hL-FOLy2(i))/hL);

dFOLy3L(i)=sum((((y3(i)-(k3(i)*((-Ee)/((L+2*hL)+(k3(i)*(1(L+2*hL)))))))^2-((y3(i)-(k3(i)*((-Ee)/((L+hL)+(k3(i)*(1(L+hL)))))))^2))/hL-FOLy3(i))/hL);
dFOLy4L(i)=sum((((y4(i)-(k4(i)*((-Ee)/((L+2*hL)+(k4(i)*(1(L+2*hL)))))))^2-((y4(i)-(k4(i)*((-Ee)/((L+hL)+(k4(i)*(1(L+hL)))))))^2))/hL-FOLy4(i))/hL);
dFOLy1Ee(i)=sum((((y1(i)-(k1(i)*((0.5(Ee+hEe))/((L+hL)+(k1(i)*(1-(L+hL)))))))^2-((y1(i)-(k1(i)*((0.5Ee)/((L+hL)+(k1(i)*(1-(L+hL)))))))^2))/hEe-FOEey1(i))/hL);
dFOLy2Ee(i)=sum((((y2(i)-(k2(i)*((0.5(Ee+hEe))/((L+hL)+(k2(i)*(1-(L+hL)))))))^2-((y1(i)-(k2(i)*((0.5Ee)/((L+hL)+(k2(i)*(1-(L+hL)))))))^2))/hEe-FOEey2(i))/hL);
dFOLy3Ee(i)=sum((((y3(i)-(k3(i)*((-(Ee+hEe))/((L+hL)+(k3(i)*(1(L+hL)))))))^2-((y3(i)-(k3(i)*((-Ee)/((L+hL)+(k3(i)*(1(L+hL)))))))^2))/hEe-FOEey3(i))/hL);
dFOLy4Ee(i)=sum((((y4(i)-(k4(i)*((-(Ee+hEe))/((L+hL)+(k4(i)*(1(L+hL)))))))^2-((y4(i)-(k4(i)*((-Ee)/((L+hL)+(k4(i)*(1(L+hL)))))))^2))/hEe-FOEey4(i))/hL);
dFOEey1L(i)=dFOLy1Ee(i);
dFOEey2L(i)=dFOLy2Ee(i);
dFOEey3L(i)=dFOLy3Ee(i);
dFOEey4L(i)=dFOLy4Ee(i);
dFOEey1Ee(i)=sum((((y1(i)-(k1(i)*((0.5(Ee+2*hEe))/(L+(k1(i)*(1-L))))))^2-((y1(i)-(k1(i)*((0.5(Ee+hEe))/(L+(k1(i)*(1-L))))))^2))/hEe-FOEey1(i))/hEe);
dFOEey2Ee(i)=sum((((y2(i)-(k2(i)*((0.5-(Ee+2*hEe))/(L+(k2(i)*(1L))))))^2-((y1(i)-(k2(i)*((0.5-(Ee+hEe))/(L+(k2(i)*(1-L))))))^2))/hEeFOEey2(i))/hEe);
dFOEey3Ee(i)=sum((((y3(i)-(k3(i)*((-(Ee+2*hEe))/(L+(k3(i)*(1L))))))^2-((y3(i)-(k3(i)*((-(Ee+hEe))/(L+(k3(i)*(1-L))))))^2))/hEeFOEey3(i))/hEe);
dFOEey4Ee(i)=sum((((y4(i)-(k4(i)*((-(Ee+2*hEe))/(L+(k4(i)*(1L))))))^2-((y4(i)-(k4(i)*((-(Ee+hEe))/(L+(k4(i)*(1-L))))))^2))/hEeFOEey3(i))/hEe);
end
F11=sum(dFOLy1L+dFOLy2L+dFOLy3L+dFOLy4L);
F12=sum(dFOLy1Ee+dFOLy2Ee+dFOLy3Ee+dFOLy4Ee);
F21=sum(dFOEey1L+dFOEey2L+dFOEey3L+dFOEey4L);
F22=sum(dFOEey1Ee+dFOEey2Ee+dFOEey3Ee+dFOEey4Ee);
J=[F11 F12; F21 F22];
Fo=[-F1; -F2];
%Aplicando Gauss Jordan
M=[J Fo];
i=2;
j=3;
% Nmero mayor por filas
for m=1:1:i
R(m) = 0 ;
for n=1:1:i
if abs(M(m,n))>0
if abs(M(m,n))>R(m)
R(m) = abs(M(m,n));
end
end
end
end
% Matriz auxiliar para cambiar filas
for m=1:1:i
Aux=0;

for n=m:1:i
if abs(M(n,m))/R(n)>Aux
columnamayor=n;
Aux=abs(M(n,m));
end
end
for r=m:1:j
Auxi=M(m,r);
M(m,r)=M(columnamayor,r);
M(columnamayor,r)=Auxi;
end
for w=m+1:1:i
Auxiliar=M(w,m)/M(m,m);
for q=m:1:j
if (M(m,m) < 0 && Auxiliar< 0) || (M(m,m) > 0 && Auxiliar> 0)
M(w,q)=M(w,q)-Auxiliar*M(m,q);
else
M(w,q)=M(w,q)-Auxiliar*M(m,q);
end
end
end
end
SOLUCIONES(i)=M(i,j)/M(i,i);
% Acumulador
for y=i-1:-1:1;
sumatoria=0;
for l=y+1:1:i
sumatoria= sumatoria+M(y,l)*SOLUCIONES(l);
end
SOLUCIONES(y)=(M(y,j)- sumatoria)/M(y,y);
end
deltaL=SOLUCIONES(1);
deltaEe=SOLUCIONES(2);
Lc=L+deltaL;
Eec=Ee+deltaEe;
hLc=abs(Lc)*1e-7;
hEec=abs(Eec)*1e-7;
%------------------------------------------------------------------------for i=1:9
%Derivadas con respecto a L
FOLy1c(i)=sum(((y1(i)-(k1(i)*((0.5-Eec)/((Lc+hLc)+(k1(i)*(1(Lc+hLc)))))))^2-((y1(i)-(k1(i)*((0.5-Eec)/(Lc+(k1(i)*(1Lc))))))^2))/hLc);
FOLy2c(i)=sum(((y2(i)-(k2(i)*((0.5-Eec)/((Lc+hLc)+(k2(i)*(1(Lc+hLc)))))))^2-((y2(i)-(k2(i)*((0.5-Eec)/(Lc+(k2(i)*(1Lc))))))^2))/hLc);
FOLy3c(i)=sum(((y3(i)-(k3(i)*((-Eec)/((Lc+hLc)+(k3(i)*(1(Lc+hLc)))))))^2-((y3(i)-(k3(i)*((-Eec)/(Lc+(k3(i)*(1-Lc))))))^2))/hLc);
FOLy4c(i)=sum(((y4(i)-(k4(i)*((-Eec)/((Lc+hLc)+(k4(i)*(1(Lc+hLc)))))))^2-((y4(i)-(k4(i)*((-Eec)/(Lc+(k4(i)*(1-Lc))))))^2))/hLc);

%Derivadas con respecto a Ee


FOEey1c(i)=sum(((y1(i)-(k1(i)*((0.5-(Eec+hEec))/(Lc+(k1(i)*(1Lc))))))^2-((y1(i)-(k1(i)*((0.5-Eec)/(Lc+(k1(i)*(1-Lc))))))^2))/hEec);
FOEey2c(i)=sum(((y2(i)-(k2(i)*((0.5-(Eec+hEec))/(Lc+(k2(i)*(1Lc))))))^2-((y1(i)-(k2(i)*((0.5-Eec)/(Lc+(k2(i)*(1-Lc))))))^2))/hEec);
FOEey3c(i)=sum(((y3(i)-(k3(i)*((-(Eec+hEec))/(Lc+(k3(i)*(1Lc))))))^2-((y3(i)-(k3(i)*((-Eec)/(Lc+(k3(i)*(1-Lc))))))^2))/hEec);
FOEey4c(i)=sum(((y4(i)-(k4(i)*((-(Eec+hEec))/(Lc+(k4(i)*(1Lc))))))^2-((y4(i)-(k4(i)*((-Eec)/(Lc+(k4(i)*(1-Lc))))))^2))/hEec);
end
F1c=sum(FOLy1c+FOLy2c+FOLy3c+FOLy4c);
F2c=sum(FOEey1c+FOEey2c+FOEey3c+FOEey4c);
nabla(it)=(F1c.^2+F2c.^2)/(F1.^2+F2.^2);
norma1(it)=sqrt(F1c.^2+F2c.^2);
norma0(it)=sqrt(F1.^2+F2.^2);
if(nabla(it)>1)
sk=(sqrt(1+(6*nabla(it)))-1)/(3*nabla(it));
Lc=L+(sk*deltaL);
Eec=Ee+(sk*deltaEe);
%------------------------------------------------------------------------%calculo del error total
errorL(it)=abs((Lc-L)/Lc);
errorEe(it)=abs((Eec-Ee)/Eec);
if errorL(it) > errorEe(it)
errorglobal(it)=errorL(it);
else
errorglobal(it)=errorEe(it);
end
L=Lc;
Ee=Eec;
else
Lc=L+deltaL;
Eec=Ee+deltaEe;
errorL(it)=abs((Lc-L)/Lc);
errorEe(it)=abs((Eec-Ee)/Ee);
if errorL(it) > errorEe(it)
errorglobal(it)=errorL(it);
else
errorglobal(it)=errorEe(it);
end
L=Lc;
Ee=Eec;
end
it=it+1;
pp1=pp1+1;

end
L
V=1-L
Ee
nie1=0.5+v1*Ee
nie2=0.5+v2*Ee
nie3=v3*Ee
nie4=v4*Ee

k=1;
for i=1:9
y1c(i)=(k1(i)*(0.5-Ee))/(L+(k1(i)*(1-L)));
k=k+1;
end
for i=1:9
y2c(i)=(k2(i)*(0.5-Ee))/(L+(k2(i)*(1-L)));
end
for i=1:9
y3c(i)=(k3(i)*(-Ee))/(L+(k3(i)*(1-L)));
end
for i=1:9
y4c(i)=(k4(i)*(-Ee))/(L+(k4(i)*(1-L)));
end
subplot(1,2,1)
z=0:it-2;
plot(z,errorglobal)
title('Error Global vs No. Iteraciones')
grid on
xlabel('No. Iteraciones')
ylabel('Error Global')
subplot(1,2,2)
plot(z,norma1,'.-')
grid on
title('Norma vs No. Iteraciones')
xlabel('No. Iteraciones')
ylabel('Norma')
%subplot(2,2,3)
%plot(N,hcc1,'o-',N,hc,'.-')
%plot(y1c,y1,'o')
%plot(y4,T,'o-',x4,T,'o-')
%grid on

Pantallazos

HOMOTOPIA DIFERENCIAL
Parmetros obtenidos por homotopia
V = 0.332455253323327
L = 0.667545456781213
Ee =

2.200069979204363e-03

nie1 = 0.500220006997920
nie2 = 0.500220006997920
nie3 =

2.200069979204363e-04

nie4 =

2.200069979204363e-04

programa para solucion de ecuaciones no lineales mediante


% el Metodo de CONTINUACION Y HOMOTOPIA
clc,clear all, close all
% ==================================================================
% PASO 1: CAMBIAR LA FUNCIOANES EN EL ARCHIVO [f1,f2,f3]=F(x1,x2,x3)
% ==================================================================
% PASO 2: CAMBIAR EL JACOBIANO EN EL ARCHIVO J=Jaco(x1,x2,x3)
% ==================================================================
% PASO 3: SE REALIZA LA DIVISION DEL INTERVALO [0 1]
N=input('Entre el numero de divisiones del intervalo de lambda: ');
h=(1-0)./N;
% PASO 4: SE INCIA EL CALCULO DE LAS ECAUCIONES DIFERENCIALES

% ==================================================================
% Condiciones iniciales para F(0) y el jacobiano J(0)
X=[0,0,0];
for j=1:N
k1=h.*inv(-jaco(X))*F(X)';
k2=h.*inv(-jaco(X+0.5.*k1'))*F(X)';
k3=h.*inv(-jaco(X+(1./2).*k2'))*F(X)';
k4=h.*inv(-jaco(X+k3'))*F(X)';
X=X+(1/2).*(k1'+2.*k2'+2.*k3'+k4');
end
disp('la respuesta es :')
disp(X)
function J=jaco(X)
% este programa evalua el jacobiano en las coordenadas (x1,x2,x3)
% sinh embargo se debe introducier las funciones ya derivadas
J=[3,X(3).*sin(X(2).*X(3)),X(2).*sin(X(2).*X(3));...
2.*X(1),-162.*(X(2)+0.1), cos(X(3)); ...
-X(2).*exp(-X(1).*X(2)), -X(1).*exp(-X(1).*X(2)),20];
function w=F(X)
% Es un sistema de tres funciones f1,f2 y f3, todas ella
% de variable independientes x1,x2, x3
f1=3.*X(1)-cos(X(2).*X(3))-0.5;
f2=X(1).^2-81.*(X(2)+0.1).^2+sin(X(3))+1.06;
f3=exp(-X(1).*X(2))+20.*X(3)+(10.*pi-3)./3;
w=[f1,f2,f3];

Y1exp vs Y1 cal
Y1calculado

0,2
0,15
0,1
0,05
0
0

0,05

0,1
Y1experimental

0,15

0,2

Y2calculado

Y2exp vs Y2cal
0,08
0,07
0,06
0,05
0,04
0,03
0,02
0,01
0
0

0,02

0,04

0,06

0,08

Y2experimental

Y3exp vs Y3cal
0,6

Ycalculado

0,5
0,4
0,3
0,2
0,1
0
0

0,1

0,2

0,3

0,4

0,5

0,6

Yexperimental

Y4exp vs Y4cal
0,6

Y4calculado

0,5
0,4
0,3
0,2
0,1
0
0

0,1

0,2

0,3

Y4experimental

0,4

0,5

Temp vs Y1exp,Y1cal
Y1exp,Y1calc

0,2
0,15
0,1
0,05
0
346

348

350

352

354

356

358

356

358

Temperatura (K)

Temp vs Y2exp,Y2cal
0,08

Ttulo del eje

0,07
0,06
0,05
0,04
0,03
0,02
0,01
0
346

348

350

352

354

Ttulo del eje

Temp vs Y3exp,Y3cal
0,6
Ttulo del eje

0,5
0,4
0,3
0,2
0,1
0
346

348

350

352
Ttulo del eje

354

356

358

Temp vs Y4exp,Y4cal
0,6

Ttulo del eje

0,5
0,4
0,3
0,2
0,1
0
346

348

350

352
Ttulo del eje

Parmetros obtenidos por homotopia


V = 0.332455253323327
L = 0.667545456781213
Ee =

2.200069979204363e-03

nie1 = 0.500220006997920
nie2 = 0.500220006997920
nie3 =

2.200069979204363e-04

nie4 =

2.200069979204363e-04

Parmetros obtenidos por NRB


V = 0.328337996022187
L = 0.664662003977813
Ee =

2.200069979204363e-03

nie1 = 0.50002311123920
nie2 = 0.50002311123920
nie3 =

2.200069979204363e-04

nie4 =

2.200069979204363e-04

354

356

358

La diferencia entre ambos mtodos no fue mucha pero se pudo observar que el mtodo de
homotopico es mas efectivo que el NR y es mas preciso. En cuanto a convergencia tambin fue
mejor y su adaptacin al problema nos fue menos compleja.

También podría gustarte