Vous êtes sur la page 1sur 16

PRACTICA MATLAB

Estudiantes: Valeria Cossio Bethsy Pinedo Materia: Mtodos Numricos Docente: Dr. Hugo Rojas

SISTEMA DE ECUACIONES LINEALES 1. Enunciado del problema 12. Resuelva el problema 10 para el caso en el que los caudales son Q03=10, Q15=3, Q12=4, Q31=2, Q25=3, Q23=1, Q55=4, Q54=2, Q24=0, Q34=9 y Q44=11

2. Solucin del problema 2.1 Mtodo Directo Ecuaciones del mtodo directo a utilizar para escribir el cdigo en Matlab

Para 5, 7 y 9. Las matrices que se introducirn en matlab sern A=[7 0 -2 0 0;4 -4 0 0 0;0 1 -11 0 0;0 0 9 -11 2;3 3 0 0 -6] b=[10 ;0;-200;0;0] n=5 Tabla de resultados en el formato Condition Number 6.4554 Soluciones mg/m3 Soluciones con matlab Error relativo(%) 0%

Parmetros en m3/min

C= 12.666666666666668 12.666666666666668 19.333333333333336 18.121212121212121 12.666666666666666

C= 12.666666666666668 12.666666666666668 19.333333333333336 18.121212121212121 12.666666666666666

6.4554

C= 15.600000000000000 15.600000000000001 19.600000000000001 18.872727272727271 15.600000000000000 C= 18.533333333333335 18.533333333333331 19.866666666666667 19.624242424242425 18.533333333333331

C= 15.600000000000000 15.600000000000001 19.600000000000001 18.872727272727271 15.600000000000000 C= 18.533333333333335 18.533333333333331 19.866666666666667 19.624242424242425 18.533333333333331

0%

6.4554

0%

Grfico de las soluciones en funcin de los parmetros

2.2 Mtodo Iterativo Ecuaciones del mtodo iterativo a utilizar para escribir el cdigo en Matlab

Para 5, 7 y 9. Las matrices que se introducirn en matlab sern A=[7 0 -2 0 0;4 -4 0 0 0;0 1 -11 0 0;0 0 9 -11 2;3 3 0 0 -6] b=[10 ;0;-200;0;0] eps=10^-6 Tabla de resultados en el formato Soluciones C= Nmero de iteraciones 17 Soluciones con Matlab C= 12.666666666666668 12.666666666666668 19.333333333333336 18.121212121212121 12.666666666666666 C= 15.600000000000000 15.600000000000001 19.600000000000001 18.872727272727271 15.600000000000000 C= 18.533333333333335 18.533333333333331 19.866666666666667 19.624242424242425 18.533333333333331 Error relativo(%) 3,07066E-08 5,15552E-07 7,04141E-08 2,11713E-07 8,48883E-07 3,0707E-08 4,24385E-07 8,55408E-08 2,50359E-07 8,033E-07 3,07068E-08 3,62076E-07 1,00261E-07 2,86045E-07 7,72145E-07

Parmetros

12.666666662777130 12.666666601363378 19.333333319719952 18.121212082847137 12.666666559141426 C= 17 15.599999995209727 15.599999933795980 19.599999983234046 18.872727225477767 15.599999874685244 C= 17 18.533333327642328 18.533333266228574 19.866666646748140 19.624242368108398 18.533333190229058

Grfico de las soluciones en funcin de los parmetros

C=

D= 10 0 -200 0 0

El mtodo no converge: Ya que para filas 1>0.2857 si 1>1 No 1>0,09090 Si 1>1 No 1>1 No El mtodo no converge 3. Conclusiones

Ya que para columnas 1>1,5 No 1>0,59 si 1>1,09 No 1>0 Si 1>0, 1818 Si

Sobre los resultados obtenidos (descripcin del comportamiento de la solucin calculada en funcin de los valores del parmetro). De acuerdo a lo observado en los dos mtodos, el comportamiento de las concentraciones (calculadas en funcin del caulas Q01 que vara) va creciendo constantemente, mientras ms grande sea es el caudal Q01 proporcionado, son mayores las concentraciones de nuestros reactores.

Sobre la aplicacin de los dos mtodos utilizados y el de Matlab. Como se pudo ver en la practica el mtodo que nos saca mejores resultados de las concentraciones y con un menor error es el mtodo de guaus pivoteo, en cambio el mtodo de guaus jacobi necesita un numero promedio de 17 interacciones y nos da un resultado con un error promedio de 3,4 *10^-7 .Es por esto que el Mtodo directo presenta una mejora significativa en cuanto a velocidad de clculo y precisin ante el Mtodo interativo. Sin embargo, estos dos mtodos son muy tiles debido a la precisin con la que obtienen las concentraciones. ANEXO Mtodo directo function [C]=gaussp(A,b,n) %triangularizacion tic for k=1:n-1 max=abs(A(k,k)); imax=k; for i=k+1:n if(abs(A(i,k))>max), max=abs(A(i,k)); imax=i; end end if(imax~=k), for j=k:n dum=A(k,j); A(k,j)=A(imax,j); A(imax,j)=dum; end dum=b(k,1); b(k,1)=b(imax,1); b(imax,1)=dum; end for i=k+1:n fac=A(i,k)/A(k,k); for j=k+1:n A(i,j)=A(i,j)-fac*A(k,j); end b(i,1)=b(i,1)-fac*b(k,1); end end for i=2:n for j=1:i-1 A(i,j)=0; end

end %sustitucion regeresiva C(n,1)=b(n,1)/A(n,n); for i=n-1:-1:1 sum=0; for j=i+1:n sum=sum+A(i,j)*C(j,1); end C(i,1)=(b(i,1)-sum)/A(i,i); end toc mtodo indirecto function [C,nit]=jac(A,b,C,eps) N=diag(diag(A));%te da los numeros de la diagonal de la matriz M=N-A; % se saca la matriz a la que es igual cada C normai=1; % se inicia con un valor de la norma de 1 nit=0; % el numero de interaciones inicial es 0 R=N^-1*M;% matriz de transicion de jacobi %se suma las filas en valor absoluto disp(R) fila=sum(abs(R)); %se saca el mayor valor de la matriz fila r=max(abs(fila)); colum=sum(abs(R),2); r1=max(abs(colum)); if r>1 || r1>1, disp('EL METODO NO CONVERGE') disp('Revise que la mariz introducida sea diagonalmente dominante') else disp('EL METODO CONVERGE!!') return end while abs(normai)>eps & nit<100 %el numero maximo de intgeraciones sera 100 y el resultado te dara cuanto tu norma sea menor a tu eps nit=nit+1; C0=N\(M*C+b); normai=norm(C0-C,inf); C=C0; end

PROBLEMA DE INTERPOLACIN

1. Nmero y Enunciado del problema 1. M. S. Selim y R. S. Seagraves estudiaron la cintica de la elucin de los compuestos de Cu, a partir de resinas de intercambio inico. La normalidad N del lquido leja era el factor ms importante al determinar la difusividad D, los resultados de las medidas que se realizaron se dan a continuacin: i N D (106 cm2/s) 0 1 0.0521 0.1028 1.65 2.10 2 0.2036 2.27 3 0.4946 2.76 4 0.9863 3.12 5 1.9739 3.06 6 2.443 2.92 7 5.06 2.07

2. Solucin del problema Tabla de Datos del problema 0 1 0.0521 0.1028 1.65 2.10 2 0.2036 2.27 3 0.4946 2.76 4 0.9863 3.12 5 1.9739 3.06 6 2.443 2.92 7 5.06 2.07

i N D (106 cm2/s)

Grfico de la funcin con los datos del problema

2.1 Clculo con el Mtodo de Splines Expresin analtica de las relaciones utilizadas para escribir el cdigo en Matlab. ( ) [( ) ( ) ] ] [( ) ( ) ]

[(

Donde ( ) es la spline que se calcula para cada rango entre los valores. Para calcular la spline es necesario conocer los valores de M y estos pueden ser calculados mediante el segundo caso, caso en el cual las condiciones sobre la segunda derivada son cero.

Se utiliza el segundo caso debido a que no se conoce la funcin, por lo tanto no se puede encontrar su primera derivada, por ello se supone que las segundas derivadas son cero. Tabla de las Segundas Derivadas Mi 1 2 3 4 5 6 7 8 Grfico: Valores estimados con las Splines. Valor 0 -149.7119 22.0965 -7.6969 -0.1861 -0.4275 0.0069 0

Anexo 1 (Copia del programa escrito en Matlab) function[txp,typ]=spline2casoX(x,y,np,ips) %valores de h for i=1:(np-1) h(i)=x(i+1)-x(i); end for i=2:np-1 b(i)=(h(i-1)+h(i))/3; end for i=2:np-2 c(i)=h(i)/6; end c(np-1)=0; a(1)=0; for i=2:np-2 a(i)=h(i)/6; end d(1)=0; for i=2:np-1 d(i)=(y(i+1)-y(i))/h(i)-(y(i)-y(i-1))/h(i-1); end d(np)=0; [M]=thomas(a,b,c,d,np); nt=0; for i=1:np-1 is=i; paso=(x(i+1)-x(i))/(ips+1); for j=1:ips+1

nt=nt+1; txp(nt)=x(i)+paso*(j-1); if((is+1)==(np)), M(is+1)=0; end typ(nt)=pols(h,x,y,M,is,txp(nt)); end end txp(nt+1)=x(np); typ(nt+1)=y(np); fprintf('Las segundas derivadas (M) son:'); M function [x]=thomas(a,b,c,d,n) %triangularizacin for i=2:n-2 factor=a(i)/b(i); b(i+1)=b(i+1)-factor*c(i); d(i+1)=d(i+1)-factor*d(i); end x(n-1)=d(n-1)/b(n-1); for i=n-2:-1:2 x(i)=(d(i)-c(i)*x(i+1))/b(i); end function [yp]=pols(h,x,y,M,is,xp) t1=((x(is+1)-xp)^3*M(is)+(xp-x(is))^3*M(is+1))/(6*h(is)); t2=((x(is+1)-xp)*y(is)+(xp-x(is))*y(is+1))/(h(is)); t3=((x(is+1)-xp)*M(is)+(xp-x(is))*M(is+1))*(h(is)/6); yp=t1+t2-t3; 2.2 Clculo con el Mtodo de Interpolacin con Polinomios Expresin analtica de las relaciones utilizadas para escribir el cdigo en Matlab. -Frmula para calcular las diferencias divididas de avance de Newton (de orden i): [ ] [ ] [ ]

-Frmula para evaluar el polinomio de interpolacin de diferencias divididas de avance de grado n: ( ) ( ) [ ] ( ) ( )

Tabla del polinomio de interpolacin: Diferencias Divididas f[xk,..xk+i] f(x0) f[x0,x1] f[x0,x1,x2] f[x0,x1,x2,x3] f[x0,x1,x2,x3,x4] f[x0,x1,x2,x3,x4,x5] f[x0,x1,x2,x3,x4,x5,x6] f[x0,x1,x2,x3,x4,x5,x6,x7]

Grado 0 1 2 3 4 5 6 7

Valores de las diferencias divididas 1.6500 8.8757 -47.4537 107.2246 -116.2419 60.9733 -25.6850 5.1469

Grfico: Diferencia entre los valores estimados con las Splines y los valores estimados con el polinomio de interpolacin.

Anexo 2(Copia del programa escrito en Matlab) function[txp,typ]=difdivX(x,y,np,psi) %se dan los puntos x(i,y(i)y psi(nmero de puntos intermedios de la spline) %np es el nmero de puntos %txp:tabla de los x, typ: tabla de los y % Clculo de los valores de las diferencias divididas n=np-1; dd=y;

for i=1:n for j=np:-1:i+1 dd(j)=(dd(j)-dd(j-1))/(x(j)-x(j-i)); end end nt=0; for i=1:np-1 paso=(x(i+1)-x(i))/(psi+1); for j=1:psi+1 nt=nt+1; txp(nt)=x(i)+paso*(j-1); typ(nt)=poldd(dd,x,np,txp(nt)); end end nt=nt+1; txp(nt)=x(np); typ(nt)=poldd(dd,x,np,txp(nt)); fprintf('Las diferencias divididas utilizadas fueron:'); dd %Funcin para calcular el polinomio de interpolacin por diferencias %divididas function [yp]=poldd(dd,x,np,xp) yp=dd(np); for i=np-1:-1:1 yp=dd(i)+(xp-x(i))*yp; end

2.3 Clculo con polyfit y polyval de Matlab Grfico: Diferencia entre los valores estimados con las Splines y los valores estimados con

2.4 Clculo con interpl (splines) de Matlab Grfico: Diferencia entre los valores estimados con las Splines y los valores estimados con

3. Conclusiones Sobre los resultados obtenidos (descripcin del comportamiento de las curvas en funcin del mtodo utilizado). Para el primer mtodo utilizado (Splines Cbicas) se puede ver que los valores interpolados se ajustan de una manera muy prxima al grfico de la funcin, esto muestra la gran precisin del mtodo de Splines Cbicas. Para el segundo mtodo (Polinomio de interpolacin por diferencias divididas de avance) se puede observar que la precisin de los polinomios calculados va decreciendo a medida que los valores se alejan del centro, es decir que en los extremos los valores ya no son tan precisos, esto se debe a que el nmero de polinomios es elevado y las diferencias divididas van creciendo a medida que los valores se alejan del centro. Mediante los programas desarrollados por Matlab (polyfit/polyeval) se obtienen resultados variados y muy diferentes al anterior. Esto se debe a que el polinomio no presenta unicidad (no es nico). En cuanto a interp1, se observa que los splines calculados mediante esta funcin y las calculadas mediante el programa desarrollado presentan variacin con respecto a las calculadas mediante polyfit y polyeval. Sin embargo, este mtodo desarrollado por Matlab nos da una buena aproximacin a la funcin.

Se pudo observar que entre los splines calculados por el programa elaborado la funcin interp1 presenta una mayor variacin comparada con la de polyfit y poleyval. Los resultados de mtodo a mtodo varan considerablemente. La de mayor precisin es obviamente el de MATLAB, por ser un paquete serio y tener programas ms complejos y bien desarrollados. Sin embargo, dependiendo del grado de precisin requerido, los programas elaborados tambin son de utilidad.

Sobre la precisin de clculo de los mtodos utilizados y los de Matlab. Como se pudo ver en la prctica el mtodo que nos permite obtener mayor precisin especialmente cuando se trata de polinomios de grado elevado es el mtodo de las Splines cbicas, en este mtodo los puntos interpolados se aproximan bastante a la grfica de la funcin. Sin embargo, el mtodo de diferencias divididas de Newton tambin es muy til, este nos permite obtener polinomios muy aproximados a la funcin, pero pierde precisin cuando se quiere calcular polinomios de grado elevado. Los mtodos de mayor precisin son los desarrollados por Matlab, debido a la complejidad de programacin de los mismos y el error mnimo que presentan. Sin embargo, los programas desarrollados de los mtodos de splines cbicas y diferencias divididas de Newton son de gran utilidad.

Vous aimerez peut-être aussi