Décomposition d’algorithme en Fortran

Dans ce deuxième exemple, nous implantons la décomposition LU pour la résolution de systèmes linéaires Ax= b. Nous manipulons donc des tableaux. Nous montrons aussi comment décomposer
un grand programme en plusieurs sous-programmes. Certains d’entre eux pouvant servir ailleurs, nous les regroupons dans un module. En plaçant le module et le programme qui l’utilise dans deux
fichiers distincts, nous montrons comment compiler des applications composées de plusieurs fichiers sources, de façon éfficace grâce à la commande make.

La décomposition LU
Soit A une matrice dans R. Nous cherchons une matrice de permutation P (associée à la permutation ), une matrice triangulaire supérieure U et une matrice triangulaire inférieure avec des 1 sur la diagonale, toutes de même taille que A, telles que LUP = A. nn
Nous choisissons de multiplier par P à droite, ce qui correspond à une permutation des colonnes de A ainsi que des inconnues x, plutôt qu’à gauche, ce qui correspondrait à permuter les lignes de A, donc les équations (et le second membre b). En effet, en Fortran 95, les matrices sont stoquées colonnes par colonnes. Ainsi une permutation effective des colonnes consisterait à un échange de blocs de mémoires (contigues).

Entrées-sorties
Nous allons écrire un sous-programme. Comme un programme, il contient des déclarations et des instructions. Mais d’une part on peut l’appeler depuis un autre programme ou sous-programme (qu’on qualifiera de sur-programme pour le distinguer du sous-programme) ; et d’autre part, on peut lui fournir des arguments. En Fortran 95, c’est une subroutine. Les arguments sont passés par adresse. Pendant l’exécution du sous-progamme, les valeurs des variables arguments peuvent être lues (in) et modifiées. De sorte que le programme appelant peut ensuite lire les nouvelles valeurs des arguments (out).
Pour notre problème, les arguments du sous-programme sont le tableau m à deux indices, qui en entrée contient A et en sortie contient les coefficients utiles de L et U, et le tableau trans à un indice, qui en sortie contient de quoi nous permettre d’appliquer facilement la permutation  ainsi que son inverse. En plus du type, nous indiquons lors des déclarations, à l’aide de l’attribut dimension, que nous avons à faire à une matrice et un vecteur. Et pour les arguments, à l’aide de l’attribut intent, s’il s’agit d’entrée (in, lue seulement), de sortie (out pas lue avant d’être écrite) ou bien des deux simultanément.


Si le lien ne fonctionne pas correctement, veuillez nous contacter (mentionner le lien dans votre message)
Décomposition d’algorithme en Fortran (411 Ko) (Cours PDF)
Algorithme en Fortran

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *