Edit: j’ai vraiment l’impression que le problème vient de :
multipliée par A[i,j]
, qui se situe ici : https://fr.wikipedia.org/wiki/Élimination_de_Gauss-Jordan . Vous confirmez que j
correspond bien au numéro de la colonne en cours de traitement, et que A[i,j]
utilisée sur chaque ligne i
ne dépend, parmi toutes les colonnes, QUE de la colonne j
pour chaque ligne ?
======
@ache, je ne comprends pas ce que tu essaies de me faire remarquer. Je m’explique.
Le bout de code auquel tu fais référence me semble être la partie soustraction/multiplication. C’est-à-dire :
1 2 3 4 5 6 7 | content.indices.foreach(id_line => { if(id_line != id_last_pivot) { content.indices.foreach(id_column => { mutable_being_inversed_matrix(id_line)(id_column) -= mutable_being_inversed_matrix(id_line)(general_id_column) * mutable_being_inversed_matrix(id_last_pivot)(id_column) }) } }) |
Pour chaque ligne tu fais la première -1 à chaque terme multiplié terme à terme avec les autres
Non ; je fais : chaque ligne MOINS la case de cette ligne à la colonne courante FOIS la ligne du pivot. Dans l’algo de Wiki, c’est ce qui correspond à :
1 | | | | Soustraire à la ligne i la ligne r multipliée par A[i,j] (de façon à annuler A[i,j])Ajouter une constante à chaque terme d’une liste (en gros, tu ajoutes la ligne α(1,1,1,1) qui n’existe probablement pas encore
Je n’ajoute jamais de ligne dans mon code. Sauf si par "ajout" tu entends "soustraction" ? Mais ça c’est normal.
Multiplié deux listes liste terme à terme.
Non ; je soustrais deux listes terme à terme (c’est la définition que j’ai donnée à "Soustraire la ligne i à la ligne r […]").
Ce que tu as le droit de faire:
Multiplié une ligne par une constante différente de 0 Ajouter/soustraire une liste à une autre
C’est ce que je fais.
Ensuite il va falloir parcourir les lignes afin de d’obtenir que des 0 (sauf sur la ligne j) dans la colonne j, pour cela, tu soustraits la ligne normalisée (j donc) multipliée par le coefficient à annuler.
C’est bien ce que je fais.