Méthode de cholesky
znnoubia
Messages postés
3
Statut
Membre
-
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
Pacorabanix Messages postés 4122 Date d'inscription Statut Membre Dernière intervention -
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();
}
-