Re-bonjour, excusez-moi de solliciter à nouveau votre aide, mais j'en ai malheureusement encore besoin !
Après un court échange avec mon prof de maths, celui-ci m'a conseillé d'utiliser la méthode du pivot maximum. Après une intense recherche sur internet, j'ai réussi à trouver ce site :
http://www.polytech-lille.fr/cours-algos-calcul-scientifique/progrcsl.html#lu2Ou il est mentionné la fonction dont j'ai besoin (du moins c'est ce que je pense) :
- Code: Tout sélectionner
int sl_gauss_pivmax(double a[NMAX][NMAX],double b[NMAX],int n)
{
int i,j,k,l,err;
double max,pivot,coef,s;
double t[NMAX][N2MAX];
for(i=1;i=1;i--)
{
s=t[i][n+1];
for(j=i+1;j<=n;j++)
s-=t[i][j]*b[j];
b[i]=s/t[i][i];
}
}
return(err);
}
J'ai donc fait un test avec les matrices suivantes :
a=
0.5 0 0 0
0 0.5 0 0
0 0 0.5 0
0 0 0 0.5
b=
5
4
3
2
et voila l'output :
5
8
6
4
(alors qu'on devrait avoir 10,8,6,4)
Et voila pour une matrice "quelconque" :
a=
27.7 4.1
28 4.3
29 4.1
30 3.0
b=
1.01
-2.6
-2.7
-1.2
output :
1.01
-0.864198
-0.353086
-0.423457
(alors qu'on devrait avoir : 2.262, -1.157, -0.269, -0.465)
Voila, en espérant que vous puissiez m'aider à discerner le problème, voire à le résoudre ^^'
EDIT : J'ai trouvé! En fait je définissais mes tableaux avec une double type (i=0;i<n;i++) alors qu'il fallait que je parte de d càd (i=1;i<=n;i++)
:++: