Probleme de matrice en fortran

Thom -  
 Spider -
Bonjour,
Voila mon probleme, j'ai un programme a faire en fortran or je ne sais pas du
tout programmer dans ce language. En effet je connais le C++ et le Java mais pas
le Fortran.
Voici le but de ce programme.
Faire un programme en relation avec les matrices de Hilbert.
Basiquement, on doit creer une matrice de Hilbert, l'inverser, et multiplier
celle-ci par l'inverse.
Cela doit nous donner l'identite de la matrice, mais cela ne sera pas due a des
erreurs numeriques. Ensuite, soustraire l'identite de la matrice a partir du
produit et afficher une indication (la ligne norme) de combien les erreurs
numerique sont.
La multiplication de matrice n'est pas commutative, il y a deux produits AB et
BA. Pour chaque matrice de Hilbert Hn, calculer la matrice residuelle gauche:
(Hn)-1 Hn-I
et la matrice residuelle droite:
Hn (Hn)-1-I

Voici quelques points a suivre:

1. Rechercher pour un element different de 0dams le colonne 1 de la matrice, au
niveau ou en dessous de la 1ere ligne

2. Si element non-zero trouve, la Matrice est singuliere

3. Echange de ligne si necessaire pour placer un element non-zero dans la
Matrice[I],[I]

3. Multiplier chaque element dans la ligne I par la meme valeur, tel que la
Matrice[I,I]=1.0

4. Ajouter les multiples de la ligne I a chaque autre ligne tel que la Matrice[I,
I] devienne le seul element non-zero dans la colonne I de la Matrice.


Example
Matrix Inverse
1/2 1 2 1 0 0
1 2 3 0 1 0
3 7 2 0 0 1

max=3, pivot_row=3; exchange rows i=1 and 3

3 7 2 0 0 1
1 2 3 0 1 0
1/2 1 2 1 0 0

pivot_factor = 1/3

1 7/3 2/3 0 0 1/3
1 2 3 0 1 0 multiple = -1 -1 -7/3 -2/3 0 0 -1/3
1/2 1 2 1 0 0 multiple = -1/2 -1/2 -7/6 -1/3 0 0 -1/6

1 7/3 2/3 0 0 1/3
0 -1/3 7/3 0 1 -1/3
0 -1/6 5/3 1 0 -1/6

max=-1/3, pivot_row=2; exchange rows i=2 and 2 (unnecessary)

1 7/3 2/3 0 0 1/3
0 -1/3 7/3 0 1 -1/3
0 -1/6 5/3 1 0 -1/6

pivot_factor = -3

1 7/3 2/3 0 0 1/3 multiple = -7/3 0 -7/3 49/3 0 -7 -7/3
0 1 -7 0 -3 1
0 -1/6 5/3 1 0 -1/6 multiple = 1/6 0 1/6 -7/6 0 -1/2 1/6

1 0 17 0 7 -2
0 1 -7 0 -3 1
0 0 1/2 1 -1/2 0

(Now only one choice for the pivot, namely 1/2.)

pivot_factor = 2

1 0 17 0 7 -2 multiple = -17 0 0 -17 -34 17 0
0 1 -7 0 -3 1 multiple = 7 0 0 7 14 -7 0
0 0 1 2 -1 0


1 0 0 -34 24 -2
0 1 0 14 -10 1
0 0 1 2 -1 0

Check

Matrix Inverse
1/2 1 2 -34 24 -2 (-17+14+4) (12-10-2) (-1+1+0) 1 0 0
1 2 3 * 14 -10 1 (-34+28+6) (24-20-3) (-2+2+0) = 0 1 0
3 7 2 2 -1 0 (-102+98-4) (72-70-2) (-6+7+0) 0 0 1

Si quelqu'un pouvait m'aider...
Merci beaucoup.

Cordialement.

1 réponse

Spider
 
Si tu connais bien le c++ t'as qu'à programmer ton logiciel dans ce langage. Une fois que ca marche c'est tout con !! t'as ka reprendre les commentaires et les traduire. (personnellement je ne connais tien en fortran mais la recherche d'instruction ne doit pas être un travail trop long)!
Bonne chance
0