Aller au contenu principal

Module 05 · Leçon 2

Applications classiques des suites récurrentes

180 minanalyse · pascal
Affichage du code

Ce que vous saurez faire

  • Calculer les termes d'une suite arithmétique
  • Calculer les termes d'une suite géométrique
  • Implémenter Fibonacci itératif

Avant de commencer

Une suite récurrente peut modéliser des situations concrètes : intérêts composés, population qui croît, fractale, motif de croissance. Voyons trois cas classiques.


1. Suite arithmétique

U(n) = U(n−1) + r, raison r constante.

FUNCTION TermeArith(a, r, n : integer) : integer;
VAR i, res : integer;
BEGIN
  res := a;
  FOR i := 1 TO n DO
    res := res + r;
  TermeArith := res;
END;

Formule fermée : U(n) = a + n × r (plus rapide, en O(1)).

Somme des n premiers termes

S(n) = (n+1) × (a + U(n)) / 2 (formule de la somme arithmétique).


2. Suite géométrique

U(n) = U(n−1) × q, raison q constante.

FUNCTION TermeGeo(a, q, n : integer) : real;
VAR
  i : integer;
  res : real;
BEGIN
  res := a;
  FOR i := 1 TO n DO
    res := res * q;
  TermeGeo := res;
END;

Formule fermée : U(n) = a × q^n.

Exemple : intérêts composés

Un placement de 1000 DT à 5% par an : combien après 10 ans ?

U(10) = 1000 × 1.05^10 ≈ 1628.89 DT.


3. Fibonacci : un cas particulier (ordre 2)

F(n) = F(n−1) + F(n−2) avec F(0) = 0, F(1) = 1.

Termes : 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …

FUNCTION Fibo(n : integer) : integer;
VAR
  i, a, b, c : integer;
BEGIN
  IF n < 2 THEN
    Fibo := n
  ELSE
  BEGIN
    a := 0; b := 1;
    FOR i := 2 TO n DO
    BEGIN
      c := a + b;
      a := b;
      b := c;
    END;
    Fibo := b;
  END;
END;

4. Trace : Fibonacci(6)

Trace d'exécution
0 / 6
Instructioniabc
01···????
02···????
03···????
04···????
05···????
06···????

5. Exercices

Exercice 1facile
Multiplier par 2

Écrire une fonction Doubler(n) qui calcule 2^n itérativement.

Voir le corrigé
FUNCTION Doubler(n : integer) : integer;
VAR i, res : integer;
BEGIN
  res := 1;
  FOR i := 1 TO n DO
    res := res * 2;
  Doubler := res;
END;
Exercice 2moyen
Croissance bactérienne (type bac courant)

Une population de bactéries double chaque heure. Au temps t = 0, on a N₀ = 100 bactéries. Écrire un programme qui demande t (en heures) et affiche la population à cet instant. Tester pour t = 0, 5, 10.

Voir le corrigé
PROGRAM Bacteries;
VAR
  N0, t, i : integer;
  N : integer;
BEGIN
  N0 := 100;
  Write('Temps t (heures) : ');
  Readln(t);
  N := N0;
  FOR i := 1 TO t DO
    N := N * 2;
  Writeln('Population à t=', t, ' : ', N);
END.

t=0 → 100, t=5 → 3200, t=10 → 102400.

Exercice 3difficile
Suite définie par cas (hors bac, bonus)

Soit U(n) définie par :

  • U(0) = 1
  • U(n) = U(n−1) / 2 si U(n−1) est pair
  • U(n) = 3 × U(n−1) + 1 sinon (suite de Syracuse)

Écrire un programme qui affiche les termes jusqu'à atteindre 1 (ou afficher 1000 termes max). Cas test : U(0) = 6.

Voir le corrigé
PROGRAM Syracuse;
VAR
  u, i : integer;
BEGIN
  Write('U(0) = ');
  Readln(u);
  i := 0;
  WHILE (u <> 1) AND (i < 1000) DO
  BEGIN
    Writeln('U(', i, ') = ', u);
    IF u MOD 2 = 0 THEN
      u := u DIV 2
    ELSE
      u := 3 * u + 1;
    i := i + 1;
  END;
  Writeln('U(', i, ') = ', u);
END.

Pour U(0)=6 : 6, 3, 10, 5, 16, 8, 4, 2, 1. (Conjecture de Syracuse : on atteint toujours 1, mais ce n'est pas prouvé en général.)


6. Erreurs fréquentes au bac

  • Mauvaise initialisation pour Fibonacci : a := 1, b := 1 donne la suite à partir de F(1), pas F(0).
  • Confondre l'ordre des affectations dans la mise à jour (a := b doit venir après le calcul de c).
  • Utiliser integer pour des suites à croissance exponentielle — dépassement de capacité à n ≈ 30 pour Fibo.

7. Quiz

Quiz (5 questions)

1

F(10) (Fibonacci avec F(0)=0, F(1)=1) vaut :

2

Pour Fibonacci itératif, combien d'appels de fonction pour calculer F(n) ?

3

Pourquoi la version récursive naïve de Fibonacci est-elle lente ?

4

Une suite arithmétique de raison r=3 et U(0)=2 donne :

5

Une suite géométrique de raison q=2 et U(0)=3 donne :

Bravo d'être arrivé jusqu'ici. Marquez la leçon terminée pour ancrer le progrès.