accélération de convergence [MAPLE] - Divers - Programmation
MarshPosté le 22-05-2008 à 12:13:09
Bonjour Je souhaite écrire une procédure sous Maple visant à accélérer la convergence d'une série, en l'occurence la somme des 1/n².
J'ai donc écrit ceci :
richardson:=proc(n)
local s0,s1,k,j,st,S,puiss;
st[0]:=0;
//calcul de la somme sans accélération//
for k from 1 to 2^n do
st[k]:=st[k-1]+1/k^2;od;
s0[n]:=st[2^n];
//calcul avec l'accélération de convergence//
for j from 1 to n do
s1[0]:=0;
s0[0]:=1;
s0[1]:=3/2;
puiss:=2^j;
for k from 1 to 2^(n-j) do
st[j]:=(puiss*st[2*k-1]-st[k-1])/(puiss-1);
od;
od;
print(evalf(s0[n]),evalf(st[n]));
end;
Mon problème se situe dans la phase d'accélération, car je ne voit pas comment faire pour faire comprendre à Maple de réutiliser le terme st[j] dans le calcul du terme suivant.
Marsh Posté le 22-05-2008 à 12:13:09
Bonjour
Je souhaite écrire une procédure sous Maple visant à accélérer la convergence d'une série, en l'occurence la somme des 1/n².
J'ai donc écrit ceci :
richardson:=proc(n)
local s0,s1,k,j,st,S,puiss;
st[0]:=0;
//calcul de la somme sans accélération//
for k from 1 to 2^n do
st[k]:=st[k-1]+1/k^2;od;
s0[n]:=st[2^n];
//calcul avec l'accélération de convergence//
for j from 1 to n do
s1[0]:=0;
s0[0]:=1;
s0[1]:=3/2;
puiss:=2^j;
for k from 1 to 2^(n-j) do
st[j]:=(puiss*st[2*k-1]-st[k-1])/(puiss-1);
od;
od;
print(evalf(s0[n]),evalf(st[n]));
end;
Mon problème se situe dans la phase d'accélération, car je ne voit pas comment faire pour faire comprendre à Maple de réutiliser le terme st[j] dans le calcul du terme suivant.
Merci de votre aide.