Exercice 1. Que rend la fonction suivante :
FUNCTION MYSTERE (STRING, TAILLE) IMPLICIT NONE INTEGER :: TAILLE CHARACTER (LEN = TAILLE) :: STRING CHARACTER :: MYSTERE INTEGER :: J IF (TAILLE == 0) THEN MYSTERE = ' ' ELSE MYSTERE = STRING(1:1) DO J = 2, TAILLE IF ( STRING(J:J) < MYSTERE) MYSTERE = STRING(J:J) ENDDO ENDIF END FUNCTION MYSTEREEffectuer les 'print' suivant :
PRINT*,' print 1 = ', MYSTERE('EXAMEN',6) PRINT*,' print 2 = ', MYSTERE('YOYO',4)
Exercice 2. 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 :
Q(-1:9) = 2. * sin( T(1:11) )+ R U(-2:9, 0:20 ) = U(-2:9, 0:20) + V( -1:10, 5:25) * W(-1:10, 5:25) U(4,:) = V(3,:)/Q + 5. R = (/ (3.*i+1., i = 1, size(R)-2), -1., -2. /)
Exercice 3.
Soit
une matrice quelconque.
On décide de stocker uniquement les éléments
non nuls de , pour cela on considère la structure suivante :
TYPE element REAL :: coef INTEGER :: IndL, IndC END TYPE element TYPE(element), DIMENSION(:), ALLOCATABLE :: A
Dans la suite de l'exercice, toutes les matrices utilisées sont stockées sous cette forme.
A, A(i), A(i)%coef, A(i)%IndL, A(i)%IndC
9 * nombre de coefficients non nuls de la matrice -1. 1 1 * coef indL indC 4. 2 1 9. 2 3 10. 1 4 1. 3 1 -3. 4 2 3. 2 2 8. 4 4 5. 3 3Ecrire un procédure permettant de lire une matrice stockée sous cette forme.
On pourra écrire dans un module une surdéfinition de l'opérateur
(), afinque l'opération suivante
soit valide.
Ecrire un programme permettant de calculer une approximation du rayon
spectral d'une matrice A. On considère comme test d'arrêt pour
cette méthode itérative :
On peut eventuellement stocker le résultat dans un fichier de sortie.