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')