Análisis Numérico Parte 3 E. T. S. I. Caminos, Canales y Puertos 1 Sistemas de ecuaciones • En la parte 2 hemos tratado de determinar el valor de x, que satisface f(x)=0. Es este tema trataremos de obtener los valores x1,x2, xn, que de forma simultánea satisfacen un conjunto de ecuaciones. • Tales sistemas pueden ser lineales o no lineales, en este tema tratamos los sistemas lineales. E. T. S. I. Caminos, Canales y Puertos 2 Sistemas de ecuaciones • • Donde a y b son coeficientes constantes, y n es el número de ecuaciones. Muchas de las ecuaciones fundamentales de la ingeniería están basadas en leyes de conservación, algunas de las cantidades que conforman esas leyes son la masa, la energía, … En términos matemáticos, esos principios nos conducen a ecuaciones de balance o de continuidad que relacionan el comportamiento del sistema en referencia a la cantidad sujeta a modelamiento, con los estímulos externos que actúan sobre el sistema. E. T. S. I. Caminos, Canales y Puertos 3 Sistemas de ecuaciones • Las matrices son conjuntos rectangulares de elementos representados por un solo símbolo. Si el conjunto es horizontal, se llama vector fila, si es vertical se llama vector columna. Columna 3 Fila 2 Vector columna Vector fila E. T. S. I. Caminos, Canales y Puertos 4 Sistemas de ecuaciones • Hay diferentes formas especiales de matrices cuadradas que son especiales: Matriz simétrica Matriz diagonal E. T. S. I. Caminos, Canales y Puertos Matriz identidad Matriz triangular superior 5 Sistemas de ecuaciones Matriz triangular inferior Matriz banda Todos los elementos son iguales a cero excepto una banda centrada alrededor de la diagonal principal. La matriz en cuestión tiene un ancho de banda de 3, y recibe un nombre especial. Matriz tridiagonal. E. T. S. I. Caminos, Canales y Puertos Semiancho de banda 6 Sistemas de ecuaciones Producto matricial: • Dimensiones del resultado Representación matricial de un sistema. E. T. S. I. Caminos, Canales y Puertos 7 Sistemas de ecuaciones • Resolución gráfica: los sistemas de ecuaciones son hiperplanos (rectas, planos,…). La solución de un sistema es por tanto la intersección de esos hiperplanos. Sistema compatible determinado, vectores linealmente independientes. Solución única. Determinante de A distinto de cero. E. T. S. I. Caminos, Canales y Puertos 8 Sistemas de ecuaciones Sistema incompatible, vectores linealmente dependientes. Determinante de A igual a cero. No existe solución. Sistema compatible indeterminado, vectores linealmente dependientes. Determinante de A igual a cero. Existen infinitas soluciones. E. T. S. I. Caminos, Canales y Puertos 9 Sistemas de ecuaciones Sistema compatible determinado, vectores linealmente independientes. Determinante de A distinto de cero pero muy cercano a cero. Existe solución, pero no de forma clara. Por eso en un problema mal condicionado que produce errores numéricos. E. T. S. I. Caminos, Canales y Puertos 10 Sistemas de ecuaciones • Método de eliminación de Gauss simple- el método de Gauss comprende dos fases: eliminación hacia delante de las incógnitas para reducir el sistema (matriz A) en uno triangular superior. Ecuación pivote resto pivote • Primero elimino la incógnita x1. Para ello multiplico la primera fila por -a21/a11 y se la sumo a la segunda. Y así sucesivamente con todas las filas (n-1 veces) hasta que sólo la primera ecuación tenga la incógnita x1. E. T. S. I. Caminos, Canales y Puertos 11 Sistemas de ecuaciones • Repito esta operación con todas variables xi, hasta que obtengo una matriz triangular superior. • A continuación resuelvo el sistema por sustitución hacia atrás. • El número de operaciones (FLOPS) que se realizan con el método de Gauss son: Paso 1 E. T. S. I. Caminos, Canales y Puertos Paso 2 12 Sistemas de ecuaciones • • • De aquí se sacan dos conclusiones: 1. Cuando el sistema aumenta de tamaño el tiempo de resolución aumenta considerablemente. 2. El esfuerzo de mejora se ha de centrar en el proceso de eliminación. Problemas del método de Gauss: 1. Si el elemento pivote es cero, se produce una división por cero. 2. Conforme aumenta el tamaño del sistema (n>100) aumentan los errores de redondeo por el gran incremento de operaciones a realizar. Técnicas para mejorar las soluciones: 1. Uso de doble precisión en los cálculos. 2. Uno de los problemas de la técnica de Gauss es que el elemento pivote sea cero, o cercano a cero. Ya que esto puede producir errores de redondeo. Por eso es ventajoso determinar el coeficiente más grande disponible debajo de la columna pivote, e intercambiar filas para que este elemento sea el pivote. E. T. S. I. Caminos, Canales y Puertos 13 Sistemas de ecuaciones Esto se conoce como pivoteo parcial. Si además de buscar elemento más grande por filas, lo hago también por columnas se conoce como pivoteo total. Normalmente no se hace pivoteo total porque introduce una gran complejidad en el método. 3. Escalamiento, si antes de realizar el pivoteo normalizo los elementos por el elemento máximo de la fila pivote, minimizo los errores de redondeo. Esto es conveniente en determinados problemas de ingeniería en los que se usan unidades diferentes en cálculos simultáneos. Un problema añadido del escalamiento es que puede introducir errores de redondeo por si mismo, por lo que es habitual hacer un escalamiento simulado de la fila pivote. Con el valor del pivote temporal obtenido realizo el pivoteo parcial, y si tengo que intercambiar filas lo hago con la fila original de antes del escalado. A continuación se explica el pseudocódigo para implementar el método de Gauss con pivotaje parcialmente escalado. • • • E. T. S. I. Caminos, Canales y Puertos 14 Sistemas de ecuaciones • • • • • Entrada: matriz de coeficientes a(n,n), y vector de términos independientes b(n). Paso 1: Almacene en un vector s(n) los valores máximos de cada fila (ecuación) Paso 2: Para k=1, …, n-1 hacer los pasos 3-8. (Eliminación) – Paso 3: Para j=k, …, n. Determino en la columna k, el mayor valor del cociente a(j,k)/s(j). Si el cociente es menor que una tolerancia prefijada el sistema es singular o mal condicionado, salir – Paso 4: Si k distinto de j, intercambio las filas para el proceso de eliminación – Paso 5: para i=k+1, …, n hacer los pasos 6-8 • Paso 6: Calcular el coeficiente para pivotar m=a(i,k)/a(k,k) • Paso 7: Para j=k+1, …, n a(i,j)=a(i,j)-m*a(k,j) • Paso 8: b(i)=b(i)-m*b(k) Paso 9: Si a(n,n)=0, no existe solución única. Salir. Paso 10: De i=n-1, …,1 sustitución hacia atrás. x(n)=b(n)/a(n,n) – Paso 11: De j=i+1,n b(i)=b(i)-a(i,j)*x(j) – Paso 12: x(i)=b(i)/a(i,i). Salida del resultado x. E. T. S. I. Caminos, Canales y Puertos 15 Sistemas de ecuaciones • • • Método de Gauss-Jordan- el método de Gauss-Jordan es una variación del método de Gauss. La principal diferencia es que en este método cada vez que se realiza el paso de eliminación, se hace con todas las ecuaciones, no sólo con las de debajo de la fila pivote. Además, ésta también se normaliza. El resultado es una matriz unidad, en vez de una triangular superior. Y la solución del sistema queda directamente almacenada en el vector b transformado. Todo lo relativo a mejoras es igual que en el método de Gauss. Pero el problema de este método es que requiere aproximadamente un 50% más de operaciones, por lo que se prefiere el de Gauss como método de eliminación. Los dos métodos que hemos visto están encuadrados dentro los llamados métodos de eliminación. Pasaremos a continuación a describir una serie de técnicas que se llaman de descomposición. E. T. S. I. Caminos, Canales y Puertos 16 Sistemas de ecuaciones • Descomposición LU- la descomposición LU es un método que se ayuda de las técnicas de eliminación para transformar la matriz A en un producto de matrices triangulares. Esto es especialmente útil para la resolución de sistemas con diferentes vectores b, ya que la descomposición de A me sirve para evaluar de forma eficiente por sustitución hacia delante y hacia atrás todos los sistemas. A = L U E. T. S. I. Caminos, Canales y Puertos 17 Sistemas de ecuaciones A = L U Descomposición U X = D Sustitución A X = B Sistema inicial L U X = B Sistema transformado 1 L D = B Sistema transformado 2 X Sustitución hacia atrás D Sustitución hacia adelante E. T. S. I. Caminos, Canales y Puertos 18 Sistemas de ecuaciones • • La descomposición LU está muy relacionada con el método de Gauss, ya que en éste último el objetivo era transformar el sistema en uno triangular superior, que es uno de los objetivos de la descomposición LU. Por tanto, sólo queda saber de donde obtenemos la matriz triangular inferior. Paradójicamente, durante el proceso de eliminación de Gauss se obtiene la matriz L, pero pasa desapercibida y no se utiliza. Si recordamos, cuando realizamos el proceso de pivoteo, multiplicamos la fila pivote por un factor, y posteriormente se lo restábamos a la fila que queríamos transformar. Ese factor una vez usado se perdía. Pues bien, colocando convenientemente esos factores, se obtiene la matriz L. resto E. T. S. I. Caminos, Canales y Puertos 19 Sistemas de ecuaciones resto resto E. T. S. I. Caminos, Canales y Puertos 20 Sistemas de ecuaciones • El algoritmo de descomposición LU requiere menos FLOPS que Gauss porque no trabaja con el vector b. • La fase de sustitución si que requiere mayor esfuerzo, ya que hay que hacer sustitución hacia delante y hacia atrás. Por tanto, en el cómputo global el número de operaciones es el mismo que el de Gauss. E. T. S. I. Caminos, Canales y Puertos 21 Sistemas de ecuaciones • • • Los mismos problemas que se planteaban en Gauss surgen en la descomposición LU, y la forma de resolverlos es exactamente la misma. Hay dos tipos de descomposición LU, la de Doolittle, en la que la matriz L tiene los unos sobre la diagonal (la que hemos visto). Y la de Crout, en la que es la matriz U la que tiene los unos sobre la diagonal. Aunque hay algunas diferencias entre estas aproximaciones, su comportamiento es comparable. El pseudocódigo de la descomposición LU, es muy similar a la descomposición de Gauss, pero tiene 4 características que vale la pena mencionar: – Los factores de la fase de eliminación se guardan en la parte inferior de la matriz. – Mantiene el pivoteo pero sin intercambio de filas, disponemos de un vector con el orden de pivoteo. – Las ecuaciones no están escaladas pero se usan valores escalados para determinar la fila pivote. – Se controla el término de la diagonal principal para comprobar si la matriz es singular o está mal condicionada. E. T. S. I. Caminos, Canales y Puertos 22 Sistemas de ecuaciones • • • • • • • Entrada: matriz de coeficientes a(n,n), y vector de términos independientes b(n). Paso 1: Almacene en un vector s(n) los valores máximos de cada fila (ecuación), y en o(n) el orden inicial de las ecuaciones. Paso 2: Para k=1, …, n-1 hacer los pasos 3-7. (Eliminación) – Paso 3: Para j=k, …, n. Determino en la columna k, el mayor valor del cociente a(o(j),k)/s(o(j)). Si el cociente es menor que una tolerancia prefijada el sistema es singular o mal condicionado, salir – Paso 4: Si k distinto de j, intercambio los elementos del vector o. – Paso 5: para i=k+1, …, n hacer los pasos 6-7 • Paso 6: Calcular el coeficiente para pivotar m=a(o(i),k)/a(o(k),k), y lo almaceno en a(o(i),k). • Paso 7: Para j=k+1, …, n a(o(i),j)=a(o(i),j)-m*a(o(k),j) Paso 8: Si a(n,n)=0, no existe solución única. Salir Paso 10: Se obtiene la matriz P, y se cambia la A=P*A. Lo mismo con B=P*B. Paso 11: De i=2, …,n sustitución hacia adelante. d(1)=b(1) – Paso 12: De j=1,i-1 b(i)=b(i)-a(i,j)*b(j) Paso 13: De i=n-1, …,1 sustitución hacia atrás. x(n)=b(n)/a(n,n) – Paso 14: De j=i+1,n b(i)=b(i)-a(i,j)*x(j) – Paso 15: x(i)=b(i)/a(i,i). Salida del resultado x. E. T. S. I. Caminos, Canales y Puertos 23 Sistemas de ecuaciones • Inversa: una de las ventajas de la descomposición LU, es que se puede hacer el cálculo de la inversa de una forma muy sencilla. E. T. S. I. Caminos, Canales y Puertos 24 Sistemas de ecuaciones • • • Por tanto lo que se hace es realizar la descomposición LU de la matriz A, y resolver n subsistemas por sustitución hacia delante y hacia atrás. En cada uno de estos subsistemas el vector de términos independientes es la i-ésima columna de la matriz identidad. La interpretación física de la inversa es muy clarificadora. La mayoría de los sistemas lineales usados en ingeniería se derivan de las leyes de conservación, y la expresión matemática de esas leyes es un balance para asegurar la conservación de una determinada propiedad (masa, fuerza, energía, …). Así por ejemplo en una estructura, tendríamos el balance de fuerzas en cada nodo. Para un balance de masa podría ser la masa que hay en cada reactor de un proceso químico,… Si escribimos una ecuación simple de balance para cada una de las partes que componen el sistema, obtendríamos un conjunto de ecuaciones que definen el comportamiento de la propiedad para todo el sistema. Estas ecuaciones además están interrelacionadas ya que los componentes interactúan entre ellos. Por tanto el vector X incógnita representa el valor de la propiedad tratada en cada parte del sistema. Y el vector B contiene los elementos del balance independientes del sistema, es decir los estímulos externos. E. T. S. I. Caminos, Canales y Puertos 25 Sistemas de ecuaciones • Si calculamos la inversa del sistema, es decir de la matriz A se obtiene un resultado muy interesante. • Además de calcular el valor de la propiedad estudiada en los elementos del sistema, cada elemento aik-1 representa el valor de la propiedad, o la respuesta del sistema en el elemento i, cuando otra parte del sistema, el elemento k recibe un estímulo exterior unitario. E. T. S. I. Caminos, Canales y Puertos 26 Sistemas de ecuaciones • • Además, como las formulaciones son lineales se puede aplicar: – Principio de superposición, que implica que si un sistema está sometido a distintos estímulos, se pueden obtener las respuestas individualmente y posteriormente sumarlas. – Proporcionalidad, que supone que si multiplicamos un estímulo por una cantidad fija, los resultados del sistema se multiplican por esa cantidad. La inversa, además nos proporciona un medio para discernir si un sistema está mal condicionado: – Escalando la matriz A de forma que el elemento mayor sea igual a 1. Se invierte la matriz escalada y si hay elementos de la matriz A-1 de varios órdenes de magnitud mayor que la unidad, es probable que el sistema esté mal condicionado. – Multiplicar la inversa por la matriz A original, y comprobar si el resultado está lo suficientemente cercano a la matriz identidad. – Invertir la matriz inversa y estimar si el resultado está lo suficientemente cercano a la matriz original A. E. T. S. I. Caminos, Canales y Puertos 27 Sistemas de ecuaciones • • Sin embargo, sería preferible obtener una medida más simple para conocer el condicionamiento de un sistema. Esto se hace mediante las normas matriciales. Normas matriciales, son funciones de valor real que proporcionan una medida del tamaño o longitud de un vector. – Normas Euclidianas Frobenius – Normas p, así la norma 2 es igual a la Euclidiana – Norma vector-uniforme o de magnitud-máxima E. T. S. I. Caminos, Canales y Puertos 28 Sistemas de ecuaciones – Norma de fila-suma – Norma de columna-suma • Número de condición de una matriz es el valor • Este número será mayor o igual que uno, y se puede demostrar que se cumple: E. T. S. I. Caminos, Canales y Puertos 29 Sistemas de ecuaciones • Que implica que el error relativo en la norma del vector calculado X puede ser tan grande como el error relativo de la norma de los coeficientes de A multiplicada por el número de condición. Por tanto cuanto mayor sea el número condición mayores pueden ser los errores en la solución calculada y el sistema estará mal condicionado. E. T. S. I. Caminos, Canales y Puertos 30 Sistemas de ecuaciones • • Como hemos visto, la interpretación de los sistemas de ecuaciones en ingeniería es clara. Tratan de resolver balances de magnitudes que queremos estudiar, y que actúan y se relacionan en un conjunto interconectado de elementos. Por tanto si bien la actuación de un estímulo sobre uno de los componentes puede actuar sobre todos los demás, el cálculo de esa afección no se efectúa directamente entre el elemento afectado, y el elemento en el que deseamos conocer la respuesta. Sino que se produce un mecanismo de transferencia de información entre los componentes. Esto que en principio puede parecer complicado tiene una interpretación lógica y sencilla. Supongamos que tenemos un sistema de ecuaciones que simula el comportamiento de una estructura articulada 4 2 1 1 E. T. S. I. Caminos, Canales y Puertos 3 2 4 7 5 3 5 6 31 Sistemas de ecuaciones • • • • Tiene 5 nodos, y 7 barras. Si actúa una carga externa vertical sobre el nodo 2, el sistema va a reaccionar y todos los componentes o muchos de ellos se verán influenciados. Pero por ejemplo para calcular la reacción vertical en el nodo 5, no hay una conexión directa entre este nodo y el 2, sino que recibe la influencia por medio de los nodos 3 y 4, que están conectados al 5 por las barras 6 y 7. A su vez los nodos 3 y 4 reciben la influencia directa de los nodos 1 y 2, y el 1 la influencia del 2. Por tanto se aprecia como se establece un mecanismo de transferencia interno. Esta cualidad se traduce en los sistemas de ecuaciones que modelizan el comportamiento de sistemas físicos, en que las matrices A tienen forma bandeada, con muchos ceros en las ecuaciones, ya que la influencia directa de unos elementos sobre otros es limitada. Otra ventaja adicional es que debido al teorema de Maxwell o de reciprocidad, la influencia directa de un elemento sobre otro es la misma que la que ejercería éste último sobre el primero. Que se traduce en que la mayoría de los sistemas que tenemos que resolver son simétricos. E. T. S. I. Caminos, Canales y Puertos 32 Sistemas de ecuaciones • BW y HBW designan el ancho de banda y el semiancho de banda. HBW+1 Diagonal principal HBW ceros BW ceros E. T. S. I. Caminos, Canales y Puertos 33 Sistemas de ecuaciones • • • A simple vista queda claro que esta disposición facilita, por medio de técnicas especiales, la resolución de los sistemas de una forma más efectiva que si la matriz fuera completa. Sistemas tridiagonales- aquellos cuyo ancho de banda es 3 La numeración permite un almacenaje mucho más efectivo. En cuanto a la resolución se utiliza el algoritmo de Thomas, adaptación de la descomposición LU para este caso. E. T. S. I. Caminos, Canales y Puertos 34 Sistemas de ecuaciones • Algoritmo: – – – Descomposición: de k=2,…,n. e(k)= e(k)/f(k-1) y f(k)=f(k)-e(k)g(k-1) Sustitución hacia delante: de k=2,…,n r(k)= r(k)-e(k)r(k-1) Sustitución hacia atrás: x(n)=r(n)/f(n) de k=n-1,…,1 x(k)=(r(k)g(k)x(k+1))/f(k) Forma compacta del sistema E. T. S. I. Caminos, Canales y Puertos 35 Sistemas de ecuaciones • Descomposición de Cholesky- esta técnica se usa en el caso de que la matriz A sea simétrica, que como hemos dicho antes se da en muchas ocasiones en los problemas de ingeniería. Se basa en el hecho de que cualquier matriz simétrica se puede descomponer como • Multiplicando e igualando entre si los términos tenemos E. T. S. I. Caminos, Canales y Puertos 36 Sistemas de ecuaciones • • • • • Entrada: matriz de coeficientes a(n,n), simétrica y definida positiva . Paso 1: Genero la primera fila de la matriz triangular superior solución L. L(1,1)=sqrt(a(1,1)), para k=2,…,n, L(1,k)= a(1,k)/L(1,1). Paso 2: Para i=1, …, n-1 hacer los pasos 3-4. – Paso 3: Para k=1, …, i-1. Acumulo el siguiente sumatorio L(i,i)= L(i,i)L(k,i)^2. Si el valor de L(i,i)<0, la matriz a no es definida positiva, se sale del programa. Sino, L(i,i)=sqrt(L(i,i)). – Paso 4:Para j=i+1,…,n, para k=1,…,i-1, acumula en L(i,j)=a(i,j)L(k,i)*L(k,j), después del k, divide L(i,j)= L(i,j)/L(i,i). Paso 6: calculamos L(n,n), paso 3 con i=n. Salida: una matriz triangular superior L, si la multiplicamos L’*L obtenemos a. E. T. S. I. Caminos, Canales y Puertos 37 Sistemas de ecuaciones • La descomposición de Cholesky, sólo se puede aplicar para matrices simétricas y definidas positivas. Es decir tales que: • Para todos los vectores X distintos de cero. Si se cumple, no se dará el caso de obtener una raíz negativa durante la ejecución del programa. Por tanto si se da es porque la matriz A no es definida positiva. Otra ventaja de las matrices definidas positivas es que no requiere el pivoteo para evitar divisiones por cero. Por lo que se puede implementar el algoritmo sin la complicación del pivoteo. E. T. S. I. Caminos, Canales y Puertos 38 Sistemas de ecuaciones • • Métodos iterativos: son una alternativa a los métodos de eliminación, y son muy similares a los métodos usados para la obtención de raíces de una ecuación simple. Método de Gauss-Seidel-es el más comúnmente usado E. T. S. I. Caminos, Canales y Puertos 39 Sistemas de ecuaciones • Por tanto el método comienza con un valor de las variables xi=0, entro en la primera ecuación y despejo x1. Con este valor de x1, entro en la segunda, obtengo una aproximación de x2. Con estos valores entro en la tercera, y así sucesivamente hasta que la solución converja lo suficiente. Esto se logra comprobando en una pasada completa por todo el sistema que el mayor valor del error aproximado relativo sea menor que un valor epsilon prefijado. • Un planteamiento alternativo es el método de Jacobi, lo que hace es calcular un conjunto de valores aproximados para todo el vector x, y con ese valor entra en la siguiente iteración. Aún así el método de Gauss-Seidel funciona mejor. E. T. S. I. Caminos, Canales y Puertos 40 Sistemas de ecuaciones Gauss-Seidel Primera iteración Jacobi Segunda iteración E. T. S. I. Caminos, Canales y Puertos 41 Sistemas de ecuaciones • Convergencia del método- para que el método converja es condición necesaria que los sistemas sean diagonalmente dominantes, que por suerte en ingeniería son los más abundantes. E. T. S. I. Caminos, Canales y Puertos 42 Sistemas de ecuaciones • Una manera de acelerar la convergancia del método de Gauss-Seidel es usando la relajación. Esto es modificando el valor nuevo con un promedio ponderado. • Lambda es un factor entre 0 y 2. Si lambda es igual a uno el resultado no se modifica. Si es menor que 1, el resultado es un promedio del resultado antiguo y el nuevo (subrelajación), se emplea para que un sistema no convergente converja, u amortigüe sus oscilaciones. Si lambda es mayor que 1, se da una ponderación extra al nuevo valor (sobrerrelajación) con lo que los sistemas convergentes aceleran su convergencia. E. T. S. I. Caminos, Canales y Puertos 43 Sistemas de ecuaciones • • • Entrada: matriz de coeficientes a(n,n), y vector de términos independientes b(n). Número máximo de iteraciones (niter), error relativo máximo (es), parámetro para la relajación (lambda). Como solución inicial tomamos x=(0,…,0)T. Paso 1: Normalizo todas la ecuaciones dividiendo sus elementos por el elemento que está en la diagonal principal. Para i=1,…,n dummy=a(i,i), b(i)=b(i)/dummy, para j=1,…,n, a(i,j)= a(i,j)/dummy, Paso 2: Mientras iter sea menor niter y sentinel=0 hacer los pasos 3-6. – Paso 3: sentinel=1. – Paso 4: Para i=1, …, n. old=x(i), x(i)=b(i), de j=1,…n, si i distinto de j, x(i)=x(i)-a(i,j)*x(j). Salgo del j, x(i)=x(i)*lambda+(1-lambda)*old – Paso 5: Si sentinel =1, y x(i) distinto de cero • • ea=abs((x(i)-old)/x(i)), si ea>es entonces sentinel=0. – Paso 6: iter=iter+1. Salida: el vector x solución del sistema. E. T. S. I. Caminos, Canales y Puertos 44