Méthode de cholesky
Bonjour,
le professeur m'a demandé d'écrire un programme en langage c, qui utilise une matrice A et donne en sortie une matrice L qui est la décomposition de A à l'aide de l'algorithme de cholesky
voila le code source que j'au utilisé
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
double A[10][10]={0},L[10][10]={0},b[10]={0};
int i=0,j=0,k=0,n=0,l=0;
float somme;
printf("Donner l'ordre de la matrice\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("A[%d][%d]= ",i+1,j+1);
scanf("%f",&A[i][j]);
}
}
printf("\n\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%f",A[i][j]);
printf("\n\n");
}
L[0][0]=sqrt(A[0][0]);
for(i=1;i<n;i++)
{
for(j=0;j<i;j++)
{
somme=0;
for(k=0;k<j;j++)
{
somme=somme+L[i][k]*L[j][k];
}
L[i][j]=(A[i][j]-somme)/L[j][j];
}
somme=0;
for(k=0;k<i;k++)
{
somme=somme+(L[i][k]*L[i][k]);
}
L[i][i]=sqrt(A[i][i]-somme);
}
getchar();
}
il s'éxécute mais il me demande que l'ordre de la matrice et les différents éléments de A et ensuite il m'affiche A, pourtant moi j'ai besoin de L.
sssssssssssssssvpppppppppp aidez moi, c'est urgent
le professeur m'a demandé d'écrire un programme en langage c, qui utilise une matrice A et donne en sortie une matrice L qui est la décomposition de A à l'aide de l'algorithme de cholesky
voila le code source que j'au utilisé
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
double A[10][10]={0},L[10][10]={0},b[10]={0};
int i=0,j=0,k=0,n=0,l=0;
float somme;
printf("Donner l'ordre de la matrice\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("A[%d][%d]= ",i+1,j+1);
scanf("%f",&A[i][j]);
}
}
printf("\n\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%f",A[i][j]);
printf("\n\n");
}
L[0][0]=sqrt(A[0][0]);
for(i=1;i<n;i++)
{
for(j=0;j<i;j++)
{
somme=0;
for(k=0;k<j;j++)
{
somme=somme+L[i][k]*L[j][k];
}
L[i][j]=(A[i][j]-somme)/L[j][j];
}
somme=0;
for(k=0;k<i;k++)
{
somme=somme+(L[i][k]*L[i][k]);
}
L[i][i]=sqrt(A[i][i]-somme);
}
getchar();
}
il s'éxécute mais il me demande que l'ordre de la matrice et les différents éléments de A et ensuite il m'affiche A, pourtant moi j'ai besoin de L.
sssssssssssssssvpppppppppp aidez moi, c'est urgent
Configuration: Windows 7 Internet Explorer 8.0
1 réponse
-
bonjour,
et bien un programme fait seulement ce qu'on lui demande :for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%f",A[i][j]); printf("\n\n"); }
ce bout de code affiche la matrice A, c'est évident,
Et c'est évident aussi que je ne vois aucun morceau de code qui affiche quoi que ce soit après.
Cdlt-
bonjour et marci bien pour votre réponse Pacorabanix
donc
si j'ai bien compris, vous avez remarquer que j'ai demandé au programme que le faite de m'afficher la matrice A, pourtant j'ai ajouté encore un printf qui m'affiche la matrice L, et cette fois j'ai ni A ni L.
SVP essayez de voir pourquoi et merci d'avance
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
double A[10][10]={0},L[10][10]={0},b[10]={0};
int i=0,j=0,k=0,n=0,l=0;
float somme;
printf("Donner l'ordre de la matrice\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("A[%d][%d]= ",i+1,j+1);
scanf("%f",&A[i][j]);
}
}
printf("\n\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%f",A[i][j]);
printf("\n\n");
}
L[0][0]=sqrt(A[0][0]);
for(i=1;i<n;i++)
{
for(j=0;j<i;j++)
{
somme=0;
for(k=0;k<j;j++)
{
somme=somme+L[i][k]*L[j][k];
}
L[i][j]=(A[i][j]-somme)/L[j][j];
}
somme=0;
for(k=0;k<i;k++)
{
somme=somme+(L[i][k]*L[i][k]);
}
L[i][i]=sqrt(A[i][i]-somme);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%f",L[i][j]);
printf("\n\n");
}
}
getchar();
} -
@znnoubiac'est un problème avec le scanf je pense.
Je cherche de mon coté et je te tiens au courant. -
@Pacorabanixvoilà le problème, c'est que comme tu as des double, c'est %lf qu'il faut utiliser, pas %f . (qui est pour les float)
-