tp2.mw

TP2: Accélération de la convergence de  

 

Q1. 30 décimales sans accélération 

La somme étant alternée, l'erreur est majorée par le premier terme négligé.  

> f:=sum((-1)^(i+1)/i,i=1..n);
 

`+`(ln(2), `-`(`*`(`/`(1, 2), `*`(`^`(-1, n), `*`(`+`(Psi(`+`(`*`(`/`(1, 2), `*`(n)), 1)), `-`(Psi(`+`(`*`(`/`(1, 2), `*`(n)), `/`(1, 2))))))))))
 

Pour simplifier, on peut prendre la limite de la somme restante et on se demande quand cette valeur est inférieure à `^`(10, -30) 

> limit(f,n=infinity)/n^2-10^(-30);
 

`+`(`/`(`*`(ln(2)), `*`(`^`(n, 2))), `-`(`/`(1, 1000000000000000000000000000000)))
 

> solve(%,n);
 

`+`(`-`(`*`(1000000000000000, `*`(`^`(ln(2), `/`(1, 2)))))), `+`(`*`(1000000000000000, `*`(`^`(ln(2), `/`(1, 2)))))
 

> evalf(%[2]);
 

0.8325546112e15
 

Il faut donc de l'ordre de `^`(10, 15) termes. C'est trop ! 

 

Q2. Les premiers termes de S[`^`(2, m)] 

> S:=proc(N) local i, k; add(add((-1)^i/i,i=1..k)*(-1)^k/k^2,k=1..N) end;
 

proc (N) local i, k; add(`/`(`*`(add(`/`(`*`(`^`(-1, i)), `*`(i)), i = 1 .. k), `*`(`^`(-1, k))), `*`(`^`(k, 2))), k = 1 .. N) end proc
 

> Digits:=30:
 

> powmax:=10:
 

> v:=[seq(evalf(S(2^m)),m=1..powmax)];
 

[.875000000000000000000000000000, .931134259259259259259259259259, .950924014347802613108735557715, .956818098927480204488776077767, .958424462321593824542419388253, .958843482111555552968962267495, ....
[.875000000000000000000000000000, .931134259259259259259259259259, .950924014347802613108735557715, .956818098927480204488776077767, .958424462321593824542419388253, .958843482111555552968962267495, ....
 

> v[-1]-v[-2];
 

0.1702381662558243733099676e-5
 

Apparemment, ce calcul donne environ 6 décimales. 

Q3. Accélération de la convergence 

> estimrho:=proc(L) (L[-1]-L[-2])/(L[-2]-L[-3]) end;
 

proc (L) `/`(`*`(`+`(L[-1], `-`(L[-2]))), `*`(`+`(L[-2], `-`(L[-3])))) end proc
 

> estimrho(v);
 

.250651105265854341891777453144
 

> euleracc:=proc(L,rho) local i; [seq((L[i+1]-rho*L[i])/(1-rho),i=1..nops(L)-1)] end;
 

proc (L, rho) local i; [seq(`/`(`*`(`+`(L[`+`(i, 1)], `-`(`*`(rho, `*`(L[i]))))), `*`(`+`(1, `-`(rho)))), i = 1 .. `+`(nops(L), `-`(1)))] end proc
 

> euleracc(v,1/4);
 

[.949845679012345679012345679012, .957520599377317064391894323866, .958782793787372734948789584450, .958959916786298364560300491748, .958983155374876129111143227242, .958986123019394257786611964308, ....
[.949845679012345679012345679012, .957520599377317064391894323866, .958782793787372734948789584450, .958959916786298364560300491748, .958983155374876129111143227242, .958986123019394257786611964308, ....
 

> estimrho(%);
 

.125294602615921206002738883120
 

> T[0]:=v: for i while T[i-1]<>[] do T[i]:=euleracc(T[i-1],1/2^(i+1)) od;
 

 

 

 

 

 

 

 

 

 

[.949845679012345679012345679012, .957520599377317064391894323866, .958782793787372734948789584450, .958959916786298364560300491748, .958983155374876129111143227242, .958986123019394257786611964308, ....
[.949845679012345679012345679012, .957520599377317064391894323866, .958782793787372734948789584450, .958959916786298364560300491748, .958983155374876129111143227242, .958986123019394257786611964308, ....
[.958617016572312976588972701703, .958963107274523545028346050248, .958985220071859168790516335648, .958986475173244381189835046599, .958986546968611133311678926746, .958986551215120369240131494124, ....
[.958617016572312976588972701703, .958963107274523545028346050248, .958985220071859168790516335648, .958986475173244381189835046599, .958986546968611133311678926746, .958986551215120369240131494124, ....
[.958986179988004249590970940152, .958986694258348210374661021342, .958986558846670062016456293996, .958986551754968916786468518757, .958986551498220984968694998616, .958986551489808822592195200239, ....
[.958986179988004249590970940152, .958986694258348210374661021342, .958986558846670062016456293996, .958986551754968916786468518757, .958986551498220984968694998616, .958986551489808822592195200239, ....
[.958986710847714144593489733638, .958986554478551412069417431823, .958986551526204363714533429234, .958986551489938793619734562483, .958986551489537462515533916420, .958986551489532768991416342305]
[.958986710847714144593489733638, .958986554478551412069417431823, .958986551526204363714533429234, .958986551489938793619734562483, .958986551489537462515533916420, .958986551489532768991416342305]
[.958986551996501209965860728620, .958986551479341712153344794272, .958986551489363149649975850312, .958986551489531092180546604578, .958986551489532694491033523668]
[.958986551475269590123324983765, .958986551489442058606642236580, .958986551489532414562677082957, .958986551489532707107651530905]
[.958986551489497636914419951297, .958986551489532768899759572550, .958986551489532708254886724819]
[.958986551489532837651198593336, .958986551489532708136207912984]
[.958986551489532708009604794040]
[]
 

Le nombre de décimales obtenues est estimé par   

> T[9][-1]-T[8][-1];
 

-0.126603118944e-18
 

qui suggère 19. 

Commentaire sur le choix de rho; -1 

L'estimation empirique ci-dessus peut-être remplacée par une étude du comportement asymptotique du reste, qui est faite en bas de cette session. 

Q4. Les 100 premières valeurs 

> L:=[seq(add(add((-1)^(i)/i,i=1..k)*(-1)^k/k^2,k=1..N),N=0..100)]:
 

Q5. Une récurrence 

> rec:=gfun:-listtorec(L,u(n),['ogf']);
 

[{`+`(`*`(`+`(`*`(16, `*`(n)), 12, `*`(7, `*`(`^`(n, 2))), `*`(`^`(n, 3))), `*`(u(`+`(n, 1)))), `*`(`+`(`-`(`*`(`^`(n, 3))), `-`(`*`(8, `*`(`^`(n, 2)))), `-`(21), `-`(`*`(22, `*`(n)))), `*`(u(`+`(n, 2...
 

Q6. Une procédure 

> p:=gfun:-rectoproc(rec[1],u(n),evalfun=evalf);
 

proc (n) local i1, loc0, loc1, loc2, loc3, loc4; table( [( 0 ) = evalf(0), ( 1 ) = evalf(1), ( 2 ) = evalf(`/`(7, 8)), ( 3 ) = evalf(`/`(209, 216)) ] ) `assign`(loc0, evalf(0)); `assign`(loc1, evalf(1...
proc (n) local i1, loc0, loc1, loc2, loc3, loc4; table( [( 0 ) = evalf(0), ( 1 ) = evalf(1), ( 2 ) = evalf(`/`(7, 8)), ( 3 ) = evalf(`/`(209, 216)) ] ) `assign`(loc0, evalf(0)); `assign`(loc1, evalf(1...
proc (n) local i1, loc0, loc1, loc2, loc3, loc4; table( [( 0 ) = evalf(0), ( 1 ) = evalf(1), ( 2 ) = evalf(`/`(7, 8)), ( 3 ) = evalf(`/`(209, 216)) ] ) `assign`(loc0, evalf(0)); `assign`(loc1, evalf(1...
proc (n) local i1, loc0, loc1, loc2, loc3, loc4; table( [( 0 ) = evalf(0), ( 1 ) = evalf(1), ( 2 ) = evalf(`/`(7, 8)), ( 3 ) = evalf(`/`(209, 216)) ] ) `assign`(loc0, evalf(0)); `assign`(loc1, evalf(1...
proc (n) local i1, loc0, loc1, loc2, loc3, loc4; table( [( 0 ) = evalf(0), ( 1 ) = evalf(1), ( 2 ) = evalf(`/`(7, 8)), ( 3 ) = evalf(`/`(209, 216)) ] ) `assign`(loc0, evalf(0)); `assign`(loc1, evalf(1...
proc (n) local i1, loc0, loc1, loc2, loc3, loc4; table( [( 0 ) = evalf(0), ( 1 ) = evalf(1), ( 2 ) = evalf(`/`(7, 8)), ( 3 ) = evalf(`/`(209, 216)) ] ) `assign`(loc0, evalf(0)); `assign`(loc1, evalf(1...
proc (n) local i1, loc0, loc1, loc2, loc3, loc4; table( [( 0 ) = evalf(0), ( 1 ) = evalf(1), ( 2 ) = evalf(`/`(7, 8)), ( 3 ) = evalf(`/`(209, 216)) ] ) `assign`(loc0, evalf(0)); `assign`(loc1, evalf(1...
proc (n) local i1, loc0, loc1, loc2, loc3, loc4; table( [( 0 ) = evalf(0), ( 1 ) = evalf(1), ( 2 ) = evalf(`/`(7, 8)), ( 3 ) = evalf(`/`(209, 216)) ] ) `assign`(loc0, evalf(0)); `assign`(loc1, evalf(1...
proc (n) local i1, loc0, loc1, loc2, loc3, loc4; table( [( 0 ) = evalf(0), ( 1 ) = evalf(1), ( 2 ) = evalf(`/`(7, 8)), ( 3 ) = evalf(`/`(209, 216)) ] ) `assign`(loc0, evalf(0)); `assign`(loc1, evalf(1...
proc (n) local i1, loc0, loc1, loc2, loc3, loc4; table( [( 0 ) = evalf(0), ( 1 ) = evalf(1), ( 2 ) = evalf(`/`(7, 8)), ( 3 ) = evalf(`/`(209, 216)) ] ) `assign`(loc0, evalf(0)); `assign`(loc1, evalf(1...
proc (n) local i1, loc0, loc1, loc2, loc3, loc4; table( [( 0 ) = evalf(0), ( 1 ) = evalf(1), ( 2 ) = evalf(`/`(7, 8)), ( 3 ) = evalf(`/`(209, 216)) ] ) `assign`(loc0, evalf(0)); `assign`(loc1, evalf(1...
proc (n) local i1, loc0, loc1, loc2, loc3, loc4; table( [( 0 ) = evalf(0), ( 1 ) = evalf(1), ( 2 ) = evalf(`/`(7, 8)), ( 3 ) = evalf(`/`(209, 216)) ] ) `assign`(loc0, evalf(0)); `assign`(loc1, evalf(1...
proc (n) local i1, loc0, loc1, loc2, loc3, loc4; table( [( 0 ) = evalf(0), ( 1 ) = evalf(1), ( 2 ) = evalf(`/`(7, 8)), ( 3 ) = evalf(`/`(209, 216)) ] ) `assign`(loc0, evalf(0)); `assign`(loc1, evalf(1...
proc (n) local i1, loc0, loc1, loc2, loc3, loc4; table( [( 0 ) = evalf(0), ( 1 ) = evalf(1), ( 2 ) = evalf(`/`(7, 8)), ( 3 ) = evalf(`/`(209, 216)) ] ) `assign`(loc0, evalf(0)); `assign`(loc1, evalf(1...
proc (n) local i1, loc0, loc1, loc2, loc3, loc4; table( [( 0 ) = evalf(0), ( 1 ) = evalf(1), ( 2 ) = evalf(`/`(7, 8)), ( 3 ) = evalf(`/`(209, 216)) ] ) `assign`(loc0, evalf(0)); `assign`(loc1, evalf(1...
 

Q7. Vérification 

> evalf(p(200)-S(200));
 

-0.1212e-26
 

> evalf(p(200)-S(200),40);
 

-0.858e-37
 

Q8. Calcul des 15 premiers termes 

> powmax:=15:
 

> v:=[seq(p(2^m),m=1..powmax)]:v;
 

[.875000000000000000000000000000, .931134259259259259259259259259, .950924014347802613108735557715, .956818098927480204488776077756, .958424462321593824542419388199, .958843482111555552968962267464, ....
[.875000000000000000000000000000, .931134259259259259259259259259, .950924014347802613108735557715, .956818098927480204488776077756, .958424462321593824542419388199, .958843482111555552968962267464, ....
[.875000000000000000000000000000, .931134259259259259259259259259, .950924014347802613108735557715, .956818098927480204488776077756, .958424462321593824542419388199, .958843482111555552968962267464, ....
 

Q9. Gain de temps 

> for i from 10 to 16 do i,time(p(2^i)) od;
 

 

 

 

 

 

 

10, 0.29e-1
11, 0.60e-1
12, .121
13, .399
14, .569
15, 1.464
16, 2.829
 

Le temps de calcul est à peu près linéaire en l'indice. Il faut donc a l'apporche directe un nombre de secondes de l'ordre de  

> 10^15/2^%[1]*%[2];
 

43167114257.8125000000000000000
 

ou en années : 

> %/365/24/3600;
 

1368.82021365463280060882800609
 

Il est possible de gagner du temps en relachant la précision et en utilisant des flottants machines avec la commande evalhf: 

> for i from 10 to 20 do i,time(evalhf(p(2^i))) od;
 

 

 

 

 

 

 

 

 

 

 

10, 0.1e-2
11, 0.2e-2
12, 0.4e-2
13, 0.8e-2
14, 0.17e-1
15, 0.34e-1
16, 0.68e-1
17, .138
18, .276
19, .551
20, 1.107
 

ce qui réduit le nombre d'années à attendre à : 

> 10^15/2^%[1]*%[2]/365/24/3600;
 

33.4765813122056934931506849315
 

Le gain apporté par la récurrence est net : on passe d'une complexité quadratique à une complexité linéaire 

> for i from 10 to 13 do i,time(evalhf(S(2^i)))/time(evalhf(p(2^i))) od;
 

 

 

 

10, 187.000000000000000000000000000
11, 237.333333333333333333333333333
12, 407.428571428571428571428571429
13, 1028.63636363636363636363636364
 

Q10. Accélération de la convergence 

> T[0]:=v: for i while T[i-1]<>[] do T[i]:=euleracc(T[i-1],1/2^(i+1)) od;
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[.949845679012345679012345679012, .957520599377317064391894323866, .958782793787372734948789584436, .958959916786298364560300491680, .958983155374876129111143227218, .958986123019394257786611964026, ....
[.949845679012345679012345679012, .957520599377317064391894323866, .958782793787372734948789584436, .958959916786298364560300491680, .958983155374876129111143227218, .958986123019394257786611964026, ....
[.949845679012345679012345679012, .957520599377317064391894323866, .958782793787372734948789584436, .958959916786298364560300491680, .958983155374876129111143227218, .958986123019394257786611964026, ....
[.958617016572312976588972701703, .958963107274523545028346050232, .958985220071859168790516335572, .958986475173244381189835046580, .958986546968611133311678926427, .958986551215120369240131491284, ....
[.958617016572312976588972701703, .958963107274523545028346050232, .958985220071859168790516335572, .958986475173244381189835046580, .958986546968611133311678926427, .958986551215120369240131491284, ....
[.958617016572312976588972701703, .958963107274523545028346050232, .958985220071859168790516335572, .958986475173244381189835046580, .958986546968611133311678926427, .958986551215120369240131491284, ....
[.958986179988004249590970940135, .958986694258348210374661021261, .958986558846670062016456293981, .958986551754968916786468518417, .958986551498220984968694995608, .958986551489808822592195193708, ....
[.958986179988004249590970940135, .958986694258348210374661021261, .958986558846670062016456293981, .958986551754968916786468518417, .958986551498220984968694995608, .958986551489808822592195193708, ....
[.958986179988004249590970940135, .958986694258348210374661021261, .958986558846670062016456293981, .958986551754968916786468518417, .958986551498220984968694995608, .958986551489808822592195193708, ....
[.958986710847714144593489733556, .958986554478551412069417431811, .958986551526204363714533428883, .958986551489938793619734559389, .958986551489537462515533909775, .958986551489532768991416333803, ....
[.958986710847714144593489733556, .958986554478551412069417431811, .958986551526204363714533428883, .958986551489938793619734559389, .958986551489537462515533909775, .958986551489532768991416333803, ....
[.958986710847714144593489733556, .958986554478551412069417431811, .958986551526204363714533428883, .958986551489938793619734559389, .958986551489537462515533909775, .958986551489532768991416333803, ....
[.958986551996501209965860728608, .958986551479341712153344793916, .958986551489363149649975847175, .958986551489531092180546597876, .958986551489532694491033515137, .958986551489532707731020855444, ....
[.958986551996501209965860728608, .958986551479341712153344793916, .958986551489363149649975847175, .958986551489531092180546597876, .958986551489532694491033515137, .958986551489532707731020855444, ....
[.958986551475269590123324983407, .958986551489442058606642233421, .958986551489532414562677076228, .958986551489532707107651522359, .958986551489532707835272724265, .958986551489532707837028824386, ....
[.958986551475269590123324983407, .958986551489442058606642233421, .958986551489532414562677076228, .958986551489532707107651522359, .958986551489532707835272724265, .958986551489532707837028824386, ....
[.958986551489497636914419948127, .958986551489532768899759565808, .958986551489532708254886716265, .958986551489532707838126140743, .958986551489532707837035711053, .958986551489532707837033023774, ....
[.958986551489497636914419948127, .958986551489532768899759565808, .958986551489532708254886716265, .958986551489532707838126140743, .958986551489532707837035711053, .958986551489532707837033023774, ....
[.958986551489532837651198586586, .958986551489532708136207904426, .958986551489532707837310562317, .958986551489532707837033577139, .958986551489532707837033018515, .958986551489532707837032329223, ....
[.958986551489532837651198586586, .958986551489532708136207904426, .958986551489532707837310562317, .958986551489532707837033577139, .958986551489532707837033018515, .958986551489532707837032329223, ....
[.958986551489532708009604785479, .958986551489532707837018385052, .958986551489532707837033306381, .958986551489532707837033017969, .958986551489532707837032328549, .958986551489532707837029156028]
[.958986551489532708009604785479, .958986551489532707837018385052, .958986551489532707837033306381, .958986551489532707837033017969, .958986551489532707837032328549, .958986551489532707837029156028]
[.958986551489532707836934073181, .958986551489532707837033313671, .958986551489532707837033017829, .958986551489532707837032328213, .958986551489532707837029154478]
[.958986551489532707837033337905, .958986551489532707837033017757, .958986551489532707837032328045, .958986551489532707837029153703]
[.958986551489532707837033017718, .958986551489532707837032327961, .958986551489532707837029153316]
[.958986551489532707837032327919, .958986551489532707837029153122]
[.958986551489532707837029153025]
[]
 

> T[14][-1]-T[13][-1];
 

-0.97e-28
 

Ce résultat est trop proche de la précision de calcul. Il vaut donc mieux tout recommencer avec une précision supérieure : 

> Digits:=50:
 

> v:=[seq(p(2^m),m=1..powmax)]:
 

> T[0]:=v: for i while T[i-1]<>[] do T[i]:=euleracc(T[i-1],1/2^(i+1)) od:
 

> T[14][-1]-T[13][-1];
 

-0.6015530393787e-37
 

Q11. Identification 

> res:=evalf(T[14][-1],35);
 

.95898655148953270783703343754386777
 

> ?identify
 

> i:='i':sum((-1)^(k+1)/k^2*sum((-1)^(i+1)/i,i=1..infinity),k=1..infinity);
 

`+`(`*`(`/`(1, 12), `*`(`^`(Pi, 2), `*`(ln(2)))))
 

On prend les éléments de BasisSumConst de la page d'aide d'identify, auxquels on ajoute ce nombre : 

> basis:=[%,1,sqrt(2),sqrt(3),Pi,ln(2),ln(3),Zeta(3),Zeta(5)];
 

[`+`(`*`(`/`(1, 12), `*`(`^`(Pi, 2), `*`(ln(2))))), 1, `*`(`^`(2, `/`(1, 2))), `*`(`^`(3, `/`(1, 2))), Pi, ln(2), ln(3), Zeta(3), Zeta(5)]
 

> exact:=identify(res,BasisSumConst=basis);
 

`+`(`*`(`/`(1, 4), `*`(`^`(Pi, 2), `*`(ln(2)))), `-`(`*`(`/`(5, 8), `*`(Zeta(3)))))
 

Vérification avec un peu plus de décimales 

> evalf(exact,50)-T[14][-1];
 

0.1157418860565e-37
 

Le comportement asymptotique du reste 

Pour justifier l'utilisation de rho=2^(-i-1) lors de l'accélération, on peut calculer un développement asymptotique du reste. On part du sommant : 

> i:='i':
 

> Order:=20:
 

> asympt((-1)^(k+1)/k^2*sum((-1)^(i+1)/i,i=1..k),k);
 

`+`(`/`(`*`(`^`(-1, `+`(k, 1)), `*`(ln(2))), `*`(`^`(k, 2))), `-`(`/`(`*`(`/`(1, 2), `*`(`^`(-1, `+`(k, 1)), `*`(`^`(-1, k)))), `*`(`^`(k, 3)))), `/`(`*`(`/`(1, 4), `*`(`^`(-1, `+`(k, 1)), `*`(`^`(-1,...
`+`(`/`(`*`(`^`(-1, `+`(k, 1)), `*`(ln(2))), `*`(`^`(k, 2))), `-`(`/`(`*`(`/`(1, 2), `*`(`^`(-1, `+`(k, 1)), `*`(`^`(-1, k)))), `*`(`^`(k, 3)))), `/`(`*`(`/`(1, 4), `*`(`^`(-1, `+`(k, 1)), `*`(`^`(-1,...
 

> map(simplify,%) assuming k::posint;
 

`+`(`-`(`/`(`*`(`^`(-1, k), `*`(ln(2))), `*`(`^`(k, 2)))), `/`(`*`(`/`(1, 2)), `*`(`^`(k, 3))), `-`(`/`(`*`(`/`(1, 4)), `*`(`^`(k, 4)))), `/`(`*`(`/`(1, 8)), `*`(`^`(k, 6))), `-`(`/`(`*`(`/`(1, 4)), `...
 

Le reste doit donc se comporter comme  

> reste:=add((a[i]*(-1)^n+b[i])/n^(2+i),i=0..Order)+O(1/n^(Order+1));
 

`+`(`/`(`*`(`+`(`*`(a[0], `*`(`^`(-1, n))), b[0])), `*`(`^`(n, 2))), `/`(`*`(`+`(`*`(a[1], `*`(`^`(-1, n))), b[1])), `*`(`^`(n, 3))), `/`(`*`(`+`(`*`(a[2], `*`(`^`(-1, n))), b[2])), `*`(`^`(n, 4))), `...
`+`(`/`(`*`(`+`(`*`(a[0], `*`(`^`(-1, n))), b[0])), `*`(`^`(n, 2))), `/`(`*`(`+`(`*`(a[1], `*`(`^`(-1, n))), b[1])), `*`(`^`(n, 3))), `/`(`*`(`+`(`*`(a[2], `*`(`^`(-1, n))), b[2])), `*`(`^`(n, 4))), `...
`+`(`/`(`*`(`+`(`*`(a[0], `*`(`^`(-1, n))), b[0])), `*`(`^`(n, 2))), `/`(`*`(`+`(`*`(a[1], `*`(`^`(-1, n))), b[1])), `*`(`^`(n, 3))), `/`(`*`(`+`(`*`(a[2], `*`(`^`(-1, n))), b[2])), `*`(`^`(n, 4))), `...
 

pour des coefficients à déterminer. On construit d'abord un système (linéaire, triangulaire) d'équations pour ces coefficients : 

> asympt(reste-subs(n=n-1,reste)-subs(k=n,%%),n):
 

> map(simplify,%) assuming n::posint:
 

> convert(%,polynom): # supprime le O()
 

> subs((-1)^n=T, n=1/N,%):
 

> sys:={coeffs(expand(%),[T,N])};
 

{`+`(`*`(2, `*`(a[0])), `*`(2, `*`(a[1]))), `+`(`-`(`*`(2, `*`(b[0]))), `-`(`/`(1, 2))), `+`(ln(2), `*`(2, `*`(a[0]))), `+`(`*`(3, `*`(a[1])), `*`(3, `*`(a[0])), `*`(2, `*`(a[2]))), `+`(`-`(`*`(3, `*`...
{`+`(`*`(2, `*`(a[0])), `*`(2, `*`(a[1]))), `+`(`-`(`*`(2, `*`(b[0]))), `-`(`/`(1, 2))), `+`(ln(2), `*`(2, `*`(a[0]))), `+`(`*`(3, `*`(a[1])), `*`(3, `*`(a[0])), `*`(2, `*`(a[2]))), `+`(`-`(`*`(3, `*`...
{`+`(`*`(2, `*`(a[0])), `*`(2, `*`(a[1]))), `+`(`-`(`*`(2, `*`(b[0]))), `-`(`/`(1, 2))), `+`(ln(2), `*`(2, `*`(a[0]))), `+`(`*`(3, `*`(a[1])), `*`(3, `*`(a[0])), `*`(2, `*`(a[2]))), `+`(`-`(`*`(3, `*`...
{`+`(`*`(2, `*`(a[0])), `*`(2, `*`(a[1]))), `+`(`-`(`*`(2, `*`(b[0]))), `-`(`/`(1, 2))), `+`(ln(2), `*`(2, `*`(a[0]))), `+`(`*`(3, `*`(a[1])), `*`(3, `*`(a[0])), `*`(2, `*`(a[2]))), `+`(`-`(`*`(3, `*`...
{`+`(`*`(2, `*`(a[0])), `*`(2, `*`(a[1]))), `+`(`-`(`*`(2, `*`(b[0]))), `-`(`/`(1, 2))), `+`(ln(2), `*`(2, `*`(a[0]))), `+`(`*`(3, `*`(a[1])), `*`(3, `*`(a[0])), `*`(2, `*`(a[2]))), `+`(`-`(`*`(3, `*`...
{`+`(`*`(2, `*`(a[0])), `*`(2, `*`(a[1]))), `+`(`-`(`*`(2, `*`(b[0]))), `-`(`/`(1, 2))), `+`(ln(2), `*`(2, `*`(a[0]))), `+`(`*`(3, `*`(a[1])), `*`(3, `*`(a[0])), `*`(2, `*`(a[2]))), `+`(`-`(`*`(3, `*`...
{`+`(`*`(2, `*`(a[0])), `*`(2, `*`(a[1]))), `+`(`-`(`*`(2, `*`(b[0]))), `-`(`/`(1, 2))), `+`(ln(2), `*`(2, `*`(a[0]))), `+`(`*`(3, `*`(a[1])), `*`(3, `*`(a[0])), `*`(2, `*`(a[2]))), `+`(`-`(`*`(3, `*`...
{`+`(`*`(2, `*`(a[0])), `*`(2, `*`(a[1]))), `+`(`-`(`*`(2, `*`(b[0]))), `-`(`/`(1, 2))), `+`(ln(2), `*`(2, `*`(a[0]))), `+`(`*`(3, `*`(a[1])), `*`(3, `*`(a[0])), `*`(2, `*`(a[2]))), `+`(`-`(`*`(3, `*`...
{`+`(`*`(2, `*`(a[0])), `*`(2, `*`(a[1]))), `+`(`-`(`*`(2, `*`(b[0]))), `-`(`/`(1, 2))), `+`(ln(2), `*`(2, `*`(a[0]))), `+`(`*`(3, `*`(a[1])), `*`(3, `*`(a[0])), `*`(2, `*`(a[2]))), `+`(`-`(`*`(3, `*`...
{`+`(`*`(2, `*`(a[0])), `*`(2, `*`(a[1]))), `+`(`-`(`*`(2, `*`(b[0]))), `-`(`/`(1, 2))), `+`(ln(2), `*`(2, `*`(a[0]))), `+`(`*`(3, `*`(a[1])), `*`(3, `*`(a[0])), `*`(2, `*`(a[2]))), `+`(`-`(`*`(3, `*`...
{`+`(`*`(2, `*`(a[0])), `*`(2, `*`(a[1]))), `+`(`-`(`*`(2, `*`(b[0]))), `-`(`/`(1, 2))), `+`(ln(2), `*`(2, `*`(a[0]))), `+`(`*`(3, `*`(a[1])), `*`(3, `*`(a[0])), `*`(2, `*`(a[2]))), `+`(`-`(`*`(3, `*`...
{`+`(`*`(2, `*`(a[0])), `*`(2, `*`(a[1]))), `+`(`-`(`*`(2, `*`(b[0]))), `-`(`/`(1, 2))), `+`(ln(2), `*`(2, `*`(a[0]))), `+`(`*`(3, `*`(a[1])), `*`(3, `*`(a[0])), `*`(2, `*`(a[2]))), `+`(`-`(`*`(3, `*`...
{`+`(`*`(2, `*`(a[0])), `*`(2, `*`(a[1]))), `+`(`-`(`*`(2, `*`(b[0]))), `-`(`/`(1, 2))), `+`(ln(2), `*`(2, `*`(a[0]))), `+`(`*`(3, `*`(a[1])), `*`(3, `*`(a[0])), `*`(2, `*`(a[2]))), `+`(`-`(`*`(3, `*`...
{`+`(`*`(2, `*`(a[0])), `*`(2, `*`(a[1]))), `+`(`-`(`*`(2, `*`(b[0]))), `-`(`/`(1, 2))), `+`(ln(2), `*`(2, `*`(a[0]))), `+`(`*`(3, `*`(a[1])), `*`(3, `*`(a[0])), `*`(2, `*`(a[2]))), `+`(`-`(`*`(3, `*`...
{`+`(`*`(2, `*`(a[0])), `*`(2, `*`(a[1]))), `+`(`-`(`*`(2, `*`(b[0]))), `-`(`/`(1, 2))), `+`(ln(2), `*`(2, `*`(a[0]))), `+`(`*`(3, `*`(a[1])), `*`(3, `*`(a[0])), `*`(2, `*`(a[2]))), `+`(`-`(`*`(3, `*`...
 

Il n'y a plus qu'à résoudre. 

> solve(sys,indets(sys,name));
 

{a[0] = `+`(`-`(`*`(`/`(1, 2), `*`(ln(2))))), a[1] = `+`(`*`(`/`(1, 2), `*`(ln(2)))), a[2] = 0, a[3] = `+`(`-`(`*`(`/`(1, 2), `*`(ln(2))))), a[4] = 0, a[5] = `+`(`*`(`/`(3, 2), `*`(ln(2)))), a[6] = 0,...
{a[0] = `+`(`-`(`*`(`/`(1, 2), `*`(ln(2))))), a[1] = `+`(`*`(`/`(1, 2), `*`(ln(2)))), a[2] = 0, a[3] = `+`(`-`(`*`(`/`(1, 2), `*`(ln(2))))), a[4] = 0, a[5] = `+`(`*`(`/`(3, 2), `*`(ln(2)))), a[6] = 0,...
{a[0] = `+`(`-`(`*`(`/`(1, 2), `*`(ln(2))))), a[1] = `+`(`*`(`/`(1, 2), `*`(ln(2)))), a[2] = 0, a[3] = `+`(`-`(`*`(`/`(1, 2), `*`(ln(2))))), a[4] = 0, a[5] = `+`(`*`(`/`(3, 2), `*`(ln(2)))), a[6] = 0,...
 

> reste:=asympt(subs(%,reste),n,Order-1);
 

`+`(`/`(`*`(`+`(`-`(`*`(`/`(1, 2), `*`(ln(2), `*`(`^`(-1, n))))), `-`(`/`(1, 4)))), `*`(`^`(n, 2))), `/`(`*`(`+`(`*`(`/`(1, 2), `*`(ln(2), `*`(`^`(-1, n)))), `/`(1, 3))), `*`(`^`(n, 3))), `-`(`/`(`*`(...
`+`(`/`(`*`(`+`(`-`(`*`(`/`(1, 2), `*`(ln(2), `*`(`^`(-1, n))))), `-`(`/`(1, 4)))), `*`(`^`(n, 2))), `/`(`*`(`+`(`*`(`/`(1, 2), `*`(ln(2), `*`(`^`(-1, n)))), `/`(1, 3))), `*`(`^`(n, 3))), `-`(`/`(`*`(...
 

Dans les calculs, ce reste est toujours utilisé pour n pair : 

> map(simplify,reste) assuming n::even;
 

`+`(`-`(`/`(`*`(`/`(1, 4), `*`(`+`(`*`(2, `*`(ln(2))), 1))), `*`(`^`(n, 2)))), `/`(`*`(`/`(1, 6), `*`(`+`(`*`(3, `*`(ln(2))), 2))), `*`(`^`(n, 3))), `-`(`/`(`*`(`/`(1, 4)), `*`(`^`(n, 4)))), `-`(`/`(`...
`+`(`-`(`/`(`*`(`/`(1, 4), `*`(`+`(`*`(2, `*`(ln(2))), 1))), `*`(`^`(n, 2)))), `/`(`*`(`/`(1, 6), `*`(`+`(`*`(3, `*`(ln(2))), 2))), `*`(`^`(n, 3))), `-`(`/`(`*`(`/`(1, 4)), `*`(`^`(n, 4)))), `-`(`/`(`...
 

On note le caractère divergent de ce développement : les coefficients ne tendent pas vers 0. 

> evalf(%,10);
 

`+`(`-`(`/`(`*`(.5965735902), `*`(`^`(n, 2)))), `/`(`*`(.6799069238), `*`(`^`(n, 3))), `-`(`/`(`*`(.2500000000), `*`(`^`(n, 4)))), `-`(`/`(`*`(.2882402570), `*`(`^`(n, 5)))), `/`(`*`(.1041666667), `*`...
`+`(`-`(`/`(`*`(.5965735902), `*`(`^`(n, 2)))), `/`(`*`(.6799069238), `*`(`^`(n, 3))), `-`(`/`(`*`(.2500000000), `*`(`^`(n, 4)))), `-`(`/`(`*`(.2882402570), `*`(`^`(n, 5)))), `/`(`*`(.1041666667), `*`...
 

Ceci participe à l'explication du ralentissement de la convergence sur les dernières lignes: 

> seq(evalf(abs(exact-T[i][-1])),i=1..14);
 

0.2576462193059660670264481296257533902e-13, 0.99151469321519997200937931498615e-18, 0.26038238498754224800074963685e-21, 0.4486432416039730477452753e-25, 0.39838172357671785332311e-27, 0.150160895627...
0.2576462193059660670264481296257533902e-13, 0.99151469321519997200937931498615e-18, 0.26038238498754224800074963685e-21, 0.4486432416039730477452753e-25, 0.39838172357671785332311e-27, 0.150160895627...
0.2576462193059660670264481296257533902e-13, 0.99151469321519997200937931498615e-18, 0.26038238498754224800074963685e-21, 0.4486432416039730477452753e-25, 0.39838172357671785332311e-27, 0.150160895627...
 

>