Bonjour,
Je cherche une nouvelle methode pour inverser une matrice.
J'utilise actuellement la methode de Gauss-Jordan mais elle donne regulierement des erreurs.
Si vous voulez je peux vous joindre le code.
Bonjour,
Je cherche une nouvelle methode pour inverser une matrice.
J'utilise actuellement la methode de Gauss-Jordan mais elle donne regulierement des erreurs.
Si vous voulez je peux vous joindre le code.
peut tu nous le montré ?
Les pièges de l'Internet
Helix, réponse à une intrusion
"La plus grande gloire n'est pas de ne jamais tomber, mais de se relever à chaque chute." Confucius
"Si j'ai vu plus loin, c'est en me tenant sur les épaules de géants." Isaac Newton
ok,
Voila!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 void invert_mat( double ** mat, register int len_i) { int i,j,k; double val; make_mat( &mat2, len_i, 2*len_i); for(i=0; i<len_i; i++) { for(j=0; j<2*len_i; j++) { if (j<len_i) mat2[i][j]=mat[i][j]; else if(i==(j-len_i)) mat2[i][j]= 1; else mat2[i][j]=0; } } for(i=0; i<len_i; i++) // ligne { for(j=0; j<2*len_i; j++) mat2[i][j]=mat2[i][j]/mat2[i][i]; for(j=0; j<len_i; j++) { if(j!=i) { val = mat2[j][i]; for(k=0; k<2*len_i; k++) mat2[j][k] = mat2[j][k] - val * mat2[i][k]; } } } for(i=0; i<len_i; i++) for(j=0; j<len_i; j++) mat[j][i]=mat2[j][i+len_i]; //free_mat(mat2,len_i,2*len_i); }
Comment est déclarée mat dans un appel invert_mat( mat, len_i) ?
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 include <stdio.h> #include <conio.h> void main (){ int a[3][4]; int x[4][3]; int sum=0; //-------------------- input ------------------------ printf("\t\t\t OMAR ABO MAILEQ\n\t\t\t DEALINT WITH ARRAY\n\t\t\tQUDS OPEN UNVERSITY\n"); for (int i=0;i<3;i++) { printf("Enter four values: \n"); for (int j=0;j<4;j++) scanf("%d",&a[i][j]); } printf("\n\n"); //-------------------- output ------------------------ printf("THE ARRAY VALUS YOU INTERD: \n"); for (int i=0;i<3;i++) { for (int j=0;j<4;j++) printf("%d\t",a[i][j]); printf("\n");} //-------------------- sum --------------------------- for (int i=0;i<3;i++) { for (int j=0;j<4;j++) sum+=a[i][j];} printf("\nSUM OF ELEMENTS IS: %d\n\n",sum); //-------------------- make oposit ------------------- for (int i=0;i<4;i++) { for (int j=0;j<3;j++) x[i][j]=a[j][i];} //---------------------- output again ---------------- printf("\nNOW WE SWITCH THE ROWS & COLOMONS\n"); for (int i=0;i<4;i++) { for (int j=0;j<3;j++) printf("%d\t",x[i][j]); printf("\n");} //----------------------------------------------------- printf(" \n\n\t\t\tPRESS ANY KEY TO EXIT..."); getch(); } ]toujours le plus simple est le plus efficace
Non, ce que je veux dire, mat est-elle allouée par un malloc ou définie sous la forme int mat[3][3] par exemple ?
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
Que devient mat2[i][i] quand i == j? Est-ce que le reste des calculs pour cette ligne est correct? (A mon avis, non, et c'est là ton problème).Envoyé par babycrash
Envoyé par Jean-Marc.Bourguet
je n'ai effectivement pas cherche a debugger ce code aucune idee en fait de ce que deviens mat2[i][j] qd i==j?
ce que je sais est que le pgm fonctionne mais me donne des resultats aberrants
Si l'erreur se trouve la comment puis je la corrigee?
Merci, Pierre.
Partager