suivant: Deux approximations de l'intégrale
monter: La méthode de Romberg
précédent: Les programmes
Table des matières
Index
On peut aussi reprendre le programme sur les séries
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
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
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
Documentation de giac écrite par Renée De Graeve