Está en la página 1de 12

UNIVERSIDAD CATÓLICA DE SANTA MARÍA

FACULTAD DE CIENCIAS E INGENIERÍAS BIOLÓGICAS Y QUÍMICAS

PROGRAMA PROFESIONAL DE INGENIERÍA DE INDUSTRIA ALIMENTARIA

CURSO: SIMULACION DE PROCESOS.

LABORATORIO 3 Solución de Sistema de Ecuaciones Lineales : Método de Cholesky

I. FUNDAMENTO:
En matemáticas, la factorización o descomposición de Cholesky toma su nombre del matemático
André-Louis Cholesky, quien encontró que 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.

Problema:

Resolver el siguiente sistema de ecuaciones lineales usando el método de Cholesky

6 x+15 y+55 z=100


15 x+55 y+225 z=150
55 x+225 y+979=100
6 15 55 100

A=
[ 15 55 225
55 225 979 ][] 150
100

Solución:

En el método de Cholesky el primer paso es encontrar la matriz L usando las fórmulas


i−1
a ki−∑ l ij l kj k−1
l ki= j=1
l ii y

l kk= akk− ∑ l 2kj
j=1

La primera ecuación se usa para elementos fuera de la diagonal y la segunda para elementos en la diagonal
principal. Entonces:

a21 15
l21= =
l 11= √a 11=√ 6 = 2.4495
l 11 2 . 4495 = 6.1237

a31 55
l 31= =
l 11 2 . 4495 = 22.454 Ya sabemos que l12 = 0

l 22=√ a22−l 221=√ 55−6. 12372 = 4.1833

a32−l 21 l 31 55−(6 . 1237 )(22. 454 )


l 32= =
l 22 4 .1833 = 20.916

De igual forma l13 = l23 = 0 y

l 33=√ a33−(l312 +l 232 )= √979−(22 . 4542 +20 .916 2 ) = 6.1106

La matriz L es igual a
2.4495 0 0

[
L= 6 .1237 4.1833 0
22.454 20.916 6.1106 ]
En el método de Cholesky L*c=b

2. 4495 0 0 c 1 100

[ 6 .1237 4 . 1833
]
0 ∗c 2 =150
22 . 454 20. 916 6 . 1106 c 100
3

El siguiente paso es encontrar el vector c:

2 . 4495 c 1 +0 c 2 +0 c3 =100
6 . 1237 c 1 +4 .1833 c 2 +0 c3 =150
22. 545 c 1 +20 . 916 c 2 +6 . 1106c 3 =100

a 14 100 a24−l 21 c1 150−(6 .1237 )(40 . 8247)


c 1= = c2= =
l 11 2 . 4495 =40.8247 l 22 4 . 1833 =-23.9041

a34−(l31 c 1 +l 32 c 2 ) 100−((22 . 454 )(40 . 8247)+(20. 916 )(−23. 9041 )


c 3= =
l 33 6 . 1106 =-51.8279

C1=40.8247

C2=-23.9041

C3=-51.8279

Finalmente se calcula el vector de incógnitas comenzando por la última x.

U = LT

2.4495 6.1237 22.454


U= 0
0 [ 4.1833 20.916
0 6.1106 ]
U*x=c
2 . 4495 6. 1237 22. 454 x 1 c1

[ 0
0
4 .1833
0 ][ ][ ]
20. 916 ∗ x 2 = c 2
6 . 1106 x 3 c3

c3 c 2 −u23 x 3
x 3= x 2=
u33 =-8.4816 u 22 = [-23.9041-(20.916)(-8.4816)]/4.1833 = 36.6928

c 1 −(u12 x 2 +u 13 x 3 )
x 1=
u11 = [40.8247 – ((6.1237)(36.6928)+(22.454)(-8.4816))]/2.4495 = 2.6841

El resultado se puede comprobar multiplicando A por X y el resultado debe ser igual a C.

II. OBJETIVO
 Emplear el método de Cholesky para la resolución de un sistema de ecuaciones.
 Aprender a declarar matrices

III. MATERIALES
1. Computadora con Windows 98 o +
2. Visual Studio 2013
IV PROCEDIMIENTO

Considere el siguiente sistema de ecuaciones.

5 x 1 −3 x 2 +4 x 3 =1

{ −3 x 1 +3 x 2 −4 x 3 =−2
4 x 1 −4 x2 +6 x3 =3 }
Desarrolle una aplicación que le permita calcular los valores de x 1, x2 y x3 que satisfagan dicho
sistema, aplicando el método de Cholesky

1. Diseñar la siguiente interfaz:


2. Asigne las siguientes propiedades a los controles

Control Propiedad Valor

DataGridView Nombre A

Text Calcular
Boton
Nombre Btncalcular

Nombre Txtx1
Textbox1
Texto

Nombre Txtx2
Textbox2
Texto

Nombre Txtx3
Textbox3
Texto

3. Desarrolle el codigo necesario para que al cargar el formulario :


a. Aumente 4 filas
b. Aparezca el texto “Fila 1” en la celda (1,0)
c. Aparezca el texto “Fila 2” en la celda (2,0)
d. Aparezca el texto “Fila 3” en la celda (3,0)
e. Aparezca la matriz aumentada del sistema de ecuaciones en el
DataGridView.

Haga doble clic sobre el formulario e introduzca el siguiente codigo:


Public Class Form1

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load


a.Rows.Add(4)
a.Rows(1).Cells(0).Value = "fila1"
a.Rows(2).Cells(0).Value = "fila2"
a.Rows(3).Cells(0).Value = "fila3"
a.Rows(1).Cells(1).Value = 5
a.Rows(1).Cells(2).Value = -3
a.Rows(1).Cells(3).Value = 4
a.Rows(1).Cells(4).Value = 1
a.Rows(2).Cells(1).Value = -3
a.Rows(2).Cells(2).Value = 3
a.Rows(2).Cells(3).Value = -4
a.Rows(2).Cells(4).Value = -2
a.Rows(3).Cells(1).Value = 4
a.Rows(3).Cells(2).Value = -4
a.Rows(3).Cells(3).Value = 6
a.Rows(3).Cells(4).Value = 3

End Sub
End Class

4. Ejecute la aplicación
5. Declare una matriz l con 3 filas y 3 columnas que albergue datos de tipo Real de simple
precision, para lo cual introduzca la siguiente instruccion en su ventana codigo:
Dim l(3, 3) As Single  declaracion de la matriz en 3 filas y 3 columnas

6. Declare las avriables x1 x2 x3 c1 c2 y c3 como variables de tipo double


Dim x1, x2, x3, c1, c2, c3 As Double declaracion de Variables

7. Desarrolle el código para que al hacer clic en el btncalcular se resuelva el sistema de


ecuaciones por el método de Cholesky:

Private Sub btncalcular_Click(sender As Object, e As EventArgs) Handles


btncalcular.Click
l(1, 1) = (a.Rows(1).Cells(1).Value) ^ 0.5
l(2, 1) = (a.Rows(2).Cells(1).Value) / l(1, 1)
l(3, 1) = (a.Rows(3).Cells(1).Value) / l(1, 1)
l(2, 2) = ((a.Rows(2).Cells(2).Value) - (l(2, 1)) ^ 2) ^ 0.5
l(3, 2) = ((a.Rows(3).Cells(2).Value) - l(2, 1) * l(3, 1)) / l(2, 2)
l(3, 3) = ((a.Rows(3).Cells(3).Value) - (l(3, 1)) ^ 2 - (l(3, 2)) ^ 2) ^ 0.5
c1 = (a.Rows(1).Cells(4).Value) / l(1, 1)
c2 = ((a.Rows(2).Cells(4).Value) - l(2, 1) * c1) / l(2, 2)
c3 = ((a.Rows(3).Cells(4).Value) - l(3, 1) * c1 - l(3, 2) * c2) / l(3, 3)
x3 = c3 / l(3, 3)
x2 = (c2 - l(3, 2) * x3) / l(2, 2)
x1 = (c1 - l(2, 1) * x2 - l(3, 1) * x3) / l(1, 1)
txtx1.Text = x1
txtx2.Text = x2
txtx3.Text = x3
End Sub

8. Ejecute la aplicación y haga clic en el btncalcular

9. Fije en 4 los decimales de cada uno de los cuadros de texto , empiece incluyendo en la
interfaz un nuevo boton que denominara btndecimales.
10. Asigne este procedimiento al evento click de btndecimales:

Private Sub btndecimales_Click(sender As Object, e As EventArgs) Handles


btndecimales.Click
txtx1.Text = FormatNumber(x1, 4)
txtx2.Text = FormatNumber(x2, 4)
txtx3.Text = FormatNumber(x3, 4)
End Sub

11. Ejecute la aplicación: haga clic en el botón Calcular luego en el botón Decimales
Ejecucion de trabajo
Actividad Sugerida

Desarrolle una aplicación que le permita convertir una matriz cualquiera en una matriz
simetrica positiva

También podría gustarte