ESTE PROGRAMA FUE ELAVORADO CON C++
#include<stdio.h>
#include<conio.h>
void llenarm(float matrizA[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("%f",&matrizA[i][j]);}
}
}
void llenarv(float matrizB[100],int n){
for(int j=0;j<=n-1;j++){
printf("Ingresar B[%d]=",j);
scanf("%f",&matrizB[j]);}
}
void mostrar(float matrizA[100][100],float matrizB[100],int n){
for(int i=0;i<=n-1;i++){
printf("n");
for(int j=0;j<=n-1;j++){
printf("t%f",matrizA[i][j]);}
printf("t|t%f",matrizB[i]);
}
}
void fact(float A[100][100],float L[100][100],float D[100][100],int n){
for(int k=0;k<n;k++){
L[k][k]=1;}
for(int i=0;i<=n-1;i++){
float suma1=0;
for(int k=0;k<=i-1;k++)
{suma1=suma1+L[i][k]*L[i][k]*D[k][k];}
D[i][i]=A[i][i]-suma1;
float suma2=0;
for(int j=i+1;j<=n-1;j++)
{for(int k=0;k<=i-1;k++)
{suma2=suma2+L[j][k]*L[i][k]*D[k][k];}
L[j][i]=(A[j][i]-suma2)/D[i][i];}
}
}
void trianL(float L[100][100],float B[100],float y[100],int n){
float suma=0;
y[0]=B[0]/L[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-L[k][j]*y[j];
}
printf("%fn",y[k]=suma/L[k][k]);
}
}
void trianU(float D[100][100],float y[100],int n){
float x[100];
float suma=0;
x[n-1]=y[n-1]/D[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-D[k][j]*x[j];
}
printf("%fn",x[k]=suma/D[k][k]);
}
}
void invL(float L[100][100],float transL[100][100],int n){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
transL[j][i]=L[i][j];
}
}
}
int main(){
float A[100][100],L[100][100],D[100][100],B[100],y[100],z[100],transL[100][100],AXB[100][100];
int n;
printf("ttResolucion de Sistemas AX=Bn");
printf("tt ALGORITMO LDL^t n");
printf( "nIngresar numero de incognitas:");
scanf("%d",&n);
printf("Ingresar Atn");
llenarm(A,n);
printf("Ingresar Btn");
llenarv(B,n);
printf("nEl Sistema es AX=B:n");
mostrar(A,B,n);
fact(A,L,D,n);
invL(L,transL,n);
printf("nnttLy=Bn");
mostrar(L,B,n);
printf("nny =n");
trianL(L,B,y,n);
printf("nnttDz=yn");
mostrar(D,y,n);
printf("nnz =n");
trianL(D,y,z,n);
printf("nnttLtx=zn");
mostrar(transL,z,n);
printf("nnx =n");
trianU(transL,z,n);
getch();
getch();
}