Métodos Numéricos Ecuaciones algebraicas lineales Oscar Alvarado Nava Universidad Autónoma Metropolitana, Azcapotzalco División de Ciencias Básicas e Ingeniería Departamento de Electrónica Área de Sistemas Digitales y Computadoras G314-3 [email protected] http://legion.uam.mx/valhalla 03O MN, Oscar Alvarado Nava 1 Introducción A los valores que hace que una ecuación sea cero, se les llama raíces de la ecuación o ceros de la ecuación f (x ) = 0 Ahora determinaremos simultáneamente f 1 ( x 1 , x 2 , x 3 ,..., x n f 2 ( x 1 , x 2 , x 3 ,..., f 3 ( x 1 , x 2 , x 3 ,..., ... )= xn )= xn )= f n ( x 1 , x 2 , x 3 ,..., x n )= MN, Oscar Alvarado Nava 0 0 0 0 2 Introducción Tales sistemas de ecuaciones pueden ser lineales o no lineales a11 x1 + a12 x2 +,... + a1n xn = b1 a21 x1 + a22 x2 +,... + a2 n xn = b2 ... an1 x1 + an 2 x2 +,... + ann xn = bn MN, Oscar Alvarado Nava 3 Introducción Métodos para sistemas de n<4 son sencillos y fáciles de manipular Actualmente con la ayuda de computadoras los sistemas mayores pueden ser resueltos fácilmente Así, se pueden enfrentar ejemplos y problemas más reales y complejos MN, Oscar Alvarado Nava 4 Resolución Gráfica Estos métodos están restringidos a n<=3 3 x + 2 y = 18 − x + 2y = 2 Si despejamos una de las variables 18 − 3 x 3 y= = − x+9 2 2 2+ x 1 y= = x +1 2 2 Después graficamos MN, Oscar Alvarado Nava 5 Resolución Gráfica y 8 Solución x = 4, y = 3 6 y = 1 x +1 2 4 2 3 y = − x+9 2 2 4 6 8 MN, Oscar Alvarado Nava x 6 Resolución Gráfica Para una función de dos dimensiones z = f ( x, y ) Revisar en MATLAB las comandos meshgrid mesh title, xlabel, ylabel, zlabel MN, Oscar Alvarado Nava 7 Resolución Gráfica Los métodos gráficos pueden ayudar a visualizar propiedades de las soluciones x2 x2 1 − x1 + x 2 = 1 2 − x1 Infinidad de soluciones Sistemas Singulares 2 .3 x1 + x 2 = 1 .1 5 − − x1 + 2 x 2 = 2 1 1 − x1 + x 2 = 2 2 No hay solución x2 1 − x1 + x 2 = 1 2 x1 1 x1 + x 2 = 1 2 Visualmente difícil de localizar x1 Sistemas mal condicionados MN, Oscar Alvarado Nava 8 Regla de Cramer Funciona bien para un grupo pequeño de ecuaciones El determinante muestra cuando una matriz está mal condicionada [A ]{X } = {B } a11 [A ] = a 21 a 31 D = a11 a12 a 22 a 32 a 22 a 23 a 32 a 33 a13 a 23 a 33 − a12 a11 D = a 21 a12 a 22 a13 a 23 a 31 a 32 a 33 a 21 a 23 a 31 a 33 − a13 a 21 a 22 a 31 a 32 MN, Oscar Alvarado Nava 9 Regla de Cramer Calcule los determinantes de 3 x + 2 y = 18 − x + 2y = 2 −1 2 x + y = 1 −1 2 x + y = 1 2 −1 2 x + y = 1 − x + 2y = 2 − 2 .3 5 x + y = 1 .1 −1 2 x + y = 1 3 D = −1 2 = 3 ( 2 ) − 2 ( − 1) = 8 2 −1 1 2 D= = − 1 (1) − 1( − 1 ) = 0 2 2 −1 1 2 −1 2 D= −1 D = − 1 2 − 2 .3 5 1 −1 ( 2 ) − 1( − 1) = 0 = 2 2 1 1 = −1 2 MN, Oscar Alvarado Nava (1 ) − 1 ( − 2 . 3 5 ) = − 0 . 04 10 Regla de Cramer x1 = b1 b2 a12 a 22 a13 a 23 b3 a32 D a33 a11 b1 a21 b2 a13 a23 a31 b3 a33 x2 = D x3 = a11 a12 b1 a21 a31 a22 a32 D b2 b3 MN, Oscar Alvarado Nava 11 Eliminación de incógnitas a 11 x 1 + a 12 x 2 = b 1 (1) a 21 x 1 + a 22 x 2 = b 2 (2) Si multiplicamos (1) por a21 y (2) por a11 a 11 a 21 x 1 + a 12 a 21 x 2 = b 1 a 21 (3) a 21 a 11 x 1 + a 22 a 11 x 2 = b 2 a 11 (4) Si restamos (3) a (4) a21a11x1 − a11a21(5)x1 + a22a11x2 − a12a21x2 = b2a11 − b1a21 MN, Oscar Alvarado Nava 12 Eliminación de incógnitas Despejando x2 de (5) x2 = b2 a11 − b1a21 a22 a11 − a12 a21 (6) Sustituyendo x2 de (1) y despejando x1 b2 a11 − b1a21 a11 x1 + a12 = b1 a22 a11 − a12 a21 MN, Oscar Alvarado Nava 13 Eliminación de Gauss simple Extensión de eliminación de incógnitas Se deberá de hacer una eliminación hacia adelante y sustitución hacia atrás Cuando no se toma en cuenta las divisiones entre cero, se le llama eliminación gaussiana simple al método a11 x1 + a12 x2 +,... + a1n xn = b1 (1) a21 x1 + a22 x2 +,... + a2 n xn = b2 (2) ... an1 x1 + an 2 x2 +,... + ann xn = bn MN, Oscar Alvarado Nava (3) 14 Eliminación de Gauss simple Eliminación hacia adelante Se deberá de llevar la matriz de coeficientes a una matriz triangular superior a 11 a 21 a 31 a 12 a 22 a 32 a 13 c 1 a 23 c 2 a 33 c 3 a 11 0 0 a 12 a 13 c 1 ' ' a 23 c 2 a '33 c '3 a '22 0 MN, Oscar Alvarado Nava 15 Eliminación de Gauss simple Se deberá de eliminar x1 desde la segunda ecuación hasta la n-ésima ecuación Se deberá de multiplicar la ecuación (1) por a21/a11 a 21 a 21 a 21 a 21 b1 a1n x n = a12 x 2 + ,... + a11 x1 + a11 a11 a11 a11 Restamos la ecuación anterior a la (2) a21 a21 a21 a21 a21x1 − a11x1 + a22x2 − a12x2 +,...+ a2n xn − a1n xn = b2 − b1 a11 a11 a11 a11 [a ' 22 ] [ ] [ ] x 2 + ,... + a 2 n x n = b 2 ' MN, Oscar Alvarado Nava ' 16 Eliminación de Gauss simple El método se repite para las demás ecuaciones, por ejemplo para la tercera ecuación a 31 a 31 a 31 a 31 b1 a1n x n = a12 x 2 + ,... + a11 x1 + a11 a11 a11 a11 Al final obtendremos a 11 x 1 + a 12 x 2 + ,... + a 1 n x n = b 1 a ' a ' a ' 22 32 x 2 + ,... + a ' x 2 + ,... + a ' 2 n 3n x n = b 2' x n = b 3' ... n 2 x 2 + ,... + a ' nn x n = b n' MN, Oscar Alvarado Nava 17 Eliminación de Gauss simple Para los pasos anteriores a la ecuación (1) se le llama ecuación pivote y al coeficiente a11 elemento pivote Ahora para eliminar el coeficiente a22 se toma de la misma forma la ecuación (2) como ecuación pivote y al elemento a22 como pivote MN, Oscar Alvarado Nava 18 Eliminación de Gauss simple a 11 x 1 + a 12 x 2 + a 13 x 3 + ,... + a 1 n x n = b1 a '22 x 2 + a '23 x 3 + ,... + a '2 n x n = b 2' a '32 x 2 + a '33 x 3 + ,... + a '3 n x n = b 3' ... a 'n 2 x 2 + a 'n 3 x 3 + ,... + a 'nn x n = b n' a 11 x1 + a 12 x 2 + a 13 x 3 + ,... + a 1 n x n = b1 a '22 x 2 + a '23 x 3 + ,... + a '2 n x n = b 2' a '33' x 3 + ,... + a '3' n x n = b 3'' ... a 'n' 3 x 3 + ,... + a 'nn' x n = b n'' MN, Oscar Alvarado Nava 19 Eliminación de Gauss simple En general a11 x1 + a12 x2 + a13 x3 +,... + a1n xn = b1 a '22 x2 + a '23 x3 +,... + a '2 n xn = b2' a '33' x3 +,... + a '3' n xn = b3'' ... a (nnn −1) xn = b n(n −1) MN, Oscar Alvarado Nava 20 Eliminación de Gauss simple: pseudocódigo DO k = 1, n-1 DO i = k+1, n factor = ai,k/ak,k DO j = k+1 to n ai,j = ai,j – factor*ak,j END DO bi = bi –factor*bk END DO END DO MN, Oscar Alvarado Nava 21 Eliminación de Gauss simple: pseudocódigo Se debe de tomar en cuenta que los arreglos en C son referenciados desde 0 a n-1 a00 x0 + a01 x1 +,... + a0 n−1 xn−1 = b0 a10 x0 + a11 x1 +,... + a1n−1 xn−1 = b1 ... an−10 x0 + an−11 x1 +,... + an−1n−1 xn−1 = bn−1 MN, Oscar Alvarado Nava 22 Eliminación de Gauss simple: pseudocódigo Para lenguaje C DO k = 0, < n-1 DO i = k+1, < n factor = ai,k/ak,k DO j = k to < n ai,j = ai,j – factor*ak,j END DO bi = bi –factor*bk END DO END DO MN, Oscar Alvarado Nava 23 Eliminación de Gauss simple: pseudocódigo DO k = 0, <n-1 DO i = k+1, <n factor = ai,k/ak,k DO j = k to <n ai,j = ai,j – factor*ak,j END DO bi = bi –factor*bk END DO END DO 3 00 -0.1 01 -0.2 02 0.1 10 7.0 11 -0.3 12 0.3 20 -0.2 21 10 22 k = 0, i = 1 a 10 a 00 − factor * a 00 factor = j= 0 j=1 a 10 = a 10 j= 2 a 12 = a 12 − factor * a 02 a 11 = a 11 − factor * a 01 k = 0, i = 2 j= 0 j=1 a 20 = a 20 − factor * a 10 j= 2 a 22 = a 22 − factor * a 12 a 21 = a 21 − factor * a 11 k = 1, i = 2 a 21 a 11 − factor * a 20 factor = j= 0 j=1 a 20 = a 20 j= 2 a 22 = a 22 − factor * a 22 a 21 = a 21 − factor * a 21 MN, Oscar Alvarado Nava 24 Sustitución hacia adelante a11 x1 + a12 x 2 + a13 x3 + ,... + a1n x n = b1 a '22 x 2 + a '23 x3 + ,... + a '2 n x n = b 2' a '33' x3 + ,... + a '3' n x n = b3'' ... a (nnn −1 ) x n = b n(n −1 ) (4) Resolviendo (4) xn = b n(n −1) a (nnn −1) MN, Oscar Alvarado Nava 25 Sustitución hacia adelante En general xi = b i(i −1) − n (i −1) a ∑ ij x j j = i +1 (i −1 ) a ii para i = n − 1, n − 2,... 1 MN, Oscar Alvarado Nava 26 Sustitución hacia adelante: pseudocódigo xn = bn/ann DO i = n - 1, 1, -1 sum = 0 DO j = i+1 , n sum = sum + ai,j * xj END DO xi = ( bi – sum)/aii END DO MN, Oscar Alvarado Nava 27 Ejercicio 3 x1 + −0.1x2 − 0.2 x3 = 7.85 0.1x1 + 7 x2 − 0.3 x3 = −19.3 0.3 x1 − 0.2 x2 + 10 x3 = 71.4 x1 = 3.0 x2 = −2.5 x3 = 7.0 MN, Oscar Alvarado Nava 28 Desventaja de la eliminación Se puede tener una división por cero si tenemos por ejemplo 2.0 x2 + 3.0 x3 = 8.0 (1) 4.0 x1 + 6.0 x2 + 7.0 x3 = −3.0 (2) 2.0 x1 + (3) x2 + 6.0 x3 = 5 En la ecuación pivote (1) el elemento a11 es cero También podrían presentarse problemas si a11 fuera muy cercano a cero MN, Oscar Alvarado Nava 29 Pivoteo parcial 0.0003 x1 + 3.00000 x3 = 2.0001 (1) 1.0000 x1 + 1.00000 x3 = 1.0000 (2) Antes de la eliminación, se deberá de determinar el coeficiente más grande (en magnitud) disponible en la columna del pivote Una vez localizado, se intercambiarán los renglones de tal manera que el elemento más grande sea el pivote 1.0000 x1 + 1.00000 x3 = 1.0000 (2) 0.0003 x1 + 3.00000 x3 = 2.0001 (1) MN, Oscar Alvarado Nava 30 Pseudocódigo para el pivoteo parcial p=k big = | ak,k | DO ii = k + 1, n dummy = | aii,k | IF ( dummy > big ) big = dummy p = ii END IF END DO IF ( p != k ) DO jj = k, n dummy = ap,jj ap,jj = ak,jj ak,jj = dummy END DO dummy = bp bp = bk bk = dummy END IF MN, Oscar Alvarado Nava 31 Matrices especiales Matrices con estructuras especiales Matrices banda Matrices simétricas Para la solución de estos sistemas se plantean otros métodos más eficientes, los cuales son iterativos Método de Gauss-Seidel, el cual emplea valores iniciales y después itera para obtener estimaciones más cercanas a la solución A diferencia de método de Gauss el Método de Gauss-Seidel, controla el error por medio del número de iteraciones MN, Oscar Alvarado Nava 32 Matrices banda Comunes en la solución de sistemas de ecuaciones diferenciales y en métodos de interpolación La matriz es cuadrada Todos sus elementos son cero, con excepción de una banda centrada sobre la diagonal principal Las dimensiones de una matriz banda son Ancho de Banda: BW Ancho medio de media banda: HBW MN, Oscar Alvarado Nava 33 Matrices banda 0 0 6.1 4.4 0 6.2 3.5 7.8 0 0 0 7.9 4.4 3.1 0 0 5.0 2.6 4.0 0 0 0 0 2.2 8.1 Este sistema se podría resolver con los métodos de eliminación, Gauss, sin embargo no son tan eficientes para este tipo de matrices MN, Oscar Alvarado Nava 34 Gauss-Seidel Método iterativo Se propone un valor inicial Utilizando un método sistemático, se obtiene una estimación de la solución [A ]{X } = {B } a11 a 21 a31 a12 a22 a32 a13 a23 a33 x1 x2 x 3 b1 = b2 b 3 MN, Oscar Alvarado Nava 35 Gauss-Seidel Suponiendo Los elementos de la diagonal principal NO son cero Despejamos x1, x2 y x3 b1 − a 12 x 2 − a 13 x 3 a 11 b − a 21 x 1 − a 23 x 3 x2 = 2 a 22 b − a 31 x 1 − a 32 x 2 x3 = 3 a 33 x1 = (1) (2) (3) Podríamos suponer que los valores iniciales x1=0, x2=0 y x3=0 MN, Oscar Alvarado Nava 36 Gauss-Seidel Sustituyendo los valores de estos valores de x1=0 y x2=0 en (1) b1 − a12 (0) − a13 (0) x1 = a11 b1 = a11 Sustituyendo (4) y valor de x3=0 en (2) b1 − a 23 (0 ) b 2 − a 21 a 11 x2 = a 22 (4) (5) Finalmente podríamos sustituir (4) y (5) en (3) MN, Oscar Alvarado Nava 37 Gauss-Seidel Después, los nuevos valores de x, se sustituyen de nuevo en (1) y así sucesivamente El calculo pondría detenerse hasta que la solución converja lo suficientemente cerca de los valores reales ε a ,i xi − xi = j xi j j −1 100 % < ε s j y j-1 son las iteraciones actuales y previas respectivamente MN, Oscar Alvarado Nava 38 Gauss-Seidel 3 x1 + −0.1x2 − 0.2 x3 = 7.85 x1 = 3.0 0.1x1 + 7 x2 − 0.3 x3 = −19.3 x 2 = − 2 .5 0.3 x1 − 0.2 x2 + 10 x3 = 71.4 x3 = 7 .0 x1 = 0, x 2 = 0, x3 = 0 7.85+ 0.1x2 + 0.2x3 x1 = 3 −19.3 − 0.1x1 + 0.3x3 x2 = 7 71.4 − 0.3x1 + 0.2x2 x3 = 10 x1 = 7.85+ 0 + 0 = 2.616 3 −19.3 − 0.1(2.616667) + 0 = −2.794 7 71.4 − 0.3(2.616) + 0.2(−2.794) x3 = = 7.005 10 x2 = MN, Oscar Alvarado Nava 39 Gauss-Seidel Segunda iteración x1 = 2.616 , x 2 = −2.794 , x3 = 7.005 7.85+ 0.1x2 + 0.2x3 3 7.85+ 0.1(−2.794) + 0.2(7.005) x1 = = 2.990 3 −19.3 − 0.1x1 + 0.3x3 x2 = 7 −19.3 − 0.1(2.990) + 0.3(7.005) x2 = = −2.499 7 x1 = x3 = 71.4 − 0.3x1 + 0.2x2 10 71.4 − 0.3(2.990) + 0.2(−2.499) x3 = = 7.000 10 MN, Oscar Alvarado Nava 40 Gauss-Seidel, criterio de convergencia El método es similar al de punto fijo El método en algunas ocasiones no es convergente Cuando converge algunas veces lo hace muy lento y y x MN, Oscar Alvarado Nava x 41 Relajación para Gauss-Seidel Mejora la convergencia Se utiliza un promedio ponderado de los resultados de las iteraciones nuevo xi Donde si ( + 1 − λx anterior i ) 0≤λ ≤2 λ = 1 el resultado no se modifica = λx nuevo i si 0 ≤ λ ≤ 1 el resultado es un promedio ponderado de los resultados actuales y previos: subrelajación obliga a los sistemas no convergentes a apresurar la convergencia al amortiguar sus oscilaciones si 1 ≤ λ ≤ 2 se le agrega una ponderación extra sobre el valor actual, el resultado es una solución más real, pero más lenta: sobrerelajación MN, Oscar Alvarado Nava 42 Pseudocódigo para Gauss-Seidel SUBROUTINE Gauss_Seidel( a,b,n,x,imax,es,lamda) DO i = 1, n dummy = ai,i DO j = 1, n ai,j = ai,j/dummy END DO bi = bi/dummy END DO DO i = 1, n sum = bi DO j = 1, n IF i != j THEN sum = sum – ai,j * xj END DO xi = sum END DO iter = 1 DO sentinel = 1 DO i = 1 , n old =xi sum =bi DO j=1, n IF i != j THEN sum = sum –ai,j * xj END DO xi = lamda * sum +(1-lamda)*old IF sentinel =1 AND x1 != 0 THEN ea =ABS( (xi –old)/xi )*100 IF ea > es THEN sentinel = 0 END IF END DO iter = iter +1 IF sentinel =1 OR ( iter >= imax) EXIT END DO END Gauss_Seidel MN, Oscar Alvarado Nava 43 Resolución con MATLAB Análisis matricial cond Número de condición de la matriz norm Matriz o norma del vector det Determinante trace Suma de los elementos de la diagonal orth Ortogonalización Ecuaciones lineales inv Matriz inversa \ Solución de ecuaciones lineales pinv Pseudoinversa nnls Mínimos cuadrados no negativos lu Factores para la eliminación de gauss MN, Oscar Alvarado Nava 44 Resolución con MATLAB 3 x1 + −0.1x2 − 0.2 x3 = 7.85 x1 = 3.0 0.1x1 + 7 x2 − 0.3 x3 = −19.3 x 2 = − 2 .5 0.3 x1 − 0.2 x2 + 10 x3 = 71.4 x3 = 7 .0 solucion1.m %Matriz de coeficientes A A=[3 -0.1 -0.2 0.1 7 -0.3 0.3 -0.2 10]; %Vector B B=[ 7.85 -19.3 71.4 ]; MN, Oscar Alvarado Nava 45 Resolución con MATLAB >> pwd ans = C:\MATLAB6p5\work >> ls . solucion_1.m .. una_matriz.m >> solucion_1 >> A A = 3.0000 -0.1000 -0.2000 0.1000 7.0000 -0.3000 0.3000 -0.2000 10.0000 >> B B = 7.8500 -19.3000 71.4000 MN, Oscar Alvarado Nava 46 Resolución con MATLAB >> X=A\B X = 3.0000 -2.5000 7.0000 Para este caso MATLAB utiliza la eliminación de Gauss MN, Oscar Alvarado Nava 47 Resolución con MATLAB [A ]{X } = {B } −1 −1 [A ] [A ]{X } = {B }[A ] −1 {X } = {B }[A ] >> X=inv(A)*B X = 3.0000 -2.5000 7.0000 MN, Oscar Alvarado Nava 48