next up previous contents index
suivant: Deux approximations de l'intégrale monter: La méthode de Romberg précédent: Les programmes   Table des matières   Index

Application au calcul de $ \sum_{{k=1}}^{\infty}$f (k)

On peut aussi reprendre le programme sur les séries $ \sum_{{k=1}}^{\infty}$f (k) et écrire pour faire n accélérations :
serie_romberg(f,n):={
local l,l0,l1,puis,k,j,t,p;
// calcul des sommes s1,s2,s4,s8,...s2^n que l'on met ds l
 l:=[f(1)];
p:=1;
for (k:=1;k<=n;k++) {
t:=0.0
for (j:=p+1;j<=2*p;j++){
t:=t+f(j)
}
t:=l[k-1]+t;
l:= concat(l,t);
p:=2*p;
}
//debut de l'acceleration de Richardson
l0:=[l[0]];
for (k:=1;k<=n;k++) {
   l1:=[l[k]];
   //calcul des S_{k,j} (j=1..k) dans l1
   for (j:=1;j<=k;j++) {
      puis:=2^(j);
      l1[j]:=(puis*l1[j-1]-l0[j-1])/(puis-1);
    }
    l0:=l1;
}
return l1;    
}
On met ce programme dans un niveau éditeur de programmes (que l'on ouvre avec Alt+p), puis on le teste et on le valide avec OK.
On définit f :
On tape :
f(x):=1/x^2
On tape (on calcule $ \sum_{{k=1}}^{6}$4f (k)) :
serie_romberg(f,6)
On obtient cette somme après avoir subit 0,1,..6 accélérations :
[1.62943050141,1.64469373999,1.64492898925,1.64493403752,
1.64493409536,1.64493407424,1.64493406732]
Avec le programme richardson on avait :
1.62943050141, 1.64493406732
On tape (on calcule $ \sum_{{k=1}}^{2}$56f (k)) :
serie_romberg(f,8)
On obtient cette somme après avoir subit 0,1,..8 accélérations avec plus de déciamles :
[1.6410354363087,1.6449188676629,1.6449339873839,1.6449340668192,
1.6449340668791,1.6449340668489,1.6449340668477,1.644934066848,
1.6449340668481]
On sait que $ \tt\pi^2/6=1.6449340668482$

Documentation de giac écrite par Renée De Graeve