Une suite définie par récurrence (ou suite récurrente) est une suite définie par son premier terme et la façon dont chaque terme (sauf le premier) est déterminé à partir du précédent.

Le principe d’une suite définie par récurrence est donc le suivant : on a le premier terme. À partir du premier terme, on peut déterminer le deuxième. À partir du deuxième, on peut déterminer le troisième, puis le quatrième, puis le cinquième, etc jusqu’au rang voulu. C’est exactement le principe d’une boucle !

Supposons qu’on ait une suite définie par récurrence sous la forme un+1=f(un) (où f est une fonction) et qu’on veuille calculer le terme de rang n, où n est un entier naturel.

Boucle non bornée « Tant que » ou « While »

On peut poser trois variables :

  • une variable n, de type entier, qui indique le rang du terme voulu (par exemple n sera égal à 5 si on veut calculer le terme de rang 5) ;
  • une variable index qui est un nombre entier initialisé à 0 et qui représente les rangs successifs jusqu’à n ;
  • une variable u, qui est un nombre réel (type float en Python) qui va prendre comme valeurs successives les termes de la suite.

Tant que index n’est pas égal au rang voulu, on calcule le terme suivant, c’est-à-dire : on u prend la valeur de f(u), où f est la fonction définissant la récurrence.

Observons un exemple. On veut calculer le terme de rang 5 de la suite géométrique de premier terme 1 et de raison 2. Autrement dit, on va multiplier 1 par 2, puis ce résultat par 2, etc.

u = 1       # on initialise u au premier terme de la suite
n = 5       # on veut calculer le terme de rang 5
index = 0   # le premier terme est de rang 0
while index <= 5:     # tant qu'on n'a pas atteint 5...
    u = u*2           # ...on calcule le terme suivant
    index = index + 1 # on passe au rang suivant
print(u)              # on affiche u5

Pour changer le premier terme de la suite, il faut modifier la ligne u=1. Si on veut un autre rang que 5, c’est n=5 qu’il faut changer. Enfin, pour une suite définie par récurrence sous la forme un+1=f(un), on remplace l’instruction u = u*2 par u = f(u) si cette fonction f est définie par ailleurs dans notre programme Python.

Boucle bornée « For »

Avec la boucle « for ... in range...« , on n’a pas besoin d’initialiser l’index ni de l’incrémenter, c’est fait dans la boucle. Mais attention ! Ne pas oublier que range(n) s’arrête à n-1. Autrement dit, si on veut, comme dans l’exemple précédent, le rang 5, il faut écrire range(6) et si on veut le terme de rang n il faut programmer range(n+1).

u = 1       # on initialise u au premier terme de la suite
n = 5       # on veut calculer le terme de rang 5
for index in range(n+1):
    u = u*2           # on calcule le terme suivant
print(u)              # on affiche u5

Une fonction

Il est possible de mettre tout ceci dans une fonction Python nommée calculerTermeRecurrence, qui va prendre trois paramètres :

  • un nombre réel premierTerme qui est le premier terme de la suite ;
  • une fonction f qui définit la relation de récurrence. Car, oui, on peut passer une fonction en paramètre !
  • une variable n, de type entier, qui indique le rang du terme voulu (par exemple n sera égal à 5 si on veut calculer le terme de rang 5 comme ci-dessus).

Cette fonction peut être programmée ainsi : 

def calculerTermeRecurrence(premierTerme,f,n):
    u = premierTerme
    for index in range(n+1):
        u = f(u)
    return u

Supposons que nous ayons programmé une fonction appelée double qui prend en paramètre un nombre x et renvoie 2*x. Pour obtenir l’exemple ci-dessus, il suffira de taper calculerTermeRecurrence(1,double,5).

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s