Post on 31-Dec-2014
Índice de términos.
i.i. Lower: inferior.i.ii. Upper: superior.Índice de figuras.
Figura i.i. Matriz cuadrada, es decir una matriz con el número de columnas igual al número de renglones.Figura i.ii. Las matrices [L] y [U] son resultado del proceso del método de LU.Figura i.iii. La multiplicación de las matrices [L] y [U] dan como resultado la matriz [A].Figura i.iv. Diagrama de flujo del método de LU.
Figura i.v. Diagrama de flujo del método de Cholesky.
Figura i.vi. Programa en código C, mostrando la descomposición de una matriz, utilizando el ejemplo número cinco del método de LU.
Figura i.vii. Programa en código C, mostrando la resolución de un sistema de ecuaciones, utilizando el ejemplo número cinco del método de Cholesky.
Resumen
El empleo de métodos numéricos es indispensable para encontrar la respuesta a un problema, pero no todo se basa en el tiempo, hay factores que ocasionan problemas, como lo son la interacción de ciertos materiales, fuerzas.
Objetivo general.
Introducción.
Una matriz simétrica definida positiva puede ser descompuesta como el producto de una matriz triangular inferior y la traspuesta de la matriz triangular inferior. La matriz triangular inferior es el triángulo de Cholesky de la matriz original positiva definida. El resultado de Cholesky ha sido extendido a matrices con entradas complejas. Es una manera de resolver sistemas de ecuaciones matriciales y se deriva de la factorización LU con una pequeña variación.
Cualquier matriz cuadrada A con pivotes no nulos puede ser escrita como el producto de una matriz triangular inferior L y una matriz triangular superior U; esto recibe el nombre de factorización LU. Sin embargo, si A es simétrica y definida positiva, se pueden escoger los factores tales que U es la transpuesta de L, y esto se llama la descomposición o factorización de Cholesky. Tanto la descomposición LU como la descomposición de Cholesky son usadas para resolver sistemas de ecuaciones lineales. Cuando es aplicable, la descomposición de Cholesky es dos veces más eficiente que la descomposición LU.
Marco teorico.
Método de LU y Cholesky.
Son métodos similares para encontrar respuestas a variables que sirven para describir que pasa en cierto punto o área, como una fuerza, presión o temperatura o para establecer un sistema en equilibrio.
Método de Lu.
Su nombre se deriva de las palabras inglesas “Lower" y “Upper”. Estudiando el proceso que se sigue en la descomposición LU es posible comprender el porqué de este nombre, analizando cómo una matriz original se descompone en dos matrices triangulares, una superior y otra inferior. La descomposición LU involucra solo operaciones sobre los coeficientes de la matriz [A], proporcionando un medio eficiente para calcular la matriz inversa o resolver sistemas de álgebra lineal. Primeramente se debe obtener la matriz [L] y la matriz [U]. [L] es una matriz diagonal inferior con números 1 sobre la diagonal. [U] es una matriz diagonal superior en la que sobre la diagonal no necesariamente tiene que haber números 1.El primer paso es descomponer o transformar [A] en [L] y [U], es decir obtener la matriz triangular inferior [L] y la matriz triangular superior [U].
Figura 1.1.
Pasos para encontrar la matriz triangular superior (matriz [U])
1. Hacer cero todos los valores abajo del pivote sin convertir este en 1.2. Para lograr lo anterior se requiere obtener un factor el cual es necesario
para convertir a cero los valores abajo del pivote.3. Dicho factor es igual al número que se desea convertir en cero entre el
número pivote. Este factor multiplicado por -1 se multiplica luego por el pivote y a ese resultado se le suma el valor que se encuentra en la posición a cambiar (el valor en la posición que se convertirá en cero).
Pasos para encontrar la matriz triangular inferior (matriz [L])
Para encontrar la matriz triangular inferior se busca hacer ceros los valores de arriba de cada pivote, así como también convertir en 1 cada pivote. Se utiliza el mismo concepto de “factor” explicado anteriormente y se ubican todos los “factores” debajo dela diagonal según corresponda en cada uno. Esquemáticamente se busca lo de siguiente:
Figura 1.2.
Debido a que [A] = [L] [U], al encontrar [L] y [U] a partir de [A] no se altera en nada la ecuación y se tiene lo siguiente:
Figura 1.3.
Por lo tanto, si Ax=b, entonces LUx=b, de manera que Ax=LUx=b.
Pasos para resolver un sistema de ecuaciones por el método de LU .
1. Obtener la matriz triangular inferior L y la matriz triangular superior U.2. Resolver Ly=b(para encontrar y).3. El resultado del paso anterior se guarda en una matriz nueva de nombre “y”.4. RealizarUx= y (para encontrar x).5. 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.
Método de Cholesky
Cuando se tiene una matriz a coeficientes reales, simétrica y definida positiva, entonces se dispone de una factorización de tipo LU especial, donde U = LT. El método de Cholesky es el que aprovecha la ventaja de la simetría de A para encontrar una matriz L tal que A = L LT. Esta descomposición es única.Si A = L LT, el sistema original A x = b se puede escribir como:
Este método tiene un planteo recursivo, en el que se descomponen sucesivamente los menores principales de la matriz A. Se llamará A[m] a los menores principales de orden m. Se empieza por el menor principal de orden 1,
luego el de orden 2 y así sucesivamente hasta el de orden n, es decir la matriz original. La incógnita es una única matriz triangular inferior L, y su transpuesta hace de matriz triangular superior.
Suponiendo ahora descompuesto el menor de orden k, es decir A[k]= L[k] U[k], interesa estudiar cómo se descompone el siguiente menor principal A[k+1]. Así,A [k+1] = L [k+1] U [k+1]
Donde f [k+1] = (ak+1 1, ak+1 2, ak+1 3, . . ., ak+1 k)T, y l[k+1] = (lk+1 1, lk+1 2, lk+1 3, . . ., lk+1 k)T
Tras proceder a multiplicar L [k+1] y U [k+1], se obtienen las ecuaciones necesarias para la descomposición del menor principal A [k+1]: L[k] l[k+1] = f[k+1]
El algoritmo que permite obtener la matriz L, a partir de A se escribe a partir de las siguientes expresiones:
Ejemplo 1 del método de CholeskyResolver el siguiente sistema de ecuaciones lineales usando el método de Cholesky
A = [ 6 15 5515 55 22555 225 979 ]
y C= [100150100 ]
En el método de Cholesky el primer paso es encontrar la matriz L usando las fórmulas
lki=aki−∑
j=1
i−1
lij lkj
lii Y lkk=√akk−∑
j=1
k−1
lkj2
La primera ecuación se usa para elementos fuera de la diagonal y la segunda para elementos en la diagonal principal.
Entonces.
l11=√a11=√6 = 2.4495l21=
a21l11
=152 .4495 = 6.1237
l21=a31l11
=552 .4495 = 22.454 Ya sabemos que l12 = 0
l22=√a22−l212 =√55−6 .12372= 4.1833
l32=a32−l21 l31l22
=55−(6 .1237 )(22 .454 )
4 .1833 = 20.916
De igual forma l13 = l23 = 0 y
l33=√a33−( l312 + l32
2 )=√979−(22.4542+20.9162)= 6.1106
La matriz L es igual a
L=[2 .4495 0 06 .1237 4 .1833 022.454 20 .916 6 .1106 ]
En el método de Cholesky U = LT
U=[2 .4495 6 .1237 22 .4540 4 .1833 20 .9160 0 6 .1106 ]
El siguiente paso es encontrar el vector D de la misma manera que en el método de descomposición de LU
d i=ci−∑
j=1
i−1
lijd j
lii
d1=c1l11
=1002 .4495 =40.8246
d2=c2−l21d1l22
=150−(6 .1237)( 40 .8246 )
4 .1833 =-23.9045
d3=c3−( l31d1+ l32d2 )
l33=100−((22 .454 )(40 .8246)+(20.916 )(−23 .9045 )
6 .1106 =-51.826
Finalmente se calcula el vector de incógnitas comenzando por la última x.
x i=d i− ∑
j=i+1
n
uij x j
uii
x3=d3u33 =-8.481
x2=d2−u23 x3u22 =
[−23.9045−(20.916)(−8.481)]4.1833 = 36.69897
x1=d1−(u12 x2+u13 x3 )
u11 = [40.8246 – ((6.1237)(36.69)+(22.454 )(−8.481))]
2.4495 = 2.685
Ejemplo 2 del método de Cholesky
(4 1 21 2 02 0 5)(
x1x2x3
)=(124)l11=2 l21=0.5 l31=1 l22=1.3229 l32=−0.3779 l33=1.9639
( 2 0 00.5 1.3229 01 −0.3779 1.6939)(
y1y2y3
)=(124)y1=0.5
y2=2−(0.5)(0.5)1.3229
=1.3228
y3=4−0.5+(0.3779)(1.3228)
1.6939=2.3613
(2 0.5 10 1.3229 −0.37790 0 1.6939 )(x1x2x3)=( 0.5
1.32282.3616)
x3=2.36161.6939
=1.3941
x2=1.3228+(0.3779)(1.3941)
1.3229=1.3981
x1=0.5−(0.5 ) (1.3981 )−1.3941
2=−0.7965
Ejemplo 3 del método de Cholesky
(4 1 0 2
−1 4 −1 002
−10
4 11 3
)(x1x2x3x4
)=(631612
)[ L ]=(
2 0 0 0−0.5 1.9365 0 001
−0.51640.2582
1.9322 00.5866 1.2607
)(y1y2y3y4
)=(631612
)y1=3
y2=2.3238y3=8.9018y4=2.5213
[LT ]=(2 −0.5 0 10 1.9365 −0.5164 0.258200
00
1.9322 0.58660 1.2607
)(x1x2x3x4
)=(3
2.32388.901862.5213
)x4=2x3=4x2=22 x1=1
Ejemplo 4 del método de Cholesky
(1 2 32 8 43 4 11)(
x1x2x3
)=(010)[ L ]=(1 0 0
2 2 03 −1 1)
[LT ]=(1 2 30 2 −10 0 1 )
(1 0 02 2 03 −1 1)(
y1y2y3
)=(010)y1=0y2=0.5y3=0.5
(1 2 30 2 −10 0 1 )(x1x2x3)=( 00.50.5)
x1=−2.5x2=0.5x3=0.5
Ejemplo 5 del método de Cholesky
( 3 −1 −1−1 2 01 0 1 )(x1x2x3)=(510)
[ L ]=( 1.7320 0 0−0.5773 1.2909 0−0.5773 0.2581 0.7745)
[LT ]=(1.7320 −0.5773 −0.57730 1.2909 0.25810 0 0.7745 )
( 1.7320 0 0−0.5773 1.2909 0−0.5773 0.2581 0.7745)(
y1y2y3
)=(510)y1=2.8867y2=−1.8073y3=−0.3442
(1.7320 −0.5773 −0.57730 1.2909 0.25810 0 0.7745 )(x1x2x3)=(− 2.8867
1.8073−0.3442)
x1=1.3777x2=−1.3111x3=−0.4444
Ejemplo 1 del método de LU
Problema: Encontrar los valores de x1 , x2 , x3 para el siguiente sistema de ecuaciones:
4 x1−2x2−x3=95x1+x2−x3=7x1+2 x2−x3=12
Solucion
[A ]=(4 −2 −15 1 −11 2 −4 ) [B ]=( 9712)
Iteracion 1.Se escuentra el valor de [U ].
(4 −2 −15 1 −11 2 −4)R2=R2−1.25R1R3=R3−0.25R1
(4 −2 −10 3.5 0.250 2.5 −0.75)R3=R3−2.53.7 R2
[U ]=(4 −2 −10 3.5 0.250 0 −0.9285) [ L ]=( 1 0 0
1.25 1 00.25 0.7142 1)
Despejamos a yde Ly=b
( 1 0 01.25 1 00.25 0.7142 1)(
Y 1Y 2Y 3
)=( 9712)Y 1=9
1.25Y 1+Y 2=7→Y 2=7−1.25Y 1=−4.250.25Y 1+0.7142Y 2+Y 3=12→Y 3=12−0.25Y 1−0.7142Y 2=12.7857
El paso siguiente es econtrar a x1 , x2 , x3.
RealizamosUx= y.
(4 −2 −10 3.5 0.250 0 −0.9285)(
X1X2X3
)=( 9−4.2512.7857)
X3=13.7702X 2=−2.1978X1=4.5936
Ejemplo 2 del método de LU
Problema: Encontrar los valores de x1 , x2 , x3 para el siguiente sistema de ecuaciones:
x1 +x2 +x3=112 x1 −1x2 + x3=53 x1 2x2 + x3=29
[A ]=(1 1 12 −1 13 2 1) [B ]=(11529)
(1 1 12 −1 13 2 1)R2=R2−2 R1R3 ¿R3−3 R1 (
1 1 10 −3 −10 −1 −2)R3 ¿ R3+1R1
[U ]=(1 1 10 −3 −10 0 −1) [L ]=(1 0 0
2 1 03 −1 1)
(1 0 02 1 03 −1 1)(
Y 1Y 2Y 3
)=(11529)Y 1=11
Y 2=5−2Y 1=−6
Y 3=24−3Y 1+Y 2=−15
(1 1 10 −3 −10 0 −1)(
x1x2x3
)=( 11−6−15)
x3=15x2=90x1=−94
Ejemplo 3 del método de LU
Problema: Encontrar los valores de x1 , x2 , x3 y x4 para el siguiente sistema de ecuaciones:
2 X1−3 X 2+X3+X4=03 X1+X 2−5 X3+3 X4=−166 X1+2 X 2+X3+X4=−3X1+5 X2+4 X3−3 X 4=−6
[A ]=(2361
−3125
1−514
431
−3) [B ]=(
0−16−3−6
)
(2361
−3125
1−514
431
−3)R2=R2−1.5R1R3=R3−3R1R4=R4−0.5 R1
(2000
−35.5117.5
1−6.5−23.5
4−3−11−5
) R3=R3−2R2R4=R4−1.18 R2
(2000
−35.500
1−6.51111.18
4−3−19
−1.45)R4=R4−1.01 R3 (
2000
−35.500
1−6.5110
4−3−1917.85
)
[U ]=(2000
−35.500
1−6.5110
4−3−1917.85
) [ L ]=(11.530.5
0121.18
0011.01
0001)
(11.530.5
0121.09
0011.01
0001)(Y 1Y 2Y 3Y 4
)=(0
−16−3−6
)Y 1=0
Y 2=−16
Y 3=−3−2Y 2=29
Y 4=−6−1.18Y 2−1.01Y 3=−16.57
(2000
−35.500
1−6.5110
4−3−1917.85
)(X 1X 2X3X4
)=(0
−1629
−16.57)
X 4=0.9278
X3=−0.5371
X2=−12.5821
X1=−14.5358
Ejemplo 4 del método de LU
Problema: Encontrar los valores de x1 , x2 , x3 para el siguiente sistema de ecuaciones:
3 x1 +2 x2 + x3=011 x1 +7 x2 +5x3=019 x1 +17 x2 +13 x3=1
[A ]=( 3 2 111 7 519 17 13) [B ]=(001)
( 3 2 111 7 519 17 13)R2=R2−3.6 R1R3¿ R3−6.3R1 (
3 2 10 −0.3 −1.30 4.3 6.6 )R3 ¿R3+2.16 R1
[U ]=(3 2 10 −0.3 −1.30 0 4.5 ) [ L ]=( 1 0 0
3.6 1 06.3 2.16 1)
( 1 0 03.6 1 06.3 2.16 1)(
Y 1Y 2Y 3
)=(001)Y 1=0
Y 2=0
Y 3=1
(3 2 10 −0.3 −1.30 0 4.5 )(x1x2x3)=(001)
x3=4.5x2=0.8888x1=−0.6666
Ejemplo 5 del método de LU
Problema: Encontrar los valores de x1 , x2 , x3 para el siguiente sistema de ecuaciones:
1 x1 +2x2 +5x3=46 x1 +6x2 +5 x3=−88 x1 −4 x2 +0.1 x3=0.5
[A ]=(1 2 56 6 58 −4 0.1) [B ]=( 4−80.5)
(1 2 56 6 58 −4 0.1)R2=R2−6 R1R3¿R3−8R1 (
1 2 50 −6 −30 −20 −39.9)R3 ¿ R3−3.3333 R1
[U ]=(1 2 50 6 −30 0 −90.1) [ L ]=(1 0 0
6 1 08 3.3333 1)
(1 0 06 1 08 3.3333 1)(
Y 1Y 2Y 3
)=( 4−80.5)Y 1=4
Y 2=−32
Y 3=75.1666
(1 2 50 6 −30 0 −90.1)(
x1x2x3
)=( 4−3247.1666)
x3=0.8934x2=1.8734x1=−1.0858
Algoritmo de programa.
Método de Lu. Inicio.
Ingresar el número de ecuaciones n, las
constantes de la matriz A igualadas a b. A,n,b.
Figura 1.4.
K=1, n-1
K=1, n-1
Factor=AiK / AKK
AKK=Factor
J=k+1, n
Aij=A ij−factor∗Akj
AKK=Factor
i=2, n
Sum=bi
j=1, i-1
Sum=Sum-Aij*bi
bi=sum
X n=bn /Ann
I= 1, n J=i+1, n
I=n-1, 1, -1
X i=¿
Sum=0
Sum=Sum+Aij∗X jX i Fin.
J = 1
1-j
qk
2jkjjjj gSg
I = J+1
J = J+1
INICIO
Ingresa:MAT [S]nxn
MUD
J<=MUD+1 ?
N S
Q = J-MUD Q = 1
I = I+1
J >MUD+1 ?
No
Si
R = J-MUDR = 1
jj
1-j
1k
2jkjj
jj g
gS
g
I >N ?
J>N ?
FINN
N
SS
Figura 1.5.
Prueba de escritorio.
Figura 1.6.
Figura 1.7.
Programa del método.
//Método de LU.
#include<stdlib.h>#include<math.h>#include<string.h>#include <iostream>#include <conio.h>using namespace std;
int main(){int n,m,i,j,k; float a[35][36],b[35][36],apoyo; do {system("cls"); cout<<"\nMETODO DE LU"<<endl; cout<<"\nIngrese el numero de Ecuaciones = "; cin>>n; cout<<"\nIngrese coeficientes\n"; /* Datos para iniciar método */for(i=1;i<=n;i++) {cout<<"\nFila"<<i<<endl; for(j=1;j<=n+1;j++) { cout<<"Ingrese a("<<i<<","<<j<<") = "; cin>>a[i][j]; }}/* Fin Del Ciclo De Solicitud De Datos *//* Proceso Principal */ m=n+1; do {if(a[1][1]==0) {k=m-1; for(i=2;i<=k;i++) {if(a[i][1]!=0) { for(j=1;j<=m;j++){ apoyo=a[i][j];
a[i][j]=a[1][j];a[1][j]=apoyo;}}}}else {for(j=2;j<=m;j++){for(i=2;i<=n;i++) {b[i-1][j-1]=a[i][j]-a[1][j]*a[i][1]/a[1][1]; }}for(j=2;j<=m;j++) {b[n][j-1]=a[1][j]/a[1][1]; }m=m-1;for(j=1;j<=m;j++){for(i=1;i<=n;i++){a[i][j]=b[i][j];}}}}while(m>1); cout<<"\n\nSOLUCION DEL SISTEMA"<<endl; for(i=1;i<=n;i++) {cout<<"\nX("<<i<<") = "<<a[i][1];} getch();}while(1);}
//Método de Cholesky#include <time.h>#include <stdio.h>#include <stdlib.h>#include <cmath>#include <math.h>#include <iostream>#include <fstream>
#include <string.h> #include <conio.h> #include <string>#include <utility>#include <iomanip> #include <windows.h>#include <windows.h>#include<stdlib.h>//#include<iostream.h>#include<math.h>//#include<iomanip.h>#include<string.h>using namespace std;double *cholesky(double *A, int n) { double *L = (double*)calloc(n * n, sizeof(double)); if (L == NULL) exit(EXIT_FAILURE); for (int i = 0; i < n; i++) for (int j = 0; j < (i+1); j++) { double s = 0; for (int k = 0; k < j; k++) s += L[i * n + k] * L[j * n + k]; L[i * n + j] = (i == j) ? sqrt(A[i * n + i] - s) : (1.0 / L[j * n + j] * (A[i * n + j] - s)); } return L;} void show_matrix(double *A, int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) printf("%2.5f ", A[i * n + j]); printf("\n"); }} int main() { int n; cout<<"Numero de incosnitas"<<endl; cin>>n; double m1[n*n]; for(int i=0;i<n*n;i++) { cin>>m1[i];
} system("cls"); cout<<"La matriz es:"<<endl<<endl; for(int i=0,c=0;i<n*n;i++) { cout<<m1[i]<<" "; c++; if(c==3) {cout<<endl; c=0;} } cout<<"[L]="<<endl; double *c1 = cholesky(m1, n); show_matrix(c1, n); printf("\n"); free(c1);system("pause"); return 0;}
ConclusionesJuan Pablo López FrancoNo solo se usa un método para resolver todos los problemas o conflictos de una sola área o todas, existen ciertos métodos para cada una, pero un método no podrá resolver todos los problemas de cierta área, así que se tendrán dos o más métodos los cuales parecerán semejantes.Bibliografía
Chapra, Stven; Canale, Raymond. Métodos numéricos para ingenieros. 3ra Edición. McGraw Hill.