ESTE PROGRAMA ES ELAVORADO EN C++
#include<conio.h>
#include<stdio.h>
#include<math.h>
void llenarm(float matriz[100][100],int n){
for(int i=0;i<=n-1;i++){
for(int j=0;j<=n-1;j++){
printf("Ingresar A[%d][%d]=",i+1,j+1);
scanf("%f1.1",&matriz[i][j]);}
}
}
void llenarv(float B[100],int n){
for(int j=0;j<=n-1;j++){
printf("Ingresar B[%d]=",j+1);
scanf("%f1.1",&B[j]);}
}
void mostrar(float matriz[100][100],float B[100],int n){
for(int i=0;i<=n-1;i++){
printf("nn");
for(int j=0;j<=n-1;j++){
printf("t%f",matriz[i][j]);}
printf(" | %f",B[i]);
}
}
void mostrar2(float matriz[100][100],int n){
for(int i=0;i<=n-1;i++){
printf("nn");
for(int j=0;j<=n-1;j++){
printf("t%f",matriz[i][j]);}
}
}
//Funcion para hallar la tranpuesta de una matriz
void transpuesta(float m[100][100],float mt[100][100],int n){
int i,j;
for (i=0;i<=n-1;i++)
for(j=0;j<=n-1;j++){
mt[i][j]=m[j][i];}
}
//Funcion para hallar la descomposicion de Cholesky(L*Lt)
void cholesky(float A[100][100],float L[100][100],int n){
float s;
L[0][0]=sqrt(A[0][0]);
for(int j=1;j<=n-1;j++){
L[j][0]=A[j][0]/L[0][0];}
for(int i=1;i<=n-2;i++){
s=0;
for(int k=0;k<=i-1;k++){
s=s+pow(L[i][k],2);}
L[i][i]=sqrt(A[i][i]-s);
for(int j=i+1;j<=n-1;j++){
s=0;
for(int k=0;k<=i-1;k++){
s=s+L[j][k]*L[i][k];}
L[j][i]=(A[j][i]-s)/L[i][i];
}
}
s=0;
for(int k=0;k<=n-2;k++){
s=s+pow(L[n-1][k],2);}
L[n-1][n-1]=sqrt(A[n-1][n-1]-s);
}
//Funcion para encontrar las soluciones de un sistema triangular Inferior
void trianI(float I[100][100],float B[100],float y[100],int n){
float suma=0;
y[0]=B[0]/I[0][0];
printf("n%fn",y[0]);
for(int k=1;k<=n-1;k++){
suma=B[k];
for(int j=0;j<=k-1;j++){
suma=suma-I[k][j]*y[j];
}
printf("%fn",y[k]=suma/I[k][k]);
}
}
//Funcion para encontrar las soluciones de un sistema triangular Superior
void trianS(float S[100][100],float y[100],float x[100],int n){
float suma=0;
x[n-1]=y[n-1]/S[n-1][n-1];
printf("n%fn",x[n-1]);
for(int k=n-2;k>=0;k--){
suma=y[k];
for(int j=k+1;j<=n-1;j++){
suma=suma-S[k][j]*x[j];
}
printf("%fn",x[k]=suma/S[k][k]);
}
}
int main(){
float A[100][100],B[100],L[100][100],Lt[100][100],y[100],x[100];
int n;
printf("ttResolucion de Sistemas AX=B usando L*L^t(CHOLESKY)nn");
printf("Ingresar el numero de incognitas: ");
scanf("%d",&n);
printf("Ingresar An");
llenarm(A,n);
printf("Ingresar Bn");
llenarv(B,n);
printf("nEl Sistema ingresado es:n");
mostrar(A,B,n);
printf("nnPresionar cualquier tecla para mostrar L,L^tn");
getch();
cholesky(A,L,n);
printf("nL=n");
mostrar2(L,n);
printf("n");
transpuesta(L,Lt,n);
printf("nL^t=n");
mostrar2(Lt,n);
printf("nnPresionar cualquier tecla para mostrar las solucionesn");
getch();
printf("nnResolviendo Ly=Bny=");
trianI(L,B,y,n);
printf("nnResolviendo (L^t)x=ynLa solucion del Sistema Ax=B dado es:nx=");
trianS(Lt,y,x,n);
getch();
}
<>