Resultat erroné

Fermé
calips - 25 janv. 2011 à 03:32
bonsoir
je travaille sur la methode de cholesky mais les resultats obtenu par mon programme sont just pour lees deux premiers colonnes seulement SVP aider moi le plus vite possible
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


int main()
{
float A[4][4]={0},L[4][4]={0},Lt[4][4]={0},b[10]={0};
int i=0,j=0,k=0,n=0,l=0,p,q;
float somme;
printf("Donner l'ordre de la matrice\n");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("A[%d][%d]= ",i,j);
scanf("%f",&A[i][j]);
}
}

printf("\n\n");
printf("la matice A:\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%f",A[i][j]);
printf("\n\n");

}
L[1][1]=sqrt(A[1][1]);//le 1er element


for(i=2;i<=n;i++)
{L[i][1]=A[i][1]/L[1][1];}//LES ELEMENT DE LA PREMIER COL
for(k=2;k<=n-1;k++)
{

for(j=1;j<=k-1;j++)
{ somme=0;
somme=somme+L[k][j]*L[k][j];
}

L[k][k]=sqrt(A[k][k]-somme);//les element DE la diagonale

for (i=k+1;i<=n;i++)
{ for(j=1;j<=k-1;j++)
{ somme=0;
somme=somme+L[i][j]*L[k][j];
}
L[i][k]=(A[i][k]-somme)/L[k][k];
}

}
for(j=1;j<n;j++)
{ somme=0;
somme+=L[n][j]*L[n][j];
}
L[n][n]=sqrt(A[n][n]-somme);
//la martice Lt =transposet de L
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++) Lt[i][j]=L[j][i];}
printf("\n printf la decomposition donne ::\n");
printf("\n L:\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf(" %f ",L[i][j]);
printf("\n\n");


}
printf("\n Lt:\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf(" %f ",Lt[i][j]);
printf("\n\n");


}

system("pause");
}