Exercice 1.
On désigne par T, Q, R des tableaux de rang un et U, V, W des tableaux de rang deux. Ecrire sous formes de boucles explicites les instructions suivantes :
T(1:11) = 2. * sin(Q(-1:9))+ R U(0:20, -2:9) = U(0:20, -2:9) + V( 5:25, -1:10) * W( 5:25, -1:10) U(:,3) = V(:,4)/Q + 5. R = (/ -1. , -4. , (3.*i+5., i = 1, size(R)-2) /)
Exercice 2.
Soit
une matrice triangulaire
inférieure
(i.e
pour
).
On décide alors de stocker uniquement la partie
inférieure de
, pour cela on considère la structure suivante :
TYPE ligne REAL, DIMENSION(:), ALLOCATABLE :: coef END TYPE ligne TYPE(ligne), DIMENSION(:), ALLOCATABLE :: A
Dans la suite de l'exercice, toutes les matrices utilisées sont supposées triangulaires inférieures et elles sont stockées sous cette forme.
A, A(i), A(i)%coef, A(i)%coef(j)
N = 4 ALLOCATE (A(N)) DO I = 1, N ALLOCATE (A(I)%coef(1:I)) ENDDO
Ecrire (dans un module) une surdéfinition de l'opérateur (), afin
que l'instruction suivante :
Ecrire un programme permettant de calculer une approximation de
l'inverse d'une matrice A. On considère comme test d'arrêt pour
cette méthode itérative :
On peut eventuellement lire la matrice
à partir d'un fichier
d'entrée et stocker l'inverse de
dans un autre.