Suites numériques en Python



Suites définies explicitement, à partir d'une fonction: un = f (n)

Exercice 1:
  1. Qu'affiche le programme suivant ?
    def u(n):
        return 3*n-2
    
    print(u(2))
    
    n=10
    print(u(n))
  2. Modifier le programme précédent pour qu'il calcule les termes de la suite (un) définie par l'expression
    un = 2n2−1 / n2+2
    Afficher en particulier les termes u10, u100, et u1000.
    Qu'observe-t-on pour des valeurs de plus en plus grandes de n ?
    Démontrer ce résultat par un calcul de limite.
Exercice 2:
Afficher la suite des nombres.
  1. Qu'affiche le programme suivant ?
    def u(n):
        return n**2-3
    
    for n in range(10):
        print(u(n))
    
    (Voir le paragraphe boucles sur des entiers du chapitre sur les boucles for)
  2. De la même façon, le programme suivant trace aussi les points correspondants sur un graphique
    from pylab import *
    def u(n):
        return n**2-3
    
    for n in range(10):
        plot(n,u(n),'*b')
    
    (Voir éventuellement le paragraphe graphiques avec Python)
  3. Modifier le programme précédent pour qu'il affiche et trace les 100 premiers termes de la suite (un) définie à la question 2. de l'exercice précédent.
  4. Modifier ce programme pour qu'il n'affiche et trace qu'un terme sur trois parmi les 100 premiers.
    Combien de termes ont été affichés ?
Exercice 3:
Afficher la suite des nombres, jusqu'à un certain point
  1. On considère la suite (un) définie explicitement par un = n2n + 1
    1. Déterminer la limite de cette suite.
    2. Déterminer le rang n0 à partir duquel on a, pour tout n ≥ n0, un≥1000
  2. Qu'affiche le programme suivant ?
    def u(n):
        return n**2-n+1
    
    n=0
    while u(n)<1000:
        print(u(n))	     
        n=n+1
    
    print(n)
    
    (Voir aussi les boucles conditonnelles while)
  3. On reprend la suite (un) définie à la question 2. de l'exercice 1. :
    un = 2n2−1 / n2+2

    On a vu que cette suite converge vers 2. Déterminer, algébriquement par le calcul d'une part et d'autre part numériquement et approximativement avec Python, le rang n, à partir duquel un devient supérieur à 1,999 ?

Suites définies par récurrence: un+1 = f (un)

Exercice 4:
  1. Qu'affiche le programme suivant ?
    def u(n):
        if n==0:
            return 2
        else: 
            return 3*u(n-1)-2
    
    print(u(0))
    print(u(1))
    print(u(2))
    
    n=10
    print(u(n))
    La fonction définie et utilisée ici s'appelle une fonctions récursive: c'est une fonction qui s'appelle elle-même…
  2. Modifier le programme précédent pour qu'il calcule les termes de la suite (un) définie par u0 = 1 puis par l'expression
    un+1 = 2un2+1 / un2+1
    Afficher en particulier les premiers termes jusqu'à u10, puis jusqu'à u30.
  3. Une autre manière de programmer les calculs des termes d'une suite récurrente est:
    u=1
    n=10
    for i in range(n):
        u=(2*u**2+1)/(u**2+1)
        print(u)
    
    qui calcule et affiche ici tous les premiers termes jusqu'à u10.
    1. Utiliser ce programme pour afficher en particulier les termes u10, puis u100 et u1000.
    2. Comparer l'exécution à celle du programme précédent.
    3. Qu'observe-t-on pour des valeurs de plus en plus grandes de n ?
  4. On définit la fonction f  telle que un+1 = f (un).
    1. Étudier le sens de variation de f.
      (voir le paragraphe courbe représentative d'une fonction pour tracer la courbe de cette fonction avec Python)
    2. Montrer que la suite (un) est croissante.
    3. Montrer que la suite (un) est majorée par 2.
    4. En déduire que la suite converge et donner une valeur approchée de sa limite.
Exercice 5:
On considère la suite (an) définie par a1 = 0,5 puis par la relation de récurrence an+1 = 0,5an + 0,3.
  1. Conjecturer, à l'aide Python, le sens de variation et la limite de cette suite.
  2. Montrer que, pour tout entier n ≥ 1, on a 0 ≤ un ≤ 0,6.
  3. Démontrer les conjectures précédentes: la suite (an) est croissante et convergente, et calculer exactement sa limite.

Somme des termes d'une suite

Exercice 6:
  1. Que calcule le programme suivant:
    n=int(input("Entrer n: "))
    s=0
    for i in range(n+1):
        s=s+i
        print("i= ",i, " - s= ",s)
    
  2. Modifier le programme précédent pour qu'il calcule, à un nombre n donné (ou demandé à l'utilisateur), les sommes:
    • S = 1 + 1/2 + 1/3 + 1/4 + 1/5 + …
    • T = 1 + 1/22 + 1/32 + 1/42 + 1/52 + …
    • U = 1 + 1/21 + 1/22 + 1/23 + 1/24 + …
  3. Quelles conjectures peut-on faire pour ces trois suites ?
Exercice 7:
On considère la suite (un) définie par u0 = 1 et par la relation de récurrence: pour tout entier naturel n , un+1 = f (un), où la fonction f est définie sur l'intervalle [ 0 ; +∞ [ par

f (x) = 5 − 4/x + 2

On définit de plus, pour tout entier naturel n, la somme (Sn) par
S_n = \sum_{k=0}^{n} u_k = u_0 + u_1 + \cdots + u_n.


  1. Calculer S0, S1 et S2. Donner une valeur approchée des résultats à 10−2 près.
  2. Compléter le programme Python suivant pour qu'il affiche la somme Sn pour la valeur de l'entier n demandée à l'utilisateur.
    u=1
    s=u
    i=0
    n=int(input("Entrer un nombre:"))
    
    while … 
        i=i+1
        u= … 
        s= … 
    
    print …
    
    
  3. Faire l'exercice complet (exercice posé au Bac S, en Nouvelle Calédonie en 2014).

Exercice 8:
Une association sportive compte 500 adhérents. On constate que, chaque mois,
  • 5% des adhérents ne renouvellent pas leur adhésion
  • 30 nouveaux adhérents s'inscrivent dans l'association
L'adhésion mensuelle coûte 10 euros.
  1. Écrire un programme qui calcule et affiche le nombre d'adhérents dans l'association mois après mois, pendant 2 ans.
  2. Calculer le montant total des cotisations perçues en 2 ans.
  3. Quel devrait être le montant de l'adhésion mensuelle pour que l'association puisse financer complètement une nouvelle installation qui coûte 20 000 euros ?

Un exemple de problème: dynamique de populations

Exercice 9:
  1. Un village comptait 2000 habitants l'année 2000. Chaque année depuis, cette population augmente de 3% d'une année à la suivante.
    1. Écrire un programme qui calcule le nombre d'habitants dans ce village en 2001, puis 2002, puis 2010, puis cette année.
    2. Modifier le programme précédent pour qu'il détermine en quelle année la population du village aura triplé.
  2. On observe maintenant des flux de population entre deux villes A et B. Il y a maintenant 50000 personnes qui habitent dans la ville A et 2000 dans le village B.
    Chaque année, 10% de la population de la ville A déménage pour aller habiter dans le village B, tandis que 30% des habitants du village B viennent habiter dans la ville A.
    Comment vont évoluer les populations de ces deux villes ?
    1. Écrire un programme qui calcule le nombre d'habitants, année aprés année, dans la ville A et dans le village B. Représenter graphiquement, sur un même graphique, l'évolution de ces populations en fontion de l'année, en rouge pour la ville A et bleu pour B.
    2. La population de la ville A évolue comme précédemment: 10% des habitants vont chaque année habiter en B. 30% des habitants de B vont encore aussi chaque année se déplacer vers A.
      On considère maintenant de plus que, chaque année, 5% des habitants de B vont ailleurs, ni en A ni en B.
      Modifier le programme précédent pour rendre compte graphiquement de la nouvelle évolution des populations.



Voir aussi:
LongPage: h2: 4 - h3: 0