TP5 Maple

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 4

Lycée Clémenceau - Reims MAPLE

TP5
Suites numériques

1 Calcul des termes d’une suite numérique


S’il n’est pas difficile de travailler avec les suites sous Maple, il conviendra avant tout de comprendre comment
sont donnés les termes de la suite.

1.1 Suite définie explicitement


Si la suite est définie de façon explicite, du type un = f (n), on définira la suite u comme une expression
dépendant de la variable n.
Ainsi, le calcul des termes consiste simplement à évaluer une expression:
> u:=exp(-n)/n2 ; eval(u,n=10);
1 −10
e
100

1.2 Suite définie par une relation de récurrence


Si la suite est définie par récurrence sur plusieurs termes, du type un = f (un−1 , un−2 ...), on pourra essayer de
se ramener à une forme explicite grâce à la commande rsolve:
> eq:=u(n+1)=2*u(n): rsolve(eq,u(n));
u(0)2n
Si on connaı̂t les valeurs initiales, il suffit de remplacer le premier argument de la commande rsolve par
l’ensemble suivant: {equation, conditions initiales}
> eq:=u(n+1)=2*u(n): rsolve({eq,u(0)=sqrt(2)},u(n));
√ n
22

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é.

Calcul des termes par la méthode itérative:

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

On calcule le terme souhaité en appelant simplement la procédure u:


> u(0);u(1);u(2);u(7);

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

Exercice 1 On définit la suite (un ) par:

u0 = 1, u1 = 1 et ∀n ≥ 2, un = un−1 + un−2

Déterminer un en fonction de n. En déduire sa limite quand n → ∞.

Exercice 2 On définit la suite (vn ) par:


2
v0 = 0.5 et ∀n ≥ 1, vn =
3 − vn−1

1. Ecrire une procédure récursive qui, pour un entier n donné, calcule vn .


2. Calculer différentes valeurs vn , puis établir une conjecture sur sa convergence.

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 = +∞.

2 Calcul et approximation de la limite d’une suite


Si la suite est définie explicitement, la limite pourra être déterminée par la commande limit:
> limit(nn /n!,n=infinity)

Dans le cas contraire, on s’intéressera à sa limite de deux façons:
• soit par approximation de celle-ci en calculant les termes de la suite pour n assez grand,

• 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

2.1 Approximation de la limite


On commence par construire la procédure pour calculer les termes de la suite:
> u:=proc(n)
option remember;
local resultat;
if n=1 then
resultat:=1;
else resultat:=u(n-1)+1/n2 ;
end if;
return resultat;
end proc
On peut alors afficher la séquence des valeurs de la suite pour n assez grand:
> seq(evalf(u(1000+i)),i=1..1000)

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...

2.2 Vitesse de convergence


La suite (un ) désigne en fait une somme bien connue:
1 1 1 1 Pn 1 π2
1+ + 2 + 2 + . . . + 2 = k=1 2 dont la limite est .
22 3 4 n k 6
π2
Nous allons construire une procédure qui détermine la première valeur n pour laquelle |un − | < 10−a : celle-ci
6
nous donnera donc le rang à partir duquel un approche sa limite avec une précision de l’ordre de 10−a .

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.

Exercice 5 Soit N un entier. On définit la suite de Syracuse associée à l’entier N par:


(
un−1
(si un−1 pair)
u1 = N et ∀n ≥ 2, un = 3u2n−1 +1
2 (si un−1 impair)

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 .

2. Calculer syr1(15,50) et syr1(127,50).

On appelle temps de vol le plus petit indice p tel que up = 1.

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.

Vous aimerez peut-être aussi