SlideShare una empresa de Scribd logo
4
Lo más leído
5
Lo más leído
25
Lo más leído
1.- INTRODUCCIÓN.-
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.
Tenemos la matriz de coeficientes de un sistema de ecuaciones, la llamamos A,
comprobamos que esta matriz sea simétrica, porque de lo contrario no es
factorizable por Cholesky. Cuando A es simétrica podemos tratar de factorizarla en
la forma A = L*L(t), L(t) quiere decir la matriz L traspuesta, cuando la tenemos
factorizada ya podemos resolver el sistema de ecuaciones.
Una condición necesaria y suficiente para que una matriz A admita factorización
de Cholesky es que sea simétrica y definida positiva.
2.- DEFINICIÓN.-
En general, si A es Ermitaña y definida positiva, entonces A puede ser
descompuesta como
donde L es una matriz triangular inferior con entradas diagonales estrictamente
positivas y L* representa la conjugada traspuesta de L. Esta es la descomposición
de Cholesky.
La descomposición de Cholesky es única: dada una matriz Ermitaña positiva
definida A, hay una única matriz triangular inferior L con entradas diagonales
estrictamente positivas tales que A = LL*. El recíproco se tiene trivialmente: si A se
puede escribir como LL* para alguna matriz invertible L, triangular inferior o no,
entonces A es Ermitaña y definida positiva.
El requisito de que L tenga entradas diagonales estrictamente positivas puede
extenderse para el caso de la descomposición en el caso de ser semidefinida
positiva. La proposición se lee ahora: una matriz cuadrada A tiene una
descomposición de Cholesky si y sólo si A es Ermitaña y semidefinida positiva.
Las factorizaciones de Cholesky para matrices semidefinidas positivas no son
únicas en general.
En el caso especial que A es una matriz positiva definida simétrica con entradas
reales, L se puede asumir también con entradas reales. Una Matriz D diagonal con
entradas positivas en la diagonal (valores propios de A), es factorizable como
, donde es matriz cuya diagonal consiste en la raíz cuadrada
de cada elemento de D, que tomamos como positivos. Así:
La factorización puede ser calculada directamente a través de las siguientes
fórmulas (en este caso realizamos la factorizacón superior ):
para los elementos de la diagonal principal, y:
para el resto de los elementos. Donde son los
elementos de la matriz U.
3.- APLICACIÓN.-
La descomposición de Cholesky se usa principalmente para hallar la solución
numérica de ecuaciones lineales Ax = b. Si A es simétrica y positiva definida,
entonces se puede solucionar Ax = b calculando primero la descomposición de
Cholesky A = LLT, luego resolviendo Ly = b para y, y finalmente resolviendo LTx =
y pa.
4.- Mínimos cuadrados lineales
Sistemas de la forma Ax = b con A simétrica y definida positiva aparecen a
menudo en la práctica. Por ejemplo, las ecuaciones normales en problemas de
mínimos cuadrados lineales son problemas de esta forma. Podría ocurrir que la
matriz A proviene de un funcional de energía el cual debe ser positivo bajo
consideraciones físicas; esto ocurre frecuentemente en la solución numérica de
ecuaciones diferenciales parciales.
5.- JUSTIFICACIÓN.-
Metodo de cholesky
Metodo de cholesky
Metodo de cholesky
2).- EJEMPLO.
a) Obtenga la descomposición de Cholesky , imponiendo restricciones apropiadas
sobre a de modo que exista la descomposición anterior.
b) Resuelva el sistema dado.
Solución:
a) Para que podamos calcular la descomposición de Cholesky es necesario que A sea simétrica y
definida positiva.
Se ve claramente que A es simétrica.
Para que A sea definida positiva debemos tener:
es decir,
Calculemos la
matriz L.
b) Resolvamos el sistema dado.
Primero se resuelve el sistema triangular inferior
En segundo lugar se resuelve el sistema triangular superior
DESARROLLO
A.- DIAGRAMACIÓN.-
Metodo de cholesky
B.- CODIFICACIÓN.-
unit UFCholesky;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, UCMatriz;
type
Matriz=array[1..20,1..20]of Integer;
Matriz2=array[1..20,1..20]of Real;
Vector=array[1..20]of real;
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
X:CMatriz;{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
MA:Matriz;
MB:Matriz2;
MC:Matriz2;
i,j,k,l,a,b,m,p,y:Integer;
V:Vector;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
X:=CMatriz.Crear(1,1);
repeat
l:=strtoint(InputBox('Cholesky', '¿Cuantas incognitas tiene?','1'));
if (l<0) or (l>20) then
ShowMessage('Solo numeros enteros menores a 20');
until (l>0) and (l<20);
k:=l+1;
i:=1;
X.Redimensionar(l,k);
While i<=l do
begin
j:=1;
While j<=k do
begin
MA[i,j]:=strtoint(inputbox('Cargando la matriz','Escriba el elemento
'+ inttostr(i)+' , '+ inttostr(j),'0'));
j:=j+1;
end;
i:=i+1;
end;
for i:=1 to l do
begin
for j:=1 to k do
X.Poner(i,j,MA[i,j]);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
o:integer;
begin
i:=1;
j:=1;
While i<=l do
begin
MB[i,j]:=MA[i,j];
i:=i+1;
end;
i:=1;
While i<=l do
begin
MC[i,i]:=1;
i:=i+1;
end;
i:=1;
j:=2;
While j<=(k+1) do
begin
MC[i,j]:=((1/(MB[1,1]))*(MA[i,j]));
j:=j+1;
end;
a:=2;
b:=2;
While b<=k do
begin
i:=a;
j:=b;
While i<=l do
begin
MB[i,j]:=(MA[i,j]);
m:=1;
While m<j do
begin
MB[i,j]:=MB[i,j]-((MB[i,m])*(MC[m,j]));
m:=m+1;
end;
i:=i+1;
end;
i:=j;
j:=j+1;
While j<=k do
begin
m:=1;
MC[i,j]:=MA[i,j];
While m<i do
begin
MC[i,j]:=MC[i,j]-((MB[i,m])*(MC[m,j]));
m:=m+1;
end;
MC[i,j]:=((1/(MB[i,i]))*((MC[i,j])));
j:=j+1;
end;
b:=b+1;
end;
b:=(b-1);
i:=(b-1);
While i>0 do
begin
V[i]:=MC[i,b];
m:=(i+1);
While m<b do
begin
V[i]:=V[i]-(MC[i,m]*V[m]);
m:=m+1;
end;
i:=i-1;
end;
p:=500; y:=100;
for o:=1 to l do
begin
Canvas.TextOut(p,y,'x'+ inttostr(o)+' es igual a:'+ floattostr( V[o]));
y:=y+20;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
X.Dibujar(100,100,canvas);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;
end.
unit UCMatriz;
interface
uses
SysUtils, Dialogs, Graphics;
Const
max=100;
type
CEMMatriz=Class(Exception);
CMatriz=Class
private
M:Array [1..max, 1..max] of integer;
nf:integer;
nc:integer;
public
Constructor Crear(Df,dc:integer);
Function Elemento(f,c:integer):integer;
Function DimensionFila:integer;
Function DimensionColumna:integer;
Procedure Redimensionar(df,dc:integer);
Procedure Poner(f,c, que:integer);
Procedure Mostrar;
Procedure Dibujar(x,y:integer; C:TCanvas);
end;
CEMMatrizC = Class (Exception);
CMatrizC =Class
private
M:Array [1..max, 1..max] of String;
nf:integer;
nc:integer;
public
Constructor Crear(Df,dc:integer);
Function Elemento(f,c:integer):String;
Function DimensionFila:integer;
Function DimensionColumna:integer;
Procedure Redimensionar(df,dc:integer);
Procedure Poner(f,c:integer; que:String);
Procedure Mostrar;
Procedure Dibujar(x,y:integer; C:TCanvas);
end;
implementation
{ CMatriz }
constructor CMatriz.Crear(df,dc: integer);
begin
if (df>0) and (df<=max) then
nf:=df
else
Raise CEMMatriz.Create('CMatriz.Crear: Error fuera de RANGO...');
if (dc>0) and (dc<=max) then
nc:=dc
else
Raise CEMMatriz.Create('CMatriz.Crear: Error fuera de RANGO...');
end;
function CMatriz.DimensionFila: integer;
begin
Result:=nf;
end;
function CMatriz.DimensionColumna: integer;
begin
Result:=nc;
end;
function CMatriz.Elemento(f,c: integer): integer;
begin
if (f>0) and (f<=nf) and (c>0) and (c<=nc) then
Result:=M[f,c]
else
Raise CEMMatriz.Create('CMatriz.Elemento: Error fuera de RANGO...');
end;
procedure CMatriz.Poner(f,c, que: integer);
begin
if (f>0) and (f<=nf) and (c>0) and (c<=nc) then
M[f,c]:=que
else
Raise CEMMatriz.Create('CMatriz,Poner: Error fuera de RANGO...');
end;
procedure CMatriz.Redimensionar(df,dc: integer);
begin
if (df>0) and (df<=max) then
nf:=df
else
Raise CEMMatriz.Create('CMatriz.Redimensionar: Error fuera de RANGO...');
if (dc>0) and (dc<=max) then
nc:=dc
else
Raise CEMMatriz.Create('CMatriz.Redimensionar: Error fuera de RANGO...');
end;
procedure CMatriz.Mostrar;
var i,j:integer;
begin
i:=1;
while i<= nc do
begin
j:=1;
while j<= nf do
begin
if j< nf then
begin
if M[i,j]<=9 then
write (M[i,j],' ')
else
write (M[i,j],' ');
end
else
begin
writeln (M[i,j]);
writeln;
end;
j:=j+1;
end;
i:=i+1;
end;
end;
procedure CMatriz.Dibujar(x,y:integer; C:TCanvas);
var
aux,i,j:integer;
begin
aux:=x;
for i:=1 to nf do
begin
for j:=1 to nc do
begin
C.MoveTo(x,y);
C.Rectangle(x,y,x+35,y+35);
C.TextOut(x+5,y+5,inttostr(M[i,j]));
X:=x+34;
end;
x:=aux;
y:=y+34;
end;
end;
{ CMatrizC }
constructor CMatrizC.Crear(Df, dc: integer);
begin
if (df>0) and (df<=max) then
nf:=df
else
Raise CEMMatrizC.Create('CMatrizC.Crear: Error fuera de RANGO...');
if (dc>0) and (dc<=max) then
nc:=dc
else
Raise CEMMatrizC.Create('CMatrizC.Crear: Error fuera de RANGO...');
end;
procedure CMatrizC.Dibujar(x, y: integer; C: TCanvas);
var
aux,i,j:integer;
begin
aux:=x;
for i:=1 to nf do
begin
for j:=1 to nc do
begin
C.MoveTo(x,y);
C.Rectangle(x,y,x+35,y+35);
C.TextOut(x+5,y+5,M[i,j]);
X:=x+34;
end;
x:=aux;
y:=y+34;
end;
end;
function CMatrizC.DimensionColumna: integer;
begin
Result:=nc;
end;
function CMatrizC.DimensionFila: integer;
begin
Result:=nf;
end;
function CMatrizC.Elemento(f, c: integer): String;
begin
if (f>0) and (f<=nf) and (c>0) and (c<=nc) then
Result:=M[f,c]
else
Raise CEMMatrizC.Create('CMatrizC.Elemento: Error fuera de RANGO...');
end;
procedure CMatrizC.Mostrar;
var i,j:integer;
begin
i:=1;
while i<= nc do
begin
j:=1;
while j<= nf do
begin
if j< nf then
begin
write (M[i,j],' ');
end
else
begin
writeln (M[i,j]);
writeln;
end;
j:=j+1;
end;
i:=i+1;
end;
end;
procedure CMatrizC.Poner(f, c: integer; que: String);
begin
if (f>0) and (f<=nf) and (c>0) and (c<=nc) then
M[f,c]:=que
else
Raise CEMMatrizC.Create('CMatrizC.Poner: Error fuera de RANGO...');
end;
procedure CMatrizC.Redimensionar(df, dc: integer);
begin
if (df>0) and (df<=max) then
nf:=df
else
Raise CEMMatrizC.Create('CMatrizC.Redimensionar: Error fuera de RANGO...');
if (dc>0) and (dc<=max) then
nc:=dc
else
Raise CEMMatrizC.Create('CMatrizC.Redimensionar: Error fuera de RANGO...');
end;
end.
MANUAL DEL PROGRAMA
1.- Damos doble clic para abrir el programa.
2.- Damos un clic en botón dimensionar.
3.- Luego ponemos un número para que dimensione la matriz.
4.- Ahora llenamos la matriz con los números que queramos adicionar.
5.- Le damos un clic en cargar matriz para hallar los resultados de la A’ y B’.
6.- Y por último le damos un clic en el botón resolver por el Método de Cholesky y no va a
mostrar los
resultados de la matriz
7.- Y para salir del programa le damos en la X
CONCLUSIÓN.-
 Con este método se puede demostrar que se pueden resolver matrices de
orden nxn, es decir matrices cuadradas o simétricas, siempre y cuando
sean positivas, caso contrario es imposible usar este método, ya que en la
resolución se debe usar la matriz original multiplicado por la matriz
transpuesta de A

Más contenido relacionado

DOCX
unidad 4 ecuaciones diferenciales
PDF
Metodo de cholesky
PDF
MéTodo De IteracióN De Punto Fijo
PPT
Factorizacion lu
PDF
Solución de Sistemas de Ecuaciones por Eliminación
PPTX
Resolución de ecuaciones diferenciales con MATLAB R2015a
PDF
ED Ejercicios complementarios cap 1 aplicaciones de las ed orden uno parte 1
PPTX
Metodo gauss y gauss jordan
unidad 4 ecuaciones diferenciales
Metodo de cholesky
MéTodo De IteracióN De Punto Fijo
Factorizacion lu
Solución de Sistemas de Ecuaciones por Eliminación
Resolución de ecuaciones diferenciales con MATLAB R2015a
ED Ejercicios complementarios cap 1 aplicaciones de las ed orden uno parte 1
Metodo gauss y gauss jordan

La actualidad más candente (20)

PDF
Ecuaciones Diferenciales - La Transformada de Laplace
DOCX
Ejercicios campo electrico y carga puntual
PDF
Ejercicios resueltos edo separables
DOCX
Tarea 9 de probabilidad y estadistica con respuestas
 
PDF
Problema 1 de manometría
PPTX
Ejemplo del Método de Bisección
PPTX
Ley de gauss. ing. carlos moreno (ESPOL)
PDF
PDF
Trabajo ecuaciones
PPTX
Aplicaciones de las ecuaciones diferenciales de primer orden en la química
PDF
Termodinamica problemas resueltos08
PPTX
Propiedad de linealidad - Principio de Superposición
PPTX
El metodo doolittle
PDF
MEDICIÓN DE RESISTENCIA: LEY DE OHM
PPTX
Oscilaciones amortiguadas, forzadas y resonancia
PPTX
Transformada de una Derivada
PPSX
Ecuaciones Diferenciales de Primer Orden.
DOC
Ejemplos metodo-de-lagrange1-ajustar-a-mat-3
PDF
Flujo eléctrico
PDF
Problemas sobre vaciado de tanques
Ecuaciones Diferenciales - La Transformada de Laplace
Ejercicios campo electrico y carga puntual
Ejercicios resueltos edo separables
Tarea 9 de probabilidad y estadistica con respuestas
 
Problema 1 de manometría
Ejemplo del Método de Bisección
Ley de gauss. ing. carlos moreno (ESPOL)
Trabajo ecuaciones
Aplicaciones de las ecuaciones diferenciales de primer orden en la química
Termodinamica problemas resueltos08
Propiedad de linealidad - Principio de Superposición
El metodo doolittle
MEDICIÓN DE RESISTENCIA: LEY DE OHM
Oscilaciones amortiguadas, forzadas y resonancia
Transformada de una Derivada
Ecuaciones Diferenciales de Primer Orden.
Ejemplos metodo-de-lagrange1-ajustar-a-mat-3
Flujo eléctrico
Problemas sobre vaciado de tanques
Publicidad

Similar a Metodo de cholesky (20)

DOCX
Sistemas ecuaciones amilcar
DOCX
Sistemas ecuaciones saul u
DOCX
Sistemas ecuaciones roger o
DOCX
Trabajo tema 3 Métodos de Eliminación Gaussina
PPTX
Acti iii analisis numerico
PDF
Ecuaciones lineales
PPTX
Unidad III
DOCX
Metoodos numericos
PPTX
Sistemas de ecuaciones lineales
DOCX
Analisis numerico 2
PPTX
Unidad III de analisis numerico
PPTX
METODO ELIMINACION GAUSSIANA UNIDAD III
PPTX
Analisis Numerico
PPTX
Solución de Sistemas de Ecuaciones Lineales Analisis numerico
DOCX
Solución de Sistemas de Ecuaciones Lineales
PPTX
Resumen victoria dominguez - Analisis numerico
PDF
Métodos de eliminacion de Ecuaciones
DOCX
Ecuaciones lineales
DOCX
Laura rodríguez
PDF
Resumen de unidad 3
Sistemas ecuaciones amilcar
Sistemas ecuaciones saul u
Sistemas ecuaciones roger o
Trabajo tema 3 Métodos de Eliminación Gaussina
Acti iii analisis numerico
Ecuaciones lineales
Unidad III
Metoodos numericos
Sistemas de ecuaciones lineales
Analisis numerico 2
Unidad III de analisis numerico
METODO ELIMINACION GAUSSIANA UNIDAD III
Analisis Numerico
Solución de Sistemas de Ecuaciones Lineales Analisis numerico
Solución de Sistemas de Ecuaciones Lineales
Resumen victoria dominguez - Analisis numerico
Métodos de eliminacion de Ecuaciones
Ecuaciones lineales
Laura rodríguez
Resumen de unidad 3
Publicidad

Último (20)

PPTX
leyes de los gases Ideales. combustible refinación
PPTX
Cómo Elaborar e Implementar el IPERC_ 2023.pptx
PDF
MANTENIMIENTO AIRE ACOINDICIOANDO S1_ELEC_MANT.pptx.pdf
DOCX
Cumplimiento normativo y realidad laboral
PPTX
Expo petroelo 2do ciclo.psssssssssssssptx
PDF
Módulo V. Tema 2. Disruptive & Transformation 2024 v.0.4.pdf
PPTX
clase MICROCONTROLADORES ago-dic 2019.pptx
PPTX
A8B08CED-D3D9-415C-B4A3-2A6CA6409A48.1.1Presentación Dirección 2022 unidade...
PDF
BROCHURE SERVICIOS CONSULTORIA ISOTEMPO 2025
PDF
SESION 10 SEGURIDAD EN TRABAJOS CON ELECTRICIDAD.pdf
PDF
manual-sap-gratuito _ para induccion de inicio a SAP
PPTX
PPT PE 7 ASOCIACIONES HUAMANGA_TALLER DE SENSIBILIZACIÓN_20.04.025.pptx
PPTX
Electronica II, material basico de electronica II
PDF
Seguridad vial en carreteras mexico 2003.pdf
PDF
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
PDF
SISTEMAS DE PUESTA A TIERRA: Una introducción a los fundamentos de los sistem...
PDF
UD3 -Producción, distribución del aire MA.pdf
PDF
Matriz_Seguimiento_Estu_Consult_2024_ACT.pdf
PDF
Diseño y Utiliación del HVAC Aire Acondicionado
PDF
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf
leyes de los gases Ideales. combustible refinación
Cómo Elaborar e Implementar el IPERC_ 2023.pptx
MANTENIMIENTO AIRE ACOINDICIOANDO S1_ELEC_MANT.pptx.pdf
Cumplimiento normativo y realidad laboral
Expo petroelo 2do ciclo.psssssssssssssptx
Módulo V. Tema 2. Disruptive & Transformation 2024 v.0.4.pdf
clase MICROCONTROLADORES ago-dic 2019.pptx
A8B08CED-D3D9-415C-B4A3-2A6CA6409A48.1.1Presentación Dirección 2022 unidade...
BROCHURE SERVICIOS CONSULTORIA ISOTEMPO 2025
SESION 10 SEGURIDAD EN TRABAJOS CON ELECTRICIDAD.pdf
manual-sap-gratuito _ para induccion de inicio a SAP
PPT PE 7 ASOCIACIONES HUAMANGA_TALLER DE SENSIBILIZACIÓN_20.04.025.pptx
Electronica II, material basico de electronica II
Seguridad vial en carreteras mexico 2003.pdf
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
SISTEMAS DE PUESTA A TIERRA: Una introducción a los fundamentos de los sistem...
UD3 -Producción, distribución del aire MA.pdf
Matriz_Seguimiento_Estu_Consult_2024_ACT.pdf
Diseño y Utiliación del HVAC Aire Acondicionado
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf

Metodo de cholesky

  • 1. 1.- INTRODUCCIÓN.- 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. Tenemos la matriz de coeficientes de un sistema de ecuaciones, la llamamos A, comprobamos que esta matriz sea simétrica, porque de lo contrario no es factorizable por Cholesky. Cuando A es simétrica podemos tratar de factorizarla en la forma A = L*L(t), L(t) quiere decir la matriz L traspuesta, cuando la tenemos factorizada ya podemos resolver el sistema de ecuaciones. Una condición necesaria y suficiente para que una matriz A admita factorización de Cholesky es que sea simétrica y definida positiva.
  • 2. 2.- DEFINICIÓN.- En general, si A es Ermitaña y definida positiva, entonces A puede ser descompuesta como donde L es una matriz triangular inferior con entradas diagonales estrictamente positivas y L* representa la conjugada traspuesta de L. Esta es la descomposición de Cholesky. La descomposición de Cholesky es única: dada una matriz Ermitaña positiva definida A, hay una única matriz triangular inferior L con entradas diagonales estrictamente positivas tales que A = LL*. El recíproco se tiene trivialmente: si A se puede escribir como LL* para alguna matriz invertible L, triangular inferior o no, entonces A es Ermitaña y definida positiva. El requisito de que L tenga entradas diagonales estrictamente positivas puede extenderse para el caso de la descomposición en el caso de ser semidefinida positiva. La proposición se lee ahora: una matriz cuadrada A tiene una descomposición de Cholesky si y sólo si A es Ermitaña y semidefinida positiva. Las factorizaciones de Cholesky para matrices semidefinidas positivas no son únicas en general. En el caso especial que A es una matriz positiva definida simétrica con entradas reales, L se puede asumir también con entradas reales. Una Matriz D diagonal con entradas positivas en la diagonal (valores propios de A), es factorizable como , donde es matriz cuya diagonal consiste en la raíz cuadrada de cada elemento de D, que tomamos como positivos. Así:
  • 3. La factorización puede ser calculada directamente a través de las siguientes fórmulas (en este caso realizamos la factorizacón superior ): para los elementos de la diagonal principal, y: para el resto de los elementos. Donde son los elementos de la matriz U. 3.- APLICACIÓN.- La descomposición de Cholesky se usa principalmente para hallar la solución numérica de ecuaciones lineales Ax = b. Si A es simétrica y positiva definida, entonces se puede solucionar Ax = b calculando primero la descomposición de Cholesky A = LLT, luego resolviendo Ly = b para y, y finalmente resolviendo LTx = y pa. 4.- Mínimos cuadrados lineales Sistemas de la forma Ax = b con A simétrica y definida positiva aparecen a menudo en la práctica. Por ejemplo, las ecuaciones normales en problemas de mínimos cuadrados lineales son problemas de esta forma. Podría ocurrir que la matriz A proviene de un funcional de energía el cual debe ser positivo bajo consideraciones físicas; esto ocurre frecuentemente en la solución numérica de ecuaciones diferenciales parciales.
  • 9. a) Obtenga la descomposición de Cholesky , imponiendo restricciones apropiadas sobre a de modo que exista la descomposición anterior. b) Resuelva el sistema dado. Solución: a) Para que podamos calcular la descomposición de Cholesky es necesario que A sea simétrica y definida positiva. Se ve claramente que A es simétrica. Para que A sea definida positiva debemos tener: es decir, Calculemos la matriz L.
  • 10. b) Resolvamos el sistema dado. Primero se resuelve el sistema triangular inferior En segundo lugar se resuelve el sistema triangular superior
  • 14. B.- CODIFICACIÓN.- unit UFCholesky; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, UCMatriz; type Matriz=array[1..20,1..20]of Integer; Matriz2=array[1..20,1..20]of Real; Vector=array[1..20]of real; TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private X:CMatriz;{ Private declarations } public { Public declarations } end; var Form1: TForm1; MA:Matriz; MB:Matriz2; MC:Matriz2; i,j,k,l,a,b,m,p,y:Integer; V:Vector; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin X:=CMatriz.Crear(1,1); repeat l:=strtoint(InputBox('Cholesky', '¿Cuantas incognitas tiene?','1')); if (l<0) or (l>20) then ShowMessage('Solo numeros enteros menores a 20');
  • 15. until (l>0) and (l<20); k:=l+1; i:=1; X.Redimensionar(l,k); While i<=l do begin j:=1; While j<=k do begin MA[i,j]:=strtoint(inputbox('Cargando la matriz','Escriba el elemento '+ inttostr(i)+' , '+ inttostr(j),'0')); j:=j+1; end; i:=i+1; end; for i:=1 to l do begin for j:=1 to k do X.Poner(i,j,MA[i,j]); end; end; procedure TForm1.Button1Click(Sender: TObject); var o:integer; begin i:=1; j:=1; While i<=l do begin MB[i,j]:=MA[i,j]; i:=i+1; end; i:=1; While i<=l do begin MC[i,i]:=1; i:=i+1; end; i:=1; j:=2; While j<=(k+1) do begin MC[i,j]:=((1/(MB[1,1]))*(MA[i,j])); j:=j+1;
  • 16. end; a:=2; b:=2; While b<=k do begin i:=a; j:=b; While i<=l do begin MB[i,j]:=(MA[i,j]); m:=1; While m<j do begin MB[i,j]:=MB[i,j]-((MB[i,m])*(MC[m,j])); m:=m+1; end; i:=i+1; end; i:=j; j:=j+1; While j<=k do begin m:=1; MC[i,j]:=MA[i,j]; While m<i do begin MC[i,j]:=MC[i,j]-((MB[i,m])*(MC[m,j])); m:=m+1; end; MC[i,j]:=((1/(MB[i,i]))*((MC[i,j]))); j:=j+1; end; b:=b+1; end; b:=(b-1); i:=(b-1); While i>0 do begin V[i]:=MC[i,b]; m:=(i+1); While m<b do begin V[i]:=V[i]-(MC[i,m]*V[m]); m:=m+1;
  • 17. end; i:=i-1; end; p:=500; y:=100; for o:=1 to l do begin Canvas.TextOut(p,y,'x'+ inttostr(o)+' es igual a:'+ floattostr( V[o])); y:=y+20; end; end; procedure TForm1.Button2Click(Sender: TObject); begin X.Dibujar(100,100,canvas); end; procedure TForm1.Button3Click(Sender: TObject); begin Close; end; end. unit UCMatriz; interface uses SysUtils, Dialogs, Graphics; Const max=100; type CEMMatriz=Class(Exception); CMatriz=Class private M:Array [1..max, 1..max] of integer; nf:integer; nc:integer; public Constructor Crear(Df,dc:integer); Function Elemento(f,c:integer):integer; Function DimensionFila:integer; Function DimensionColumna:integer; Procedure Redimensionar(df,dc:integer); Procedure Poner(f,c, que:integer);
  • 18. Procedure Mostrar; Procedure Dibujar(x,y:integer; C:TCanvas); end; CEMMatrizC = Class (Exception); CMatrizC =Class private M:Array [1..max, 1..max] of String; nf:integer; nc:integer; public Constructor Crear(Df,dc:integer); Function Elemento(f,c:integer):String; Function DimensionFila:integer; Function DimensionColumna:integer; Procedure Redimensionar(df,dc:integer); Procedure Poner(f,c:integer; que:String); Procedure Mostrar; Procedure Dibujar(x,y:integer; C:TCanvas); end; implementation { CMatriz } constructor CMatriz.Crear(df,dc: integer); begin if (df>0) and (df<=max) then nf:=df else Raise CEMMatriz.Create('CMatriz.Crear: Error fuera de RANGO...'); if (dc>0) and (dc<=max) then nc:=dc else Raise CEMMatriz.Create('CMatriz.Crear: Error fuera de RANGO...'); end; function CMatriz.DimensionFila: integer; begin Result:=nf; end; function CMatriz.DimensionColumna: integer; begin Result:=nc; end;
  • 19. function CMatriz.Elemento(f,c: integer): integer; begin if (f>0) and (f<=nf) and (c>0) and (c<=nc) then Result:=M[f,c] else Raise CEMMatriz.Create('CMatriz.Elemento: Error fuera de RANGO...'); end; procedure CMatriz.Poner(f,c, que: integer); begin if (f>0) and (f<=nf) and (c>0) and (c<=nc) then M[f,c]:=que else Raise CEMMatriz.Create('CMatriz,Poner: Error fuera de RANGO...'); end; procedure CMatriz.Redimensionar(df,dc: integer); begin if (df>0) and (df<=max) then nf:=df else Raise CEMMatriz.Create('CMatriz.Redimensionar: Error fuera de RANGO...'); if (dc>0) and (dc<=max) then nc:=dc else Raise CEMMatriz.Create('CMatriz.Redimensionar: Error fuera de RANGO...'); end; procedure CMatriz.Mostrar; var i,j:integer; begin i:=1; while i<= nc do begin j:=1; while j<= nf do begin if j< nf then begin if M[i,j]<=9 then write (M[i,j],' ') else write (M[i,j],' '); end else begin
  • 20. writeln (M[i,j]); writeln; end; j:=j+1; end; i:=i+1; end; end; procedure CMatriz.Dibujar(x,y:integer; C:TCanvas); var aux,i,j:integer; begin aux:=x; for i:=1 to nf do begin for j:=1 to nc do begin C.MoveTo(x,y); C.Rectangle(x,y,x+35,y+35); C.TextOut(x+5,y+5,inttostr(M[i,j])); X:=x+34; end; x:=aux; y:=y+34; end; end; { CMatrizC } constructor CMatrizC.Crear(Df, dc: integer); begin if (df>0) and (df<=max) then nf:=df else Raise CEMMatrizC.Create('CMatrizC.Crear: Error fuera de RANGO...'); if (dc>0) and (dc<=max) then nc:=dc else Raise CEMMatrizC.Create('CMatrizC.Crear: Error fuera de RANGO...'); end; procedure CMatrizC.Dibujar(x, y: integer; C: TCanvas); var aux,i,j:integer; begin
  • 21. aux:=x; for i:=1 to nf do begin for j:=1 to nc do begin C.MoveTo(x,y); C.Rectangle(x,y,x+35,y+35); C.TextOut(x+5,y+5,M[i,j]); X:=x+34; end; x:=aux; y:=y+34; end; end; function CMatrizC.DimensionColumna: integer; begin Result:=nc; end; function CMatrizC.DimensionFila: integer; begin Result:=nf; end; function CMatrizC.Elemento(f, c: integer): String; begin if (f>0) and (f<=nf) and (c>0) and (c<=nc) then Result:=M[f,c] else Raise CEMMatrizC.Create('CMatrizC.Elemento: Error fuera de RANGO...'); end; procedure CMatrizC.Mostrar; var i,j:integer; begin i:=1; while i<= nc do begin j:=1; while j<= nf do begin if j< nf then begin write (M[i,j],' '); end else
  • 22. begin writeln (M[i,j]); writeln; end; j:=j+1; end; i:=i+1; end; end; procedure CMatrizC.Poner(f, c: integer; que: String); begin if (f>0) and (f<=nf) and (c>0) and (c<=nc) then M[f,c]:=que else Raise CEMMatrizC.Create('CMatrizC.Poner: Error fuera de RANGO...'); end; procedure CMatrizC.Redimensionar(df, dc: integer); begin if (df>0) and (df<=max) then nf:=df else Raise CEMMatrizC.Create('CMatrizC.Redimensionar: Error fuera de RANGO...'); if (dc>0) and (dc<=max) then nc:=dc else Raise CEMMatrizC.Create('CMatrizC.Redimensionar: Error fuera de RANGO...'); end; end.
  • 23. MANUAL DEL PROGRAMA 1.- Damos doble clic para abrir el programa. 2.- Damos un clic en botón dimensionar.
  • 24. 3.- Luego ponemos un número para que dimensione la matriz. 4.- Ahora llenamos la matriz con los números que queramos adicionar. 5.- Le damos un clic en cargar matriz para hallar los resultados de la A’ y B’.
  • 25. 6.- Y por último le damos un clic en el botón resolver por el Método de Cholesky y no va a mostrar los resultados de la matriz 7.- Y para salir del programa le damos en la X
  • 26. CONCLUSIÓN.-  Con este método se puede demostrar que se pueden resolver matrices de orden nxn, es decir matrices cuadradas o simétricas, siempre y cuando sean positivas, caso contrario es imposible usar este método, ya que en la resolución se debe usar la matriz original multiplicado por la matriz transpuesta de A