Travaux pratiques : nombres en virgule flottante Université Bordeaux I Module I20

Travaux pratiques, semaine 3


Nombres en virgule flottante


  1. La fonction exponentielle vue en cours s'écrit :

    #include <math.h>
    
    double exponentielle (double x, double epsilon) {
      int n;
      double s = 1, u = 1;
      
      for (n = 1; fabs (u) > epsilon; n++) {
        u = u * x / n;
        s = s + u;
      }
      return s;
    }
    

    Comparer les résultats fournis par cette fonction, pour x < 0 et "grand" en valeur absolue, à ceux fournis en ajoutant, au début du corps de la fonction, la ligne :

      if (x < 0)
        return 1 / exponentielle (-x, epsilon);
    
    Utiliser la fonction exp de la bibliothèque standard mathématique, pour obtenir la valeur "exacte" (écrire une fonction main qui affiche les valeurs des trois fonctions).

  2. Expliquer les résultats produits par le programme suivant :
    void main (void) {
      double q, e;
    
      for (e = 1e-10 ; e > 1e-18 ; e = e /10 ) {
        q = 1 + e;
        q = q - 1;
        q = q / e;
        printf("%g %g\n", e, q);
      }
    }
    

  3. La valeur 1 est racine de l'équation
    x = 5 ( 4( x - 1
    5
    ) - 3)

    Expliquer les résultats produits par le programme suivant :

    void main (void) {
      int i;
      double x = 1;
    
      for (i = 1 ; i < 20 ; i++ ) {
        x = 5 * ( 4 * (x - 1 / 5.0) - 3);
        printf("%g\n", x);
      }
    }
    

  4. Compléter la fonction suivante pour calculer cosx à e près, en utilisant le développement en série usuel :

    cosx = 1 - x2
    2!
    + x4
    4!
    - x6
    6!
    + ¼+ (-1)n x2n
    (2n)!
    + ¼

    #include <math.h>
    
    double cosinus (double x, double epsilon) {
      int n;
      double u = ...;
      double s = ...;
    
      for (n = ... ; fabs(u) > epsilon ; n = ...) {
        u = ...
        s = ...
      }
      return s;
    }
    

    Ecrire la fonction main pour comparer les résultats avec ceux obtenus par la fonction cos de la bibliothèque mathématique standard.

  5. On considère la suite de Fibonacci définie par :
    ì
    í
    î
    F0 = 0 , F1 = 1 ,
    Fn+1 = Fn + Fn-1 , n > 0
    Ecrire une fonction qui calcule Fn, pour n donné, et une seconde fonction qui calcule :
    un = Fn
    Ö5
      avec   F = 1+Ö5
    2
    (F est le nombre d'or). Ecrire un programme qui compare Fn et un.


File translated from TEX by TTH, version 1.96.
On 20 Sep 1999, 17:38.