TP5 Maple
TP5 Maple
TP5 Maple
TP5
Suites numériques
Malheureusement, Maple ne parvient pas toujours à exprimer un en fonction de n. En effet, considérons la suite
u définie par:
u0 = u1 = 1 et ∀n ≥ 1, un+1 = u2n + un−1
les mêmes instructions sont inefficaces ici:
> eq:=u(n+1)=u(n)2 +u(n-1): rsolve({eq,u(0)=1,u(1)=1},u(n));
rsolve({u(0) = 1, u(1) = 1, u(n + 1) = u(n)2 + u(n − 1)}, u(n))
Dans ce cas, pour calculer les termes de la suite, on devra procéder par itération ou récursivité.
On construit une procédure qui prend pour argument une valeur n et renvoie le n-ème terme de la suite, à
l’aide d’une boucle for et des variables locales:
> u:=proc(n)
local u2,u1,u0,i;
if n=0 or n=1 then
u2:=1;
else
u1:=1;
u0:=1;
for i from 2 to n do
u2:=u12 +u0;
u0:=u1;
u1:=u2;
end do;
end if;
return u2;
end proc
1
Lycée Clémenceau - Reims MAPLE
1
1
2
290287121823
Calcul des termes par la méthode récursive:
La méthode récursive consiste à définir une procédure qui fera appel à elle-même. Plus précisément, pour
calculer le n-ème terme de la suite définie plus haut, il est nécessaire d’aller chercher les deux termes précédents
un−1 et un−2 , eux-mêmes nécessitant le calcul de termes précédents... Maple lance donc les procédures au fur
et à mesure jusqu’à obtenir u1 et u0 , puis il remonte tous ses calculs pour donner la valeur de un :
> u:=proc(n)
local resultat;
if n=0 or n=1 then
resultat:=1;
else resultat:=u(n-1)2 +u(n-2);
end if;
return resultat;
end proc
Cependant il s’agira de faire bien attention à ajouter l’option remember dans notre procédure. En effet, lorsque
Maple remonte la pile de ses calculs pour trouver un , il calcule toutes les valeurs uk (k < n) dont il a besoin
et cela même s’il les a déjà calculées. Cette option nous permet par conséquent de forcer Maple à remonter ses
calculs en se rappelant des valeurs rencontrées:
> u:=proc(n)
option remember;
local resultat;
if n=0 or n=1 then
resultat:=1;
else resultat:=u(n-1)2 +u(n-2);
end if;
return resultat;
end proc
De la même façon, on calcule le terme souhaité en appelant la procédure u:
> u(0);u(1);u(2);u(7);
1
1
2
290287121823
u0 = 1, u1 = 1 et ∀n ≥ 2, un = un−1 + un−2
2
Lycée Clémenceau - Reims MAPLE
2
Exercice 3 On considère la suite (wn ) définie par: w0 = 1 et ∀n ≥ 1, wn = wn−1 + 1.
1. Ecrire une procédure itérative qui, pour un entier n donné, calcule wn . Etablir une conjecture sur sa
convergence.
2. Modifier votre programme afin qu’il ne renvoie pas seulement wn , mais une liste avec toutes les valeurs
w0 , . . . , wn .
3. Les prochaines questions sont à résoudre indépendamment de Maple.
(a) Montrer que pour tout n ∈ N, wn ≥ 1.
(b) En déduire que la suite (wn ) est croissante, et que limn→+∞ wn = +∞.
• soit, quand elle est connue, en étudiant le module de la différence: |un − l|.
Dans ces deux cas, on observera la vitesse de convergence de la suite, c’est à dire la rapidité avec laquelle la
suite tend vers sa limite.
1
En guise d’exemple, considérons la suite réelle définie par: u1 = 1 et ∀n ≥ 2, un = un−1 + .
n2
1.643935565,1.643936561,1.643937555,1.643938547...
Ainsi, on remarque que cette suite converge lentement (n ∼ 2000) vers un nombre dont l’écriture décimale est:
1.644...
3
Lycée Clémenceau - Reims MAPLE
> approx:=proc(a)
local n,u;
n:=1; u:=1;
while evalf(abs(u-Pi2 /6))>=10−a do
n:=n+1; u:=u+1/n2 ;
end do;
return n;
end proc
Par conséquent, si on appelle cette procédure pour a = 4, on peut alors constater la lenteur de la convergence;
en effet, la suite approche sa limite à 10−4 près à partir du rang n = 10000:
> approx(4)
10000
1 2
Exercice 4 On considère la suite (un ) définie par u0 = 2 et ∀n ≥ 1, un = f (un−1 ) avec f : x 7→ (x + ).
2 x
1. Les prochaines questions sont à résoudre indépendamment de Maple.
√
(a) Montrer que pour tout n ∈ N, un est bien défini et un ≥ 2.
(b) Montrer que la suite (un ) est convergente et déterminer sa limite.
2. Ecrire une procédure approx(a) qui renvoie le rang à partir duquel la suite approche sa limite à 10−a
près.
1. Ecrire une procédure itérative syr1(N,n) qui renvoie une liste dans laquelle seront affichées les valeurs
u1 , . . . , un avec u1 = N .
3. Ecrire une procédure itérative syr2(N) qui calcule les valeurs un tant que un 6= 1, puis en sortie renvoie
le temps de vol obtenu.
4. Déterminer le temps de vol pour N = 15 et N = 222.