sistemas lineales casos especiales

Download Sistemas lineales casos especiales

If you can't read please download the document

Upload: kike-prieto

Post on 15-Jun-2015

199 views

Category:

Education


2 download

TRANSCRIPT

  • 1. 78 4.5 Sistemas singulares En esta seccin se describe un mtodo directo para intentar resolver un sistema lineal propuesto de n ecuaciones con m variables, n

2. 79 El procedimiento consiste en transformar la matriz aumentada, de manera similar al mtodo de Gauss-Jordan. El objetivo es reducir la matriz aumentada a una forma escalonada con 1s en la diagonal mediante intercambios de filas, hasta donde sea posible hacerlo. Si n> x=slin(a,b) Si se obtiene como respuesta un vector nulo x = [ ] Entonces se puede llamar usando los dos parmetros de salida para analizar el resultado de la transformacin matricial, como se indicar en los ejemplos posteriores: >> [x,c]=slin(a,b) Si el vector solucin no es un vector nulo, entonces el sistema es consistente y la solucin obtenida es nica y la matriz se habr reducido a la matriz identidad. 5. 82 Si el vector solucin es un vector nulo, entonces el sistema es singular y la matriz de coeficientes reducida permitir determinar si es un sistema redundante o incompatible. function [x,a]=slin(a,b) [n,m]=size(a); z=max(max(a)); v=[n+1:m]; %Vector inicial de variables libres a(1:n,m+1)=b; %Matriz aumentada if n>m %Mas ecuaciones que variables x=[ ]; a=[ ]; return; end a=a/z; %Estandarizar la matriz para reducir error for e=1:n %Ciclo para n etapas [z,p]=max(abs(a(e:n,e))); %Pivoteo por filas p=p+e-1; t=a(e,e:m+1); %Cambiar filas a(e,e:m+1)=a(p,e:m+1); a(p,e:m+1)=t; if abs(a(e,e)) a = [1 0 2 4; 0 1 2 0; 1 2 1 0; 1 1 0 2] a = 1 0 2 4 0 1 2 0 1 2 1 0 1 1 0 2 >> b=[1; 0; 0; 2] b = 1 0 0 2 >> x=slin(a,b) x = -3.0000 2.0000 -1.0000 1.5000 2) Sistema completo reducido a incompleto redundante >> a=[1 1 2 2;1 2 2 4;2 4 2 4 ;1 3 0 2] a = 1 1 2 2 1 2 2 4 2 4 2 4 1 3 0 2 >> b=[1; 2; 2; 1] b = 1 2 2 1 >> x=slin(a,b) x = [] >> [x,c]=slin(a,b) x = [] c = 1 0 0 -4 -2 0 1 0 2 1 0 0 1 2 1 0 0 0 0 0 Se obtiene un sistema equivalente. Las soluciones se asignan mediante la variable libre x4 : x1 - 4x4 = -2 x1 = 4x4 - 2 x2 - 2x4 = 1 x2 = 2x4 + 1 x3 + 2x4 = 1 x3 = -2x4 + 1 Sea x4 = t, t R, entonces el conjunto solucin es {4t-2, 2t+1, -2t +1} Vector solucin Una ecuacin se anul Vector solucin nulo Llamar a slin con los dos parmetros 7. 84 3) Sistema incompleto >> a=[1 0 2 4;4 1 2 4;2 4 5 2] a = 1 0 2 4 4 1 2 4 2 4 5 2 >> b=[1; 0; 2] b = 1 0 2 >> x=slin(a,b) x = [ ] >> [x,c]=slin(a,b) x = [] c = 1.0000 0 0 0.6400 -0.2800 0 1.0000 0 -1.9200 -0.1600 0 0 1.0000 1.6800 0.6400 Se obtiene un sistema equivalente. Las soluciones se asignan mediante la variable libre x4: x1 + 0.64x4 = -0.28 x2 - 1.92x4 = -0.16 x3 + 1.68x4 = 0.64 4) Sistema completo reducido a incompleto incompatible >> a=[1 1 2 2;1 2 2 4;2 4 2 4 ;1 3 0 2] a = 1 1 2 2 1 2 2 4 2 4 2 4 1 3 0 2 >> b=[1; 2; 2; 4] b = 1 2 2 4 >> x=slin(a,b) x = [] >> [x,c]=slin(a,b) x = [] c = 1 0 0 -4 -2 0 1 0 2 1 0 0 1 2 1 0 0 0 0 3 Llamar a slin con los dos parmetros Vector solucin nulo Sistema reducido 8. 85 Sistema equivalente: x1 - 4x4 = -2 x2 - 2x4 = 1 x3 + 2x4 = 1 0x4 = 3 4.5.2 Uso de funciones de MATLAB Comparacin de la funcin slin con la funcin rref de MATLAB resolviendo un sistema singular. Resolver el sistema incompleto: = 1 2 3 4 5 6 x 1 0 1 0 0 0 2 x 0 0 0 1 0 1 30 x 0 0 1 0 1 0 4 x 0 1 1 0 0 0 10 x 0 0 0 1 0 0 50 x >> a=[1 0 -1 0 0 0; 0 0 0 1 0 -1; 0 0 1 0 -1 0;0 1 -1 0 0 0; 0 0 0 1 0 0]; (matriz 5x6) >> b=[2; 30; -4; 10; 50]; (vector 5x1) >> [x,c]=slin(a,b) x = [] c = 1 0 0 0 -1 0 -2 0 1 0 0 -1 0 6 0 0 1 0 -1 0 -4 0 0 0 1 0 -1 30 0 0 0 0 0 1 20 >> c=rref([a, b]) c = 1 0 0 0 -1 0 -2 0 1 0 0 -1 0 6 0 0 1 0 -1 0 -4 0 0 0 1 0 0 50 0 0 0 0 0 1 20 Los resultados son equivalentes. La variable libre es x5 De ambos sistemas reducidos se puede obtener: x6 = 20 x4 = 50 x5 = t, t 0 (variable libre) x3 = -4 + t x2 = 6 + t x1 = -2 + t Los resultados obtenidos tambin establecen que t 4 Se obtiene una proposicin nula. El sistema es incompatible 9. 86 4.6 Caso especial: Sistemas tridiagonales En un sistema tridiagonal la matriz de los coeficientes contiene todos sus componentes iguales a cero excepto en las tres diagonales principales. Estos sistemas se presentan en la aplicacin de cierto tipo de mtodos numricos como el caso de los trazadores cbicos y en la solucin de ecuaciones diferenciales con diferencias finitas. Se puede disear un mtodo directo para resolver un sistema tridiagonal con eficiencia de primer orden: T(n)=O(n) lo cual representa una enorme mejora respecto a los mtodos directos generales para resolver sistemas de ecuaciones lineales, cuya eficiencia es T(n)=O(n 3 ). Formulacin de un mtodo directo para resolver un sistema tridiagonal Un sistema tridiagonal de n ecuaciones expresado en notacin matricial: 1 1 1 1 2 2 2 2 2 3 3 3 3 3 n n n n b c x d a b c x d a b c x d ... ... ... ... ... a b x d = Para obtener la formulacin se puede considerar nicamente un sistema de tres ecuaciones para luego extenderla al caso general. Las transformaciones son aplicadas a la matriz aumentada: 1 1 1 2 2 2 2 3 3 3 b c d a b c d a b d 1) Sea 1 1w b= . Dividir la primera fila para w1 1 1 1 1 2 2 2 2 3 3 3 c d 1 w w a b c d a b d 2) Sea 1 1 1 d g w = . Restar de la segunda fila, la primera multiplicada por a2 1 1 1 1 2 2 2 2 2 1 1 3 3 3 c 1 g w c 0 b a c d a g w a b d 3) Sea 1 2 2 2 1 c w b a w = . Dividir la segunda fila para w2 1 1 1 2 2 2 1 2 2 3 3 3 c 1 g w c d a g 0 1 w w a b d 10. 87 4) Sea 2 2 1 2 2 d a g g w = . Restar de la tercera fila, la segunda multiplicada por a3 1 1 1 2 2 2 2 3 3 3 3 2 2 c 1 g w c 0 1 g w c 0 b a d a g w 5) Sea 2 3 3 3 2 c w b a w = . Dividir la tercera fila para w3 1 1 1 2 2 2 3 3 2 3 c 1 g w c 0 1 g w d a g 0 1 w 6) Sea 3 3 2 3 3 d a g g w = . Finalmente se obtiene: 1 1 1 2 2 2 3 c 1 g w c 0 1 g w 0 1 g De donde se puede hallar directamente la solucin 3 3 2 2 2 3 2 1 1 1 2 1 x g c x g x w c x g x w = = = La formulacin se extiende al caso general (2) Transformacin matricial de un sistema tridiagonal de n ecuaciones lineales 1 1 1 1 1 i i 1 i i i 1 i i i 1 i i w b d g w a c w b , i 2,3,...,n w d a g g , i 2,3,...,n w = = = = = = Obtencin de la solucin n n i i 1 i i i x g c x x g , i n 1, n 2,...,2,1 w + = = = (2) Algoritmo de Thomas 11. 88 El algoritmo incluye un ciclo dependiente del tamao del problema n para reducir la matriz y otro ciclo externo dependiente de n para obtener la solucin. Por lo tanto es un algoritmo con eficiencia T(n)=O(n). 4.6.1 Instrumentacin computacional Con la formulacin anterior se escribe una funcin para resolver un sistema tridiagonal de n ecuaciones lineales. La funcin recibe los coeficientes y las constantes en los vectores a, b, c, d. La solucin es entregada en el vector x function x = tridiagonal(a, b, c, d) n = length(d); w(1) = b(1); g(1) = d(1)/w(1); for i = 2:n %Transformacin matricial w(i) = b(i) - a(i)*c(i-1)/w(i-1); g(i) = (d(i) - a(i)*g(i-1))/w(i); end x(n) = g(n); for i = n-1:-1:1 %Obtencin de la solucin x(i) = g(i) - c(i)*x(i+1)/w(i); end Ejemplo. Resuelva el siguiente sistema tridiagonal de ecuaciones lineales usando la funcin anterior 1 2 3 4 x7 5 6 x2 8 1 5 x6 4 3 7 x9 8 8 = >> a = [0 2 6 9]; Vectores con las diagonales (completas) >> b = [7 -8 4 8]; >> c = [5 1 3 0]; >> d = [6 5 7 8]; >> x = tridiagonal(a, b, c, d) x = Solucin calculada 0.7402 0.1637 4.8288 -4.4324