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.