Université de Pau et des pays de l`Adour T.
Transcription
Université de Pau et des pays de l`Adour T.
Université de Pau et des pays de l’Adour Département de mathématiques Licence de mathématiques, LMA-5 Année 2000-2001. Sujet A. T.-Z. Boulmezaoud CONTRÔLE CONTINU La calculatrice et tout document autre que le résumé concernant le cours sont interdits. NOM: Prénom: Date de naissance: Groupe: Les réponses à toutes les questions doivent être écrites directement sur la présente feuille. Veuillez donc inscrire votre nom, prénom, date de naissance et numéro de groupe en haut de cette page à droite. Exercice 1. On considère le programme: program essai integer :: m = 9, k = 2 real :: s = 10.0, z = 4.5 double precision :: x = 2.0, y = 2.5 logical :: ok s = s**(m/k**3-1) x = x**m*(k/m)/(y*k) m = (y-0.5)**(m/z) + y ok = .not.(.not. 2*k == k*k print *, "s = ", s print *, "x = ", x print *, "m = ", m print *, "ok = ", ok end .and. y == 2.5) Quelles sont les valeurs affichées par ce programme? Réponse: s= x= m= ok = Exercice 2. On considère les déclarations: integer, parameter integer real real, dimension(-5:5, 2:25) real, dimension(0:20, 0:17) real, dimension (2*n) integer, dimension (0:2*n+1) :: :: :: :: :: :: :: n = 4 l = 4, p=9 x = 5.2 a b c d Parmi les instructions qui suivent, lesquelles sont correctes et lesquelles sont incorrectes (cocher la case correspondante). Dans les cas où la réponse est “incorrecte” justifier très brièvement pourquoi (dans la case justification). INSTRUCTION p=x n=l b=a b(::2,::n)= 2*a(:,3::5) + 10 c=b d(2:2n+1) = c a = 5.e-3 b=x d=x CORRECTE INCORRECTE JUSTICATION Exercice 3. On considère les deux fonctions suivantes dont le paramètre est un entier n ≥ 1: function fonc(n) result(res) integer :: n, res, i, p res = 1 do i = 2, n p = n/i if ((n - p*i) == 0 .and. i < n) res = i enddo end function fonc !----------------------------------------------------recursive function calc(n) result(p) interface function fonc(n) result(res) integer :: n, res end function fonc end interface integer :: n, p, i if (n == 1) then p = 1 else if (n>=2 .and. fonc(n) == 1) then p = n + calc(n-1) else if (n >= 2) then p = calc(n-1) endif end function calc 1. Que calcule la fonction fonc? Réponse : 2. Que calcule la fonction calc? Réponse : Exercice 4. On considère le programme suivant: program test implicit none integer :: n, p, s1, s2 p = 2 n = 1 s1 = toto(p, n) s2 = toto(toto(p, n), n) print *, s1 print *, s2 contains function toto(m, i) integer :: m, i integer :: toto integer, save integer :: :: l = 1 n = 4 toto = m + l + n - i l = l + 2 end function toto end Quelles sont les deux valeurs de s1 et s2 affichées par ce programme: Valeur de s1 = Valeur de s2 = Exercice 5. On considère la fonction suivante: function Matmat(n, p, a) integer :: n, p integer, dimension(n, p) :: a integer, dimension(2*n-2, 2) :: Matmat Matmat(1:n-1, 1:2) = a(1:n-1,1:p:p-1) Matmat(n:2*n-2, 1:2) = a(2:n, p-1:p) end function Matmat Quel est le résultat renvoyé par cette fonction quand elle est appelée avec les trois paramètres n = 3, p = 3 et 1 2 3 a = 4 5 6 . 7 8 9 (on précisera le type et la valeur exacte du résultat) Réponse: Exercice 6. Soit f une fonction continue sur un intervalle [a, b]. On subdivise cet intervalle b−a en 2n petits intervalles [xk , xk+1 ] avec xk = a + kh pour tout k ∈ {0, 1, ..., 2n} et h = . On 2n pose yk = f (xk ), k = 0, 1, ..., 2n. On considère la régle d’approximation suivante (dite régle de Simpson): Z b f (x)dx ≈ (1) a h (y0 + 4y1 + 2y2 + 4y3 + ... + 2y2n−2 + 4y2n−1 + y2n ). 3 Écrire une fonction Simpson() ayant comme paramètres formels: • une fonction réelle func() qui, pour x donné (paramètre de func), renvoie la valeur f (x), • deux réels a et b (les limites de l’intervalle), • un nombre entier n (2n sera le nombre de pas), Z b et qui renvoie la valeur de l’intégrale f (x)dx calculée par l’approximation (??). a