Documentos de Académico
Documentos de Profesional
Documentos de Cultura
OBJETIVO:
INTRODUCCIÓN:
ALGORITMO
Cholesky(MATRIZ A,entero N)
desde i = 0 hasta n
suma = 0.0;
desde k = 0 hasta j – 1
suma = 0.0;
desde k = 0 hasta i – 1
}
Observando el pseudocódigo es relativamente sencillo calcular el coste
computacional de la factorización de Cholesky. Dado que A es una matriz de
orden n, teniendo en cuenta que los métodos de substitución hacia delante y hacia
atrás son de coste n2 .
A=¿ C=¿
Solución:
i−1
a ki−∑ l ij l kj k−1
l ki= j=1
l ii √
l kk = akk − ∑ l 2kj
j=1
Entonces.
a21 15
l 11= √ a11= √6= 2.4495 l 21= = =6.1237
l 11 2.4495
a31 55
l 31= = =¿= 22.454 con l12 = 0
l 11 2.4495
a32−l 21 l 31 55−(6.1237)(22.454)
l 32= = = 20.916
l 22 4.1833
2.4495 0 0
L 6.1237 4.1833 0
22.454 20.916 6.1106
c 3−(l 31 d 1 +l 32 d 2 )
d 3= =100−¿ ¿ = -51.826
l 33
d3 d 2−u23 x 2
x 3= =¿-8.481 x 2= =36.690
u33 u33
(u ¿ ¿ 21 x 2+ u13 x 3)
x 1=d 1− ¿= 2.685
u 11
El resultado se puede comprobar multiplicando A por X y el resultado debe ser igual a C.
PROGRAMAS EN C++
#include
#include "Leer.h"
#include
if(f=fopen(nombrefichero,"r"),!f){
printf("Problema con la lectura del fichero\n");
return matriz;
}
fscanf(f,"%d\n",&(*dimension));
for(i=0;i<*dimension;i++)
for(j=0;j<*dimension;j++)
fscanf(f,"%lf\n",&(matriz[i][j]));
for(i=0;i<*dimension;i++)
fscanf(f,"%lf\n",&(matriz[i][*dimension]));
fclose(f);
return matriz;
}
MÉTODO DE LU EN C++
#include<iostream>
#include<stdio.h>
#include<conio.h>
int main()
{
int n,m,i,j,k;
float a[35][36],b[35][36];
do
{
system("cls");
cout<<"\n METODO DE DESCOMPOSICION LU"<<endl;
cout<<"\n Ingrese el número de Ecuaciones = ";
cin>>n;
cout<<"\n Ingrese 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\n SOLUCION DEL SISTEMA"<<endl;
for(i=1;i<=n;i++)
{
cout<<"\nX("<<i<<") = "<<a[i][1];
}
cout<<"\n\n Fin del programa";
getch();
}
while(1);
}