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 MYSTERE
Effectuer 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.