Correction Sommes Finies
Correction Sommes Finies
Correction Sommes Finies
Pré-requis : l’objectif des premières séances de TP est de faire le point sur des fonctionnalités impor-
tantes de Scilab qui ont été vues en première année. Je vous invite à consulter les chapitres de cours
correspondants sur ma page : support informatique.
On pourra en particulier se reporter au « CH 7 : Les structures itératives ».
I Dans votre dossier Info_2a, créer le dossier TP_4.
I. Avant propos
On considère dans ce TP les suites (un )n2N et (vn ) suivantes :
8
n2 < v0 = 1
8n 2 N, un = n et 2 vn
3 : 8n 2 N, vn+1 =
evn +e vn
1 function S = calculSn(n)
2 S = 0
3 for i = 0:n
4 S = S + i ^ 2 / (3 ^ i)
5 end
6 endfunction
On trouve : S0 = 0, S5 ' 1.4115, S10 ' 1.4989, S100 ' 1.5 et S1000 ' 1.5.
(noter que l’affichage du résultat se fait avec un nombre fixé de chiffres après la virgule)
1
ECE2-B 2019-2020
1 function U = premSuiteU(n)
2 U = zeros(1,n+1)
3 for i = 1:n+1
4 U(i) = i ^ 2 / (3 ^ i)
5 end
6 endfunction
La fonction sum prend en paramètre une matrice et renvoie la somme de tous ses
cœfficients. Ici, on considère le vecteur [1, 2, 3, 4, 5] dont la somme vaut 15.
sum(premSuiteU(10))
I De même, que réalise l’appel [1,2; 1,1] ^ 2 ? Et l’appel [1,2; 1,1]. ^ 2 ? Et (1:5) ^ 2 ?
I Comment peut-on, par simple manipulation matricielle, créer le vecteur U des 101 premiers éléments
de la suite (un ) ? On commencera par stocker le vecteur 0:100 dans une variable N.
N = 0:100; U = (N . ^ 2) ./ (3 . ^ N)
(l’appel U = (N ^ 2) ./ (3 ^ N) convient aussi)
2
ECE2-B 2019-2020
II.2. Calcul de Tn
Il s’agit ici d’illustrer le cas où la suite (un ) est donnée sous forme récurrente.
On pourra utiliser une variable auxiliaire v afin de calculer les différents termes de (vn ).
1 function T = calculTn(n)
2 T = 1
3 v = 1
4 for i = 1:n
5 v = 2 ? v / (exp(v) + exp(-v))
6 S = S + v
7 end
8 endfunction
1 function V = premSuiteV(n)
2 V = zeros(1,n+1)
3 V(1) = 1
4 for i = 1:n
5 V(i+1) = 2 ? V(i) / (exp(V(i)) + exp(-V(i)))
6 end
7 endfunction
3
ECE2-B 2019-2020
sum(premSuiteV(10))
(n + 1)2
Sn+1 = Sn +
3n+1
I Quel appel, tirant parti des fonctionnalités Scilab, permet d’obtenir les 101 premiers éléments de
la suite (Sn ) ? On utilisera la fonction cumsum.
4
ECE2-B 2019-2020
P
III.2. Calcul des n premières sommes partielles de vn
I Soit n 2 N. Quel lien y a-t-il entre Tn et Tn+1 ?
Tn+1 = Tn + vn+1
À retenir : on a étudié deux méthodes en Scilab pour obtenir les éléments de (Sn ).
1) La suite des sommes partielles étant une suite (grande nouvelle), on peut se servir des
procédés vus en TP2.
2) On peut aussi préférer créer le vecteur des premiers éléments de la suite (un ) et utiliser
les instructions sum ou cumsum suivant ce que l’on cherche à obtenir. Encore une fois,
il faut se reporter au TP2.
P
IV. Tracé des sommes partielles de un
I Compléter le programme suivant afin qu’il permette d’effectuer le tracé des 51 premiers éléments
de (Sn ). On exécutera ce programme.
1 N = 0:50
2 U = (N . ^ 2) ./ (3 . ^ N)
3 tabS = cumsum(U)
4 plot(N, tabS, 'rx')
P
I Quelle conjecture peut-on émettre sur la nature de la série un ?
P
D’après la représentation graphique, on peut émettre l’hypothèse que un est une série
convergente, de somme 32 .
5
ECE2-B 2019-2020
1 U = zeros(1,100)
2 U(1) = 1
3 for n = 1 : 99
4 U(n+1) = 1 - exp(-U(n))
5 end
6 plot(U,"+")
1 X = 1 : 100
2 S = cumsum(U)
3 Y = log(X)
4 plot2d(X,S)
5 plot2d(X,Y)
Le programme ci-dessus permet d’obtenir la représentation graphique suivante :
• Le vecteur U contient les 100 premiers éléments de la suite (un ). L’opérateur cumsum
permet de calculer la somme P cumulée de ce vecteur. Ainsi, S contient les 100 premières
sommes partielles de la série un .
P
• D’après le tracé obtenu, on peut émettre l’hypothèse que la série un est divergente.
Plus précisément, que Sn ! +1.
n!+1
6
ECE2-B 2019-2020
On sait :
⇥ 8n 2 N, 0 6 n1 6 un .
P 1
⇥ La série n est une série de Riemann d’exposant 1 (1 6 >1).
n>1
P 1
Ainsi, la série n est divergente.
n>1
P
Donc, par le théorème de comparaison des séries à termes positifs, la série un diverge.
P
n 1 1
8n 2 N⇤ , S 6
k=1 f (k) (e 1) en
I En déduire une fonction Scilab qui calcule une valeur approchée de S à 10 4 près. (cf TP3)
1
• Si on sait : 6 10 4, on obtient par transitivité : |S Sn | 6 10 4.
(e 1) en
1
L’idée est donc de trouver le premier entier tel que : 6 10 4.
(e 1) en
On peut démontrer que cet entier vaut : d4 ln(10) ln(e 1)e (= 9) et ainsi, utiliser une
boucle for pour calculer S9 qui fournit l’approximation souhaitée.
1 function S = calcApprochS()
2 n = ceil(4 ? log(10) - log(exp(1)-1))
3 S = 0
4 for k = 1:n
5 S = S + 1 / (k ^ 3 ? exp(k))
6 end
7 endfunction
• Le deuxième choix est de calculer les valeurs successives de (Sn ) tant que
1 1
6 10 4 n’est pas vérifiée i.e. tant que > 10 4 .
(e 1) e n (e 1) en
1 function S = calcApprochS()
2 n = 1
3 S = 1 / exp(1)
4 while 1 / ((exp(1)-1) ? exp(n)) > 10 ^
(-4)
5 n = n + 1
6 S = S + 1 / (n ^ 3 ? exp(n))
7 end
8 endfunction
7
ECE2-B 2019-2020
I Écrire une fonction d’en-tête : function y = u(n) qui prend en argument un entier naturel n non
nul et qui renvoie la valeur de un .
1 function y = u(n)
2 S = 0
3 for k = 1:n
4 S = S + 1/k
5 end
6 y = S - log(n)
7 endfunction
Commentaire
P
n
Pour le calcul de la somme k,
1
on peut aussi tirer profit des fonctionnalités Scilab :
k=1
S = sum(1 ./ 1:n)