suivant: La transformation d'Euler pour
monter: Un exemple d'accélération de
précédent: Un exercice
Table des matières
Index
On peut écrire un programme qui va demander le nombre p
d'accélérations.
Si uk(p) désigne le k-ième terme de la série accélérée
p fois, on a :
(- 1)k/(k + 1) = 
+
uk(p)
avec
uk(p) =
On choisit de multiplier seulement à la fin par
et
de ne calculer que la somme des n premiers termes :
On met cette
somme dans la variable sg, pour cela on calcule
que l'on met dans la variable
gk :
au début sg=0 et gk=
(c'est la valeur pour k = 0)
puis, on ajoute gk à la somme sg, ensuite on calcule
que l'on met dans gk
(c'est la valeur pour k = 1) etc...
La variable sf sert au début à calculer
(- 1)k/(k + 1) puis,
sf sert à calculer la somme à rajouter

(qui vaut
1/2 + 1/8 + 1/24 pour p = 3 accélerations).
Dans le programme, on utilise la variable fact pour calculer
(p+1)! et la variable fact2 pour calculer
.
On écrit :
seriealt_sumacc(n,acc):={
local l,j,k,ls,sf,sg,gk,fact,fact2,alt,t0,p;
//calcul sans acceleration
sf:=0.0;
alt:=1;
for (k:=n;k>=0;k--) {
sf:=sf+alt/(k+1);
alt:=-alt;
}
if (alt==1) {
ls:=[-sf];}
else {
ls:=[sf];
}
t0:=0.5;
// sf maintenant est la somme a rajouter
sf:=0.0;
fact:=1;fact2:=1;
for (p:=1;p<=acc;p++){
sf:=sf+fact2*t0;
//calcul de p+1! et de p!/2^p
fact:=fact*(p+1);
fact2:=fact2*p/2;
//sg, somme(de k=0 a n) de la serie gk acceleree p fois
sg:=0.0;
//terme d'indice 0 (ds gk) de la serie acceleree p fois
//(sans p!/2^p=fact2)
gk:=1/fact;
//on conserve gk/2 dans t0 car il faut rajouter t0
//au prochain sf
t0:=gk/2;
sg:=sg+gk;
alt:=-1;
for (k:=1;k<=n;k++) {
gk:=1/(k+1);
//terme d'indice k (ds gk) de la serie acceleree p fois
//(sans p!/2^p=fact2)
for (j:=1;j<=p;j++) {
gk:=evalf(gk/(k+j+1));
}
sg:=sg+alt*gk;
alt:=-alt;
}
ls:=concat(ls,sf+fact2*sg);
}
return(ls);
}
On met ce programme dans un niveau éditeur de programmes (que l'on ouvre
avec Alt+p), puis on le teste et le valide avec OK et on tape
dans une ligne de commandes :
seriealt_sumacc(200,3)
On obtient :
[0.69562855486,0.693153307335,0.693147210666,0.693147180781]
On tape :
seriealt_sumacc(100,4)
On obtient :
[0.698073169409,0.693171208625,0.693147412699,
0.693147183892,0.693147180623]
suivant: La transformation d'Euler pour
monter: Un exemple d'accélération de
précédent: Un exercice
Table des matières
Index
Documentation de giac écrite par Renée De Graeve