Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Descomposición LU de una Matriz en Python: Programa para factorizar matriz en LU, Ejercicios de Cálculo

En este documento, el autor explica cómo descomponer una matriz cuadrada en factores LU (Triangular Superior y Triangular Inferior) mediante un programa escrito en Python. El autor también explica cómo utilizar las matrices LU para resolver sistemas de ecuaciones lineales. El texto incluye un ejemplo de descomposición LU y su aplicación para resolver un sistema de ecuaciones.

Tipo: Ejercicios

2019/2020

Subido el 05/07/2020

joseph-cruz-1
joseph-cruz-1 🇵🇪

2 documentos

1 / 7

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Descomposición L/U de una Matriz en Python (Programa anexo)
Por: KnX.
"Esto es sin duda cierto, es absolutamente paradójico, no podemos comprenderlo y no sabemos lo que significa, pero lo
hemos demostrado y, por lo tanto, sabemos que debe ser verdad."
Charles Sanders Peirce
Aparentemente las matemáticas son así, aveces nos es difícil comprenderlas y aunque han
estado a nuestro lado toda la vida las ignoramos. Ya ha pasado un tiempo desde que me he alejado
parcialmente (no puedes evitarlo, siempre están allí) del mundo matemático para dedicarme en su
gran mayoría concretamente a la informática, sin embargo, los 3 años que estube dedicado a ella
logre adquirir una visión yo diría privilegiada de como se ve la matemática desde un punto de vista
matemático y menos calculista. Digo menos calculista porque como muchos se estarán de acuerdo
conmigo las matemáticas más que un grupo de números es una forma de pensar.
No es mi intención hacer un ensayo de las matemáticas ni mucho menos, concentremonos ahora en
el tema en si de este post.
Buscando en mis ficheros no etiquetados me he encontrado con este programa que desarrolle
hace un tiempo atrás , se trata de un programa que escribí en Python para descomponer una matriz
de números en sus factores LU. ¿Qué?, bueno voy tratar de explicarlo en breves palabras quizá a
alguien le es de utilidad.
Supongamos una matriz
B
pero que sea cuadrada, vale decir el mismo numero de filas y
de columnas escribamos esta matriz como producto de dos matrices las que llamaremos L y U
respectivamente (ya explicaré más abajo porque se eligió estos nombres) entonces:
B=
[
421
5 1 1
1 2 4
]
por ejemplo
B=LU
Siendo B una matriz no singular, vale decir B es invertible y el determinante de B es no nulo.
La idea es ahora descomponer esta matriz en otras 2 matrices una triangular superior (Upper)y otra
triangular inferior(Lower), en consecuencia sería :
B=
[
421
5 1 1
1 2 4
]
=
[
1 0 0
L
12
1 0
L
13
L
23
1
]
[
U
11
U
12
U
13
0U
22
U
23
0 0 U
33
]
Supongamos ahora que tenemos un sistema de ecuaciones lineales de la forma
BX=b
entonces podemos expresarlo de la forma
LUX=b
WWW.LACOSOX.ORG
pf3
pf4
pf5

Vista previa parcial del texto

¡Descarga Descomposición LU de una Matriz en Python: Programa para factorizar matriz en LU y más Ejercicios en PDF de Cálculo solo en Docsity!

Descomposición L/U de una Matriz en Python (Programa anexo)

Por: KnX. "Esto es sin duda cierto, es absolutamente paradójico, no podemos comprenderlo y no sabemos lo que significa, pero lo hemos demostrado y, por lo tanto, sabemos que debe ser verdad." Charles Sanders Peirce Aparentemente las matemáticas son así, aveces nos es difícil comprenderlas y aunque han estado a nuestro lado toda la vida las ignoramos. Ya ha pasado un tiempo desde que me he alejado parcialmente (no puedes evitarlo, siempre están allí) del mundo matemático para dedicarme en su gran mayoría concretamente a la informática, sin embargo, los 3 años que estube dedicado a ella logre adquirir una visión yo diría privilegiada de como se ve la matemática desde un punto de vista matemático y menos calculista. Digo menos calculista porque como muchos se estarán de acuerdo conmigo las matemáticas más que un grupo de números es una forma de pensar. No es mi intención hacer un ensayo de las matemáticas ni mucho menos, concentremonos ahora en el tema en si de este post. Buscando en mis ficheros no etiquetados me he encontrado con este programa que desarrolle hace un tiempo atrás , se trata de un programa que escribí en Python para descomponer una matriz de números en sus factores LU. ¿Qué?, bueno voy tratar de explicarlo en breves palabras quizá a alguien le es de utilidad. Supongamos una matriz B pero que sea cuadrada, vale decir el mismo numero de filas y de columnas escribamos esta matriz como producto de dos matrices las que llamaremos L y U respectivamente (ya explicaré más abajo porque se eligió estos nombres) entonces: B =

[

1 2 − 4 ]^

por ejemploB = LU Siendo B una matriz no singular, vale decir B es invertible y el determinante de B es no nulo. La idea es ahora descomponer esta matriz en otras 2 matrices una triangular superior ( U pper)y otra triangular inferior( L ower), en consecuencia sería : B =

[

1 2 − 4 ]

[

L 12 1 0

L 13 L 23 1 ]

[

U 11 U 12 U 13

0 U 22 U 23

0 0 U 33 ]

Supongamos ahora que tenemos un sistema de ecuaciones lineales de la forma BX = b entonces podemos expresarlo de la forma LUX = b

Lo que no nos alterará la ecuación. Ahora bien una vez que tengamos estas matrices podemos usar las siguientes reglas para resolver el sistema :

**1. Obtener la matriz triangular inferior L y la matriz triangular superior U.

  1. Resolver Ly = b (para encontrar y).
  2. El resultado del paso anterior se guarda en una matriz nueva de nombre “y”.
  3. Realizar Ux = y (para encontrar x).
  4. El resultado del paso anterior se almacena en una matriz nueva llamada “x”, la cual** brinda los valores correspondientes a las incógnitas de la ecuación. Lo cúal se simplificara por el hecho de ser matrices triangulares superiores e inferiores resolverremos por un simple reemplazo y tendremos el resultado del sistema. Ahora bien , nos queda ya bastante claro que la complejidad se encuentra en encontrar dichas matrices L y U, para ello se realiza un proceso iterativo con pivotes. Esto es exactamente lo que hace el programa !!!, dada una matriz A encuentra su correspondiente L y U haciendo el proceso iterativo del pivote. Les dejo acá un ejemplo hecho a mano y de lo que realiza el programa automáticamente para que se les aclare su utilidad. Parece que no fue tan breve después de todo no ?. EJEMPLO 1 DE DESCOMPOSICIÓN LU(Autor: Jaime Montoya) PROBLEMA: Encontrar los valores de x1, x 2 y x 3 para el siguiente sistema de ecuaciones: NOTA: Recuérdese que si la matriz es 2x2 se hará 1 iteración; si es 3x3, 2 iteraciones; si es 4x4, 3 iteraciones; y así sucesivamente. SOLUCIÓN:

factor 3 = (u 32 / u 22 ) = 2.5 / 3.5 = 0. Encontrando [U] fila 3 = - (factor 3) * (fila 2) + (fila 3) a 31 = - (2.5 / 3.5) * (0) + (0) = 0 a 32 = - (2.5 / 3.5) * (3.5) + (2.5) = 0 a 33 = - (2.5 / 3.5) * (0.25) + (- 0.75) = - 0. 4 - 2 - 1 [U] = 0 3.5 0. 0 0 - 0. Encontrando [L] 1 0 0 [L] = 1.25 1 0 0.25 0.7142857143 1 Ahora ya se tiene la matriz [U] y la matriz [L]. El siguiente paso es resolver Ly = b para encontrar la matriz y. En pocas palabras es como que se pidiera resolver el siguiente sistema de ecuaciones, encontrando los valores de y 1 , y 2 y y 3 : Al resolver el sistema anterior, se obtienen los siguientes valores para y 1 , y 2 y y 3 :

El último paso es resolver Ux = y para encontrar la matriz x. En otras palabras es como que se pidiera resolver el siguiente sistema de ecuaciones, encontrando los valores de x 1 , x 2 y x 3 :