Anda di halaman 1dari 6

%Ejemplo 2 inciso b resolucin por newton raphson%

%HECHO POR EDGAR ALBERTO GONZLEZ REYES%


disp('SIMULACIN PROBLEMA 2')
format short;
%Datos Constantes%
T0=32;
T1=75;
T4=120;
CpA=31;
CpB=18;
A1=50;
B1=150;
A4=30;
B4=15;
HA1=CpA*(T1-T0);
HB1=CpB*(T1-T0);
HA4=CpA*(T4-T0);
HB4=CpB*(T4-T0);
%Valor propuesto de cada variable%
A2=input('Inserte valor propuesto para A2: ');
B2=input('Inserte valor propuesto para B2: ');
A5=input('Inserte valor propuesto para A5: ');
B5=input('Inserte valor propuesto para B5: ');
A7=input('Inserte valor propuesto para A7: ');
B7=input('Inserte valor propuesto para B7: ');
T2=input('Inserte valor propuesto para T2: ');
T5=input('Inserte valor propuesto para T5: ');
T7=input('Inserte valor propuesto para T7: ');
% "n" es un conteo de cada iteracin"
n=0;
%Funciones para las variables a evaluar%
F1=A1-A2+A7;
F2=B1-B2+B7;
F3=0.6*A2+0.6*A4-A7;
F4=0.6*B2+0.6*B4-B7;
F5=0.4*A2+0.4*A4-A5;
F6=0.4*B2+0.4*B4-B5;
F7=(A1*HA1+B1*HB1)+((T7-T0)*(CpA*A7+CpB*B7))-((T2-T0)*(CpA*A2+CpB*B2));
F8=T7-T5;
F9=(0.6*(T2-T0)*(CpA*A2+CpB*B2))+(0.6*(A4*HA4+B4*HB4))-((T7-
T0)*(CpA*A7+CpB*B7));
%Derivadas para las variables a evaluar%
DF1DA7=-2/3;
DF2DA7=0;
DF3DA7=-1;
DF4DA7=0;
DF5DA7=0;
DF6DA7=0;
DF7DA7=CpA*(T7-T0);
DF8DA7=0;
DF9DA7=-CpA*(T7-T0);
DF1DB7=0;
DF2DB7=-2/3;
DF3DB7=0;
DF4DB7=-1;
DF5DB7=0;
DF6DB7=0;
DF7DB7=CpB*(T7-T0);
DF8DB7=0;
DF9DB7=-CpB*(T7-T0);
DF1DA2=-1;
DF2DA2=0;
DF3DA2=0.6;
DF4DA2=0;
DF5DA2=0.4;
DF6DA2=0;
DF7DA2=-CpA*(T2-T0);
DF8DA2=0;
DF9DA2=0.6*CpA*(T2-T0);
DF1DB2=0;
DF2DB2=-1;
DF3DB2=0;
DF4DB2=0.6;
DF5DB2=0;
DF6DB2=0.4;
DF7DB2=-CpB*(T2-T0);
DF8DB2=0;
DF9DB2=0.6*CpB*(T2-T0);
DF1DA5=0;
DF2DA5=0;
DF3DA5=0;
DF4DA5=0;
DF5DA5=-1;
DF6DA5=0;
DF7DA5=0;
DF8DA5=0;
DF9DA5=0;
DF1DB5=0;
DF2DB5=0;
DF3DB5=0;
DF4DB5=0;
DF5DB5=0;
DF6DB5=-1;
DF7DB5=0;
DF8DB5=0;
DF9DB5=0;
DF1DT2=0;
DF2DT2=0;
DF3DT2=0;
DF4DT2=0;
DF5DT2=0;
DF6DT2=0;
DF7DT2=-(CpA*A2+CpB*B2);
DF8DT2=0;
DF9DT2=0.6*(CpA*A2+CpB*B2);
DF1DT5=0;
DF2DT5=0;
DF3DT5=0;
DF4DT5=0;
DF5DT5=0;
DF6DT5=0;
DF7DT5=0;
DF8DT5=-1;
DF9DT5=0;
DF1DT7=0;
DF2DT7=0;
DF3DT7=0;
DF4DT7=0;
DF5DT7=0;
DF6DT7=0;
DF7DT7=CpA*A7+CpB*B7;
DF8DT7=-1;
DF9DT7=-(CpA*A7+CpB*B7);
%Matrz de derivadas%
J=[DF1DA7 DF1DB7 DF1DA2 DF1DB2 DF1DA5 DF1DB5 DF1DT2 DF1DT5 DF1DT7;DF2DA7
DF2DB7 DF2DA2 DF2DB2 DF2DA5 DF2DB5 DF2DT2 DF2DT5 DF2DT7;DF3DA7 DF3DB7
DF3DA2 DF3DB2 DF3DA5 DF3DB5 DF3DT2 DF3DT5 DF3DT7;DF4DA7 DF4DB7 DF4DA2
DF4DB2 DF4DA5 DF4DB5 DF4DT2 DF4DT5 DF4DT7;DF5DA7 DF5DB7 DF5DA2 DF5DB2
DF5DA5 DF5DB5 DF5DT2 DF5DT5 DF5DT7;DF6DA7 DF6DB7 DF6DA2 DF6DB2 DF6DA5
DF6DB5 DF6DT2 DF6DT5 DF6DT7;DF7DA7 DF7DB7 DF7DA2 DF7DB2 DF7DA5 DF7DB5
DF7DT2 DF7DT5 DF7DT7;DF8DA7 DF8DB7 DF8DA2 DF8DB2 DF8DA5 DF8DB5 DF8DT2
DF8DT5 DF8DT7;DF9DA7 DF9DB7 DF9DA2 DF9DB2 DF9DA5 DF9DB5 DF9DT2 DF9DT5
DF9DT7];
%Matrz inversa%
Jinv=inv(J);
%Matrz de funciones ya con varibles evaluadas%
F=[F1;F2;F3;F4;F5;F6;F7;F8;F9];
%Multiplicacin de la matrz inversa con la matrz de funciones%
H=Jinv*F;
%Matriz de variables propuestas%
V=[A7;B7;A2;B2;A5;B5;T2;T5;T7;];
%Matrz respuesta%
R=V-H;
%Calculo del error absoluto para una iteracin con menos cantidad de%
%aproximacin%
error=abs(V-R);
%Imprimir en pantalla los nuevos valores de las variables obtenidos de la
%matrz respuesta%
A7=R(1);
B7=R(2);
A2=R(3);
B2=R(4);
A5=R(5);
B5=R(6);
T2=R(7);
T5=R(8);
T7=R(9);
%Comando "while" significa "siempre que" por lo que le ordeno a matlab,
%siempre que matrz respuesta sea desigual "~=" a matrz de variables
%propuestas la iteracin continuar'
while R~=V
%mismo conjunto de datos que los que se encuentran en la parte
%superior, pero esta vez se usan para darle a conocer a matlab
que
%ar cuando comienze a iterar%
n=n+1;
F1=A1-A2+A7;
F2=B1-B2+B7;
F3=0.6*A2+0.6*A4-A7;
F4=0.6*B2+0.6*B4-B7;
F5=0.4*A2+0.4*A4-A5;
F6=0.4*B2+0.4*B4-B5;
F7=(A1*HA1+B1*HB1)+((T7-T0)*(CpA*A7+CpB*B7))-((T2-
T0)*(CpA*A2+CpB*B2));
F8=T7-T5;
F9=(0.6*(T2-T0)*(CpA*A2+CpB*B2))+(0.6*(A4*HA4+B4*HB4))-((T7-
T0)*(CpA*A7+CpB*B7));
DF1DA7=-2/3;
DF2DA7=0;
DF3DA7=-1;
DF4DA7=0;
DF5DA7=0;
DF6DA7=0;
DF7DA7=CpA*(T7-T0);
DF8DA7=0;
DF9DA7=-CpA*(T7-T0);
DF1DB7=0;
DF2DB7=-2/3;
DF3DB7=0;
DF4DB7=-1;
DF5DB7=0;
DF6DB7=0;
DF7DB7=CpB*(T7-T0);
DF8DB7=0;
DF9DB7=-CpB*(T7-T0);
DF1DA2=-1;
DF2DA2=0;
DF3DA2=0.6;
DF4DA2=0;
DF5DA2=0.4;
DF6DA2=0;
DF7DA2=-CpA*(T2-T0);
DF8DA2=0;
DF9DA2=0.6*CpA*(T2-T0);
DF1DB2=0;
DF2DB2=-1;
DF3DB2=0;
DF4DB2=0.6;
DF5DB2=0;
DF6DB2=0.4;
DF7DB2=-CpB*(T2-T0);
DF8DB2=0;
DF9DB2=0.6*CpB*(T2-T0);
DF1DA5=0;
DF2DA5=0;
DF3DA5=0;
DF4DA5=0;
DF5DA5=-1;
DF6DA5=0;
DF7DA5=0;
DF8DA5=0;
DF9DA5=0;
DF1DB5=0;
DF2DB5=0;
DF3DB5=0;
DF4DB5=0;
DF5DB5=0;
DF6DB5=-1;
DF7DB5=0;
DF8DB5=0;
DF9DB5=0;
DF1DT2=0;
DF2DT2=0;
DF3DT2=0;
DF4DT2=0;
DF5DT2=0;
DF6DT2=0;
DF7DT2=-(CpA*A2+CpB*B2);
DF8DT2=0;
DF9DT2=0.6*(CpA*A2+CpB*B2);
DF1DT5=0;
DF2DT5=0;
DF3DT5=0;
DF4DT5=0;
DF5DT5=0;
DF6DT5=0;
DF7DT5=0;
DF8DT5=-1;
DF9DT5=0;
DF1DT7=0;
DF2DT7=0;
DF3DT7=0;
DF4DT7=0;
DF5DT7=0;
DF6DT7=0;
DF7DT7=CpA*A7+CpB*B7;
DF8DT7=-1;
DF9DT7=-(CpA*A7+CpB*B7);
J=[DF1DA7 DF1DB7 DF1DA2 DF1DB2 DF1DA5 DF1DB5 DF1DT2 DF1DT5 DF1DT7;DF2DA7
DF2DB7 DF2DA2 DF2DB2 DF2DA5 DF2DB5 DF2DT2 DF2DT5 DF2DT7;DF3DA7 DF3DB7
DF3DA2 DF3DB2 DF3DA5 DF3DB5 DF3DT2 DF3DT5 DF3DT7;DF4DA7 DF4DB7 DF4DA2
DF4DB2 DF4DA5 DF4DB5 DF4DT2 DF4DT5 DF4DT7;DF5DA7 DF5DB7 DF5DA2 DF5DB2
DF5DA5 DF5DB5 DF5DT2 DF5DT5 DF5DT7;DF6DA7 DF6DB7 DF6DA2 DF6DB2 DF6DA5
DF6DB5 DF6DT2 DF6DT5 DF6DT7;DF7DA7 DF7DB7 DF7DA2 DF7DB2 DF7DA5 DF7DB5
DF7DT2 DF7DT5 DF7DT7;DF8DA7 DF8DB7 DF8DA2 DF8DB2 DF8DA5 DF8DB5 DF8DT2
DF8DT5 DF8DT7;DF9DA7 DF9DB7 DF9DA2 DF9DB2 DF9DA5 DF9DB5 DF9DT2 DF9DT5
DF9DT7];
Jinv=inv(J);
F=[F1;F2;F3;F4;F5;F6;F7;F8;F9];
H=Jinv*F;
V=[A7;B7;A2;B2;A5;B5;T2;T5;T7;];
R=V-H;
error=abs(V-R);
A7=R(1);
B7=R(2);
A2=R(3);
B2=R(4);
A5=R(5);
B5=R(6);
T2=R(7);
T5=R(8);
T7=R(9);
%if es el comando "s", si el error absoluto en cada valor que obtenga de
%variable es menor a 0.0001, las iteracines terminan y se da de
respuesta
%la ultima iteracin realizada, este valor puede ser sustituido mientras
%menor sea el valor decimal mas precision, pero si se requiere la
precision
%maxima dada por matlab, solo borre la propuesta
%"error<[0.0001;0.0001;0.0001;0.0001;0.0001;0.0001;0.0001;0.0001;0.0001]"
%para sustituirla por "R==V" y dar la aproximacin a 32 decimales, la
%maxima para matlab.
if
error<[0.0001;0.0001;0.0001;0.0001;0.0001;0.0001;0.0001;0.0001;0.0001]
%Aqui le ordeno a matlab que cuando se cumpla el comando de
"if"
%me imprima en pantalla cada la ultima iteracin realizada y
que
%en ese momento deje de iterar.
disp('Iteracines totales:')
disp(n)
error
F
Jinv
V
R
A7=R(1)
B7=R(2)
A2=R(3)
B2=R(4)
A5=R(5)
B5=R(6)
T2=R(7)
T5=R(8)
T7=R(9)
break
end
end
disp('Resultados obtenidos')