IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Mathématiques et Python - Suites récurrentes avec Python,
Un billet blog de Denis Hulo

Le , par User

0PARTAGES

I. Introduction

En mathématiques, une suite, notée habituellement (𝑢𝑛), est composée d'une succession de nombres ou de termes ordonnés : 𝑢0, 𝑢1, ..., 𝑢𝑛, ...

Les suites sont présentes dans de nombreux domaines. En économie, elles peuvent par exemple servir à connaître la valeur d'un placement ou d'un capital au bout de n années.

On cherche généralement à calculer le terme de rang n à l'aide d'une fonction ou d'une relation de récurrence.

Dans notre cas, on va s'intéresser aux suites récurrentes dans lesquelles chaque terme s'obtient à partir des précédents à l'aide d'une relation de récurrence :

  1. Suite arithmétique
  2. Suite géométrique
  3. Suite arithmético-géométrique
  4. Suite récurrente linéaire

Puis, on va montrer comment générer en Python les premiers termes de ces suites, en donnant à chaque fois un exemple de mise en œuvre.

Enfin, on écrira une fonction générique qui prendra comme argument la fonction de récurrente de son choix.

II. Suites récurrentes

En mathématiques, une suite récurrente est une suite associée à une fonction 𝑓 (d’une ou plusieurs variables) appelée fonction de récurrence, laquelle permet de calculer chaque terme à partir des précédents par une relation de récurrence de la forme :

𝑢𝑛+𝑝 = 𝑓(𝑢𝑛, 𝑢𝑛+1, ..., 𝑢𝑛+𝑝-1)

𝑛 est un entier naturel et 𝑝 un entier supérieur à 0.

Soit plus simplement pour une fonction à une seule variable :

𝑢𝑛+1 = 𝑓(𝑢𝑛)

II-A. Suite arithmétique

En mathématiques, une suite arithmétique est une suite dans laquelle chaque terme permet de déduire le suivant en lui ajoutant une constante appelée raison.



Prenons par exemple la liste de termes :

𝑢0 = 1
𝑢1 = 3
𝑢2 = 5
𝑢3 = 7
...


On ajoute donc 2 au terme d'indice 𝑛 pour obtenir le suivant d'indice 𝑛+1. La relation de récurrence de la suite peut alors s'écrire :

𝑢𝑛+1 = 𝑢𝑛 + 2

avec comme terme initial :

𝑢0 = 1

Il s'agit en fait d'une suite arithmétique de raison 2 et de premier terme 1.

Dans le cas général, une suite arithmétique est donc définie par la relation de récurrence :

𝑢𝑛+1 = 𝑢𝑛 + 𝑟

avec le terme initial :

𝑢0 = 𝑎

où la constante 𝑟 désigne la raison de la suite et 𝑛 est un entier naturel.

II-B. Suite géométrique

Une suite géométrique est une suite de nombres dans laquelle chaque terme permet de déduire le suivant en le multipliant par un facteur constant appelé raison.



Prenons maintenant la liste ordonnée de termes :

𝑢0 = 5
𝑢1 = 10
𝑢2 = 20
𝑢3 = 40
𝑢4 = 80


On multiplie bien chaque terme par 2 pour obtenir le suivant. La relation de récurrence de la suite peut alors s'écrire :

𝑢𝑛+1 = 2𝑢𝑛

avec 𝑢0 = 5 comme terme initial

Dans le cas général, une suite géométrique est donc définie par la relation de récurrence :

𝑢𝑛+1 = 𝑞𝑢𝑛

avec le terme initial :

𝑢0 = 𝑎

où la constante 𝑞 désigne la raison de la suite et 𝑛 est un entier naturel.

II-C. Suite arithmético-géométrique

Une suite arithmético-géométrique est une suite satisfaisant une relation de récurrence affine, généralisant ainsi les définitions des suites arithmétiques et géométriques.

Elle est définie par la relation de récurrence :

𝑢𝑛+1 = 𝑎𝑢𝑛 + 𝑏

avec le terme initial 𝑢0

𝑎 et 𝑏 étant des constantes et 𝑛 un entier naturel

II-D. Suite récurrente linéaire

Une suite récurrente linéaire d'ordre p est définie par la relation de récurrence :

𝑢𝑛+𝑝 = 𝑎0𝑢𝑛 + 𝑎1𝑢𝑛+1 + ... + 𝑎𝑝-1𝑢𝑛+𝑝-1

𝑎0, 𝑎1, .., 𝑎𝑝-1 étant des constantes

Les suites récurrentes linéaires d’ordre 1 sont les suites géométriques.

III. Implémentation en Python

On souhaite maintenant traduire les différentes suites récurrentes en Python, en cherchant bien sûr à écrire du code le plus lisible possible.

On donnera également quelques exemples de mise en œuvre en mathématiques financières élémentaires.

III-A. Suite arithmétique

III-A-1. Fonction Python

En partant de la relation de récurrence :

𝑢𝑛+1 = 𝑢𝑛 + 𝑟

avec le terme initial 𝑢0

On peut facilement écrire la fonction Python :

Code Python : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def suite_arithmetique(u0,r,n): 
    # génère les n+1 premiers termes de la suite arithmétique de raison r et de terme initial u0 
  
    # on initialise la variable ui et la liste u avec le terme initial de la suite 
    ui = u0; u = [u0] 
  
    # parcours des indices des termes de la suite : 1 -> n 
    for i in range(1,n+1): 
        ui += r # ajout de r au terme précédent pour obtenir le terme d'indice i 
  
        u.append(ui) # ajout du terme obtenu à la liste 
  
    # renvoie la liste des n+1 premiers termes de la suite arithmétique 
    return u

Elle renvoie les 𝑛+1 premiers termes de la suite.

Note : au lieu d'ajouter chaque terme à une liste, on peut également choisir de l'afficher directement dans la boucle :

Code Python : Sélectionner tout
1
2
3
4
5
6
7
8
9
  
    ... 
    # parcours des indices des termes de la suite : 1 -> n 
    for i in range(1,n+1): 
        ui += r # ajout de r au terme précédent pour obtenir le terme d'indice i 
  
        print(f'u({i}) = {ui}') # affiche u(i) = .. 
  
    ...


III-A-2. Évolution d'un capital à intérêts simples

Une personne place un capital de C0=5000 euros à intérêts simples au taux annuel de t=0.05, c'est à dire qu'à la fin de chaque année on lui donne un intérêt égal à 5% de la somme déposée initialement.

Naturellement cette personne désire connaître la somme dont elle disposera au bout de 1 an, 2 ans, ...

On définit donc la suite de termes :

C0, C1, ..., C𝑛, ...

En partant d'un capital initial C0=5000, le capital augmente donc de 250 euros par an :

C𝑛+1 = C𝑛 + 250

Il suit donc une progression arithmétique de raison r=250 et de terme initial C0=5000.

La fonction précédente nous permet ainsi d'obtenir la liste des 11 premières valeurs du capital représentant son évolution sur 10 années :

Code Python : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
#1er terme de la suite : capital initial 
c0 = 5000 
  
# raison de la suite : augmentation annuelle du capital de 250 euros 
r = 250 
  
# liste des valeurs successives du capital sur 10 années 
valeurs_capital = suite_arithmetique(c0,r,10) 
  
print("Évolution du capital sur 10 années :") 
print(valeurs_capital)

Le code affiche :

Évolution du capital sur 10 années :
[5000, 5250, 5500, 5750, 6000, 6250, 6500, 6750, 7000, 7250, 7500]


III-B. Progression géométrique

III-B-1. Fonction Python

En partant cette fois de la relation de récurrence :

𝑢𝑛+1 = 𝑞𝑢𝑛

avec le terme initial 𝑢0

On peut facilement obtenir la fonction Python :

Code Python : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
def suite_geometrique(u0,q,n): 
    # génère les n+1 premiers termes de la progression géométrique de raison q et de terme initial u0 
  
    # on initialise la variable ui et la liste u avec le terme initial de la suite 
    ui = u0; u = [u0] 
  
    # parcours des indices des termes de la suite : 1 -> n 
    for i in range(1,n+1): 
        ui *= q # multiplication du terme précédent par q pour obtenir le terme d'indice i 
        u.append(ui) # ajout du terme obtenu à la liste 
  
    # renvoie la liste des n+1 premiers termes de la suite géométrique 
    return u

Elle renvoie donc les 𝑛+1 premiers termes de la suite géométrique.

III-B-2. Évolution d'un capital à intérêts composés

Une personne place un capital de C0=5000 euros à intérêts composés au taux annuel de t=0.05, c'est à dire qu'à la fin de chaque année on lui donne un intérêt égal à 5% du capital précédent.

On obtient ainsi la somme C𝑛+1 au bout de 𝑛+1 années en ajoutant 0.05xC𝑛 au capital précédent C𝑛 :

C𝑛+1 = C𝑛 + 0.05xC𝑛

C𝑛+1 = 1.05xC𝑛

avec comme terme initial :

C0 = 5000

L'évolution du capital suit donc une progression géométrique de raison q=1.05 et de terme initial C0 = 5000.

La fonction précédente nous permet ainsi d'obtenir l'évolution du capital sur par exemple 10 années :

Code Python : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#1er terme de la suite : capital initial 
c0 = 5000 
  
# raison de la suite géométrique : q = (1+t) avec t le taux d'intéret annuel 
q = 1.05 
  
# liste des valeurs successives du capital sur 10 années 
valeurs_capital = suite_geometrique(c0,q, 10) 
  
# liste des valeurs du capital arrondies à 2 décimales 
valeurs_capital2 = [float('%.2f' % ci) for ci in valeurs_capital] 
  
print("Évolution du capital sur 10 années :") 
print(valeurs_capital2)

Le code affiche :

Évolution du capital sur 10 années :
[5000.0, 5250.0, 5512.5, 5788.12, 6077.53, 6381.41, 6700.48, 7035.5, 7387.28, 7756.64, 8144.47]


III-C. Progression arithmético-géométrique

III-C-1. Fonction Python

En partant de la relation de récurrence :

𝑢𝑛+1 = a𝑢𝑛 + b

avec le terme initial 𝑢0

On peut facilement écrire la fonction Python :

Code Python : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
def suite_arithmetico_geometrique(u0,a,b,n): 
    # génère les n+1 premiers termes de la progression arithmético-géométrique de paramètres a et b, et de terme initial u0 
  
    # on initialise la variable ui et la liste u avec le terme initial de la suite 
    ui = u0; u = [u0] 
  
    # parcours des indices des termes de la suite : 1 -> n 
    for i in range(1,n+1): 
        ui = a*ui + b # calcul du terme d'indice i à partir du terme précédent 
        u.append(ui) # ajout du terme obtenu à la liste 
  
    # renvoie la liste des n+1 premiers termes de la suite arithmético-géométrique 
    return u


III-C-2. Évolution du capital restant dû

Un capital c emprunté à un taux mensuel t et remboursé par mensualités constantes m conduit à la construction d'une suite arithmético-géométrique.

Si R𝑛 représente le capital restant dû au bout de 𝑛 mensualités, la suite (R𝑛), est définie par la relation de récurrence :

R𝑛+1 = (1+t)R𝑛 - m

Pour un capital de départ c=10000, un taux mensuel t=0.004 et un remboursement mensuel de m=1000, on aboutit donc à la formule de récurrence :

R𝑛+1 = 1.004xR𝑛 - 1000

La fonction Python nous permet ainsi d'obtenir l'évolution du capital restant dû sur par exemple 10 mois :

Code Python : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#1er terme de la suite : capital initial 
r0 = 10000 
  
# raison de la suite géométrique : q = (1+t) avec t le taux d'intérêt mensuel 
a = 1.004 
b = -1000 
  
# liste des valeurs successives du capital restant dû sur 10 mois 
valeurs_capital = suite_arithmetico_geometrique(r0,a, b, 10) 
  
# liste des valeurs du capital arrondies à 2 décimales 
valeurs_capital2 = [float('%.2f' % ci) for ci in valeurs_capital] 
  
print("Évolution du capital restant dû sur 10 mois :") 
print(valeurs_capital2)

Le code affiche :

Évolution du capital restant dû sur 10 mois :
[10000.0, 9040.0, 8076.16, 7108.46, 6136.9, 5161.45, 4182.09, 3198.82, 2211.62, 1220.46, 225.34]


On peut également chercher à connaître le nombre de mois nécessaires pour rembourser en totalité l'emprunt, c'est à dire quand le capital restant dû est égal à 0.

III-D. Suite récurrente linéaire

III-D-1. Fonction Python

A partir de la relation de récurrence :

𝑢𝑛+𝑝 = 𝑎0𝑢𝑛 + 𝑎1𝑢𝑛+1 + ... + 𝑎p-1U𝑛+𝑝-1

𝑎0, 𝑎1, .., 𝑎𝑝-1 étant des constantes

On obtient la fonction Python :

Code Python : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def suite_recurrente_lineaire(a,u,n): 
    # génère les n+1 premiers termes de la suite récurrente linéaire à partir des listes de valeurs initiales a et u 
  
    # nombre de constantes ai ou de termes dans la relation de récurrence 
    p=len(a) 
  
    # parcours des indices des termes de la suite : p -> n 
    for i in range(p,n+1): 
	# calcul du terme d'indice i 
        ui = 0 
        for aj,uj in zip(a,u[i-p:]): 
            ui += aj*uj  
  
        u.append(ui) 
  
    # renvoie la liste des n+1 premiers termes de la suite récurrente linéaire 
    return u

Leas arguments 𝑎 et u désignent les listes contenant les constantes et les termes initiaux de la suite.

III-D-2. Générer les n+1 premiers termes de la suite de Fibonacci

La suite de Fibonacci possède de nombreuses propriétés, et est notamment liée au nombre d'or. Elle apparaît dans la nature sous de nombreuses formes biologiques (ramification des arbres, disposition des feuilles sur une tige, etc.)

En biologie, elle permet aussi de modéliser l'évolution d'une population d'abeilles sur une certaine période, etc.

Cette suite est définie par la relation :

𝐹𝑛+2 = 𝐹𝑛+1 + 𝐹𝑛

avec les termes initiaux :

𝐹0 = 0
𝐹1 = 1


On prend donc comme liste de coefficients :

a = [1, 1]

Et comme liste de premiers termes :

u = [0, 1]

Déterminons maintenant à l'aide de la fonction précédente les 6 premiers termes de la suite de Fibonacci :

Code Python : Sélectionner tout
1
2
3
4
5
6
7
8
a=[1,1] # liste des coefficients de la suite récurrente linéaire 
u=[0,1] # liste des 2 premiers termes de la suite de Fibonacci 
  
# génère les 6 premiers termes de la suite de Fibonacci  
suite_fibo5 = suite_recurrente_lineaire(a,u,5) 
  
print("6 premiers termes de la suite de Fibonacci :") 
print(suite_fibo5)

Le code affiche :

6 premiers termes de la suite de Fibonacci :
[0, 1, 1, 2, 3, 5]


III-E Suite récurrence généralisée

III-E-1. Fonction Python

En partant de la relation de récurrence vue précédemment :

𝑢𝑛+𝑝 = 𝑓(𝑢𝑛, 𝑢𝑛+1, ..., 𝑢𝑛+𝑝-1)

𝑛 et 𝑝 sont des entiers positifs, et 𝑓 une fonction d'une ou plusieurs variables.

On peut alors écrire la fonction Python :

Code Python : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
def suite_recurrente(u,f,n): 
    # génère les n+1 premiers termes de la suite définie par la relation de récurrence Un+p = f(Un, Un+1, ..., Un+p-1) 
  
    # nombre de termes initiaux dans u : nombre de variables de la fonction f  
    p=len(u) 
  
    # parcours des indices des termes de la suite : p -> n 
    for i in range(p,n+1): 
        ui = f(*u[i-p:]) # calcul du terme d'indice i à l'aide de la fonction f 
        u.append(ui) # ajout du terme obtenu à la liste 
  
    # renvoie la liste des n+1 premiers termes de la suite récurrente 
    return u

On passe donc une fonction f comme argument à la fonction principale.

A noter qu'en Python on peut passer les éléments d'une liste u comme les arguments d'une fonction f en ajoutant simplement une astérisque (*) devant la liste :

Code Python : Sélectionner tout
ui = f(*u)


III-E-2. Évaluation de la racine carrée d'un nombre

La suite de Héron définie par :

𝑢𝑛+1 = (𝑢𝑛 + A/𝑢𝑛)/2

converge vers la racine carrée de A.

Déterminons maintenant à l'aide de la fonction précédente une valeur approchée de la racine carrée de 2 correspondant au 5e terme de la suite de Héron :

Code Python : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
# fonction lambda permettant de passer du terme d'indice n à celui d'indice n+1 
f = lambda x: (x + 2/x)/2 
  
u=[1] # terme initial 
  
# génère les 6 premiers termes de la suite de Héron 
suite_heron5 = suite_recurrente(u, f, 5) 
  
print("6 premiers termes de la suite de Héron :") 
print(suite_heron5)

6 premiers termes de la suite de Héron :
[1, 1.5, 1.4166666666666665, 1.4142156862745097, 1.4142135623746899, 1.414213562373095]


III-E-3. Générer les n+1 premiers termes de la suite de Fibonacci

Comme on l'a déjà vu, la suite de Fibonacci est définie par la relation :

𝐹𝑛+2 = 𝐹𝑛+1 + 𝐹𝑛

avec les termes initiaux :

𝐹0 = 0
𝐹1 = 1


On prend donc comme liste de premiers termes :

u = [0, 1]

Déterminons maintenant à l'aide de la fonction précédente les 6 premiers termes de la suite de Fibonacci :

Code Python : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
# fonction permettant d'obtenir le terme d'indice n+2 dans la suite de Fibonacci en utilisant la relation de récurrence Fn+2 = Fn+1 + Fn 
def f(*u): 
    return u[0] + u[1] 
  
u=[0, 1] # 2 premiers termes de la suite de Fibonacci 
  
# génère les 6 premiers termes de la suite de Fibonacci 
suite_fibo5 = suite_recurrente(u, f, 5) 
  
print("6 premiers termes de la suite de Fibonacci :") 
print(suite_fibo5)

Le code affiche :

6 premiers termes de la suite de Fibonacci :
[0, 1, 1, 2, 3, 5]


III-F. Module complet

On donne enfin le code complet permettant d'effectuer les tests sur les différentes fonctions :

Code Python : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
def suite_arithmetique(u0,r,n): 
    # génère les n+1 premiers termes de la suite arithmétique de raison r et de terme initial u0 
  
    # on initialise la variable ui et la liste u avec le terme initial de la suite 
    ui = u0; u = [u0] 
  
    # print(f'u({0}) = {u0}') # affiche u(0) = .. 
  
    # parcours des indices des termes de la suite : 1 -> n 
    for i in range(1,n+1): 
        ui += r # ajout de r au terme précédent pour obtenir le terme d'indice i 
  
        u.append(ui) # ajout du terme obtenu à la liste 
  
        # print(f'u({i}) = {ui}') # affiche u(i) = .. 
  
    # renvoie la liste des n+1 premiers termes de la suite arithmétique 
    return u  
  
def suite_geometrique(u0,q,n): 
    # génère les n+1 premiers termes de la progression géométrique de raison q et de terme initial u0 
  
    # on initialise la variable ui et la liste u avec le terme initial de la suite 
    ui = u0; u = [u0] 
  
    # print(f'u({0}) = {u0}') # affiche u(0) = .. 
  
    # parcours des indices des termes de la suite : 1 -> n 
    for i in range(1,n+1): 
        ui *= q # multiplication du terme précédent par q pour obtenir le terme d'indice i 
  
        u.append(ui) # ajout du terme obtenu à la liste 
  
        # print(f'u({i}) = {ui}') # affiche u(i) = .. 
  
    # renvoie la liste des n+1 premiers termes de la suite géométrique 
    return u 
  
def suite_arithmetico_geometrique(u0,a,b,n): 
    # génère les n+1 premiers termes de la progression arithmético-géométrique de paramètres a et b, et de terme initial u0 
  
    # on initialise la variable ui et la liste u avec le terme initial de la suite 
    ui = u0; u = [u0] 
  
    # parcours des indices des termes de la suite : 1 -> n 
    for i in range(1,n+1): 
        ui = a*ui + b # calcul du terme d'indice i à partir du terme précédent 
  
        u.append(ui) # ajout du terme obtenu à la liste 
  
    # renvoie la liste des n+1 premiers termes de la suite arithmético-géométrique 
    return u 
  
def suite_recurrente_lineaire(a,u,n): 
    # génère les n+1 premiers termes de la suite récurrente linéaire à partir des listes de valeurs initiales a et u 
  
    # nombre de constantes ai ou de termes dans la relation de récurrence 
    p=len(a) 
  
    # parcours des indices des termes de la suite : p -> n 
    for i in range(p,n+1): 
	# calcul du terme d'indice i 
        ui = 0 
        for aj,uj in zip(a,u[i-p:]): 
            ui += aj*uj 
  
        u.append(ui) 
  
    # renvoie la liste des n+1 premiers termes de la suite récurrente linéaire 
    return u 
  
def suite_recurrente(u,f,n): 
    # génère les n+1 premiers termes de la suite définie par la relation de récurrence Un+p = f(Un, Un+1, ..., Un+p-1) 
  
    # nombre de termes initiaux dans u : nombre de variables de la fonction f  
    p=len(u) 
  
    # parcours des indices des termes de la suite : p -> n 
    for i in range(p,n+1): 
        ui = f(*u[i-p:]) # calcul du terme d'indice i à l'aide de la fonction f 
        u.append(ui) # ajout du terme obtenu à la liste 
  
    # renvoie la liste des n+1 premiers termes de la suite récurrente 
    return u 
  
  
# Progression arithmétique du capital 
  
print("I. Évolution du capital à intérêts simples : progression arithmétique\n") 
  
#1er terme de la suite : capital initial 
c0 = 5000 
  
# raison de la suite : augmentation annuelle du capital de 250 euros 
r = 250 
  
# liste des valeurs successives du capital sur 10 années 
valeurs_capital = suite_arithmetique(c0,r,10) 
  
print("Evolution du capital sur 10 années :") 
print(valeurs_capital) 
  
# Progression géométrique du capital 
  
print() 
print("II. Évolution du capital à intérêts composés : progression géométrique\n") 
  
#1er terme de la suite : capital initial 
c0 = 5000 
  
# raison de la suite géométrique : q = (1+t) avec t le taux d'intéret annuel 
q = 1.05 
  
# liste des valeurs successives du capital sur 10 années 
valeurs_capital = suite_geometrique(c0,q, 10) 
  
# liste des valeurs du capital arrondies à 2 décimales 
valeurs_capital2 = [float('%.2f' % ci) for ci in valeurs_capital] 
  
print("Évolution du capital sur 10 années :") 
print(valeurs_capital2) 
  
# Progression arithmético-géométrique 
print() 
print("III. Évolution du capital restant dû : progression arithmético-géométrique\n") 
  
#1er terme de la suite : capital initial 
r0 = 10000 
  
# raison de la suite géométrique : q = (1+t) avec t taux d'intérêt mensuel 
a = 1.004 
b = -1000 
  
# liste des valeurs successives du capital restant dû sur 10 mois 
valeurs_capital = suite_arithmetico_geometrique(r0,a, b, 10) 
  
# liste des valeurs du capital restant dû arrondies à 2 décimales 
valeurs_capital2 = [float('%.2f' % ci) for ci in valeurs_capital] 
  
print("Évolution du capital restant dû sur 10 mois :") 
print(valeurs_capital2) 
  
# Suite récurrente linéaire 
print() 
print("IV. Suite récurrente linéaire\n") 
  
# Suite de Fibonacci 
a=[1,1] # liste des coefficients de la suite récurrente linéaire 
u=[0,1] # liste des 2 premiers termes de la suite de Fibonacci 
  
# génère les 6 premiers termes de la suite de Fibonacci  
suite_fibo5 = suite_recurrente_lineaire(a,u,5) 
  
print("6 premiers termes de la suite de Fibonacci :") 
print(suite_fibo5) 
  
print() 
print("V. Suites récurrentes généralisées\n") 
  
# calcul de la racine carrée de 2 : méthode de Héron 
print("V-A. Calcul de la racine carrée de 2 - Méthode de Héron\n") 
  
# fonction lambda permettant de passer du terme d'indice n à celui d'indice n+1 
f = lambda x: (x + 2/x)/2 
  
u=[1] # terme initial 
  
# génère les 6 premiers termes de la suite de Héron 
suite_heron5 = suite_recurrente(u, f, 5) 
  
print("6 premiers termes de la suite de Héron :") 
print(suite_heron5) 
  
# génération des n+1 termes de la suite de Fibonacci 
print() 
print("V-B. Génération des n+1 termes de la suite de Fibonacci\n") 
  
# fonction permettant d'obtenir le terme d'indice n+2 dans la suite de Fibonacci en utilisant la relation de récurrence Fn+2 = Fn+1 + Fn 
def f(*u): 
    return u[0] + u[1] 
  
u=[0, 1] # 2 premiers termes de la suite de Fibonacci 
  
# génère les 6 premiers termes de la suite de Fibonacci 
suite_fibo5 = suite_recurrente(u, f, 5) 
  
print("6 premiers termes de la suite de Fibonacci :") 
print(suite_fibo5)


IV. Conclusion

Les suites récurrentes sont donc utilisées dans des domaines très variés (en mathématiques, en économie, en biologie, etc.).

Cette présentation nous aura notamment permis de mieux les reconnaître, ensuite, comme on a pu le constater, leur implémentation en Python ne pose pas vraiment de problème.

Sources :

https://fr.wikipedia.org/wiki/Suite_(mathématiques)
https://fr.wikipedia.org/wiki/Suite_r%C3%A9currente
https://fr.wikipedia.org/wiki/Suite_..._lin%C3%A9aire
https://fr.wikipedia.org/wiki/Math%C...s_commerciales
https://fr.wikipedia.org/wiki/Plan_de_remboursement
https://fr.wikipedia.org/wiki/Suite_de_Fibonacci
https://www.mathweb.fr/euclide/suite...s-avec-python/

Une erreur dans cette actualité ? Signalez-nous-la !