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

User

[Actualité] Suites récurrentes avec Python

Note : 2 votes pour une moyenne de 3,00.
par , 24/07/2023 à 10h09 (7354 Affichages)
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.

Nom : progression_arithmétique.png
Affichages : 7093
Taille : 6,4 Ko

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.

Nom : progression_geometrique.png
Affichages : 5114
Taille : 4,3 Ko

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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 :



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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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/

Envoyer le billet « Suites récurrentes avec Python » dans le blog Viadeo Envoyer le billet « Suites récurrentes avec Python » dans le blog Twitter Envoyer le billet « Suites récurrentes avec Python » dans le blog Google Envoyer le billet « Suites récurrentes avec Python » dans le blog Facebook Envoyer le billet « Suites récurrentes avec Python » dans le blog Digg Envoyer le billet « Suites récurrentes avec Python » dans le blog Delicious Envoyer le billet « Suites récurrentes avec Python » dans le blog MySpace Envoyer le billet « Suites récurrentes avec Python » dans le blog Yahoo

Commentaires