tp4.mw

TP4 : Approximants de Padé 

I. Développement en série 

L'équation à résoudre est  

> deq:=diff(y(x),x)-1-y(x)^2;
 

`+`(diff(y(x), x), `-`(1), `-`(`*`(`^`(y(x), 2))))
 

avec sans utiliser la connaissance de la tangente. 

Q1. L'équation linéarisée 

> eval(deq,y(x)=y(x)+u(x))-deq;
 

`+`(diff(u(x), x), `-`(`*`(`^`(`+`(y(x), u(x)), 2))), `*`(`^`(y(x), 2)))
 

> expand(%);
 

`+`(diff(u(x), x), `-`(`*`(2, `*`(y(x), `*`(u(x))))), `-`(`*`(`^`(u(x), 2))))
 

> lindeq:=subs(u(x)^2=0,%)=deq;
 

`+`(diff(u(x), x), `-`(`*`(2, `*`(y(x), `*`(u(x)))))) = `+`(diff(y(x), x), `-`(1), `-`(`*`(`^`(y(x), 2))))
 

> dsolve(lindeq,u(x));
 

u(x) = `*`(`+`(Int(`*`(`+`(diff(y(x), x), `-`(1), `-`(`*`(`^`(y(x), 2)))), `*`(exp(`+`(`-`(`*`(2, `*`(Int(y(x), x)))))))), x), _C1), `*`(exp(Int(`+`(`*`(2, `*`(y(x)))), x))))
 

La valeur de _C1 est donnée par les conditions initiales : 

> eval(%,y(x)=0);
 

u(x) = `*`(`+`(Int(`+`(`-`(exp(`+`(`-`(`*`(2, `*`(Int(0, x)))))))), x), _C1), `*`(exp(Int(0, x))))
 

> value(%);
 

u(x) = `+`(`-`(x), _C1)
 

> equ:=subs(_C1=0,op(2,%%%));
 

`*`(exp(Int(`+`(`*`(2, `*`(y(x)))), x)), `*`(Int(`*`(`+`(diff(y(x), x), `-`(1), `-`(`*`(`^`(y(x), 2)))), `*`(exp(`+`(`-`(`*`(2, `*`(Int(y(x), x)))))))), x)))
 

Une procédure pour résoudre l'équation en série : 

> uu:=proc(y,n) local hom; hom:=series(exp(int(2*y,x)),x,n); series(hom*Int(1/hom*(diff(y,x)-1-y^2),x),x,n) end;
 

proc (y, n) local hom; `assign`(hom, series(exp(int(`+`(`*`(2, `*`(y))), x)), x, n)); series(`*`(hom, `*`(Int(`/`(`*`(`+`(diff(y, x), `-`(1), `-`(`*`(`^`(y, 2))))), `*`(hom)), x))), x, n) end proc
 

Q2. L'itération de Newton 

> newt:=proc(n) local y; if n=1 then x else y:=convert(newt(ceil(n/2)),polynom); Order:=n+1; series(y-uu(y,n),x,n+1) fi end;  
 

proc (n) local y; if n = 1 then x else `assign`(y, convert(newt(ceil(`+`(`*`(`/`(1, 2), `*`(n))))), polynom)); `assign`(Order, `+`(n, 1)); series(`+`(y, `-`(uu(y, n))), x, `+`(n, 1)) end if end proc
 

> S:=newt(32);
 

series(`+`(x, `*`(`/`(1, 3), `*`(`^`(x, 3))), `*`(`/`(2, 15), `*`(`^`(x, 5))), `*`(`/`(17, 315), `*`(`^`(x, 7))), `*`(`/`(62, 2835), `*`(`^`(x, 9))), `*`(`/`(1382, 155925), `*`(`^`(x, 11))), `*`(`/`(2...
series(`+`(x, `*`(`/`(1, 3), `*`(`^`(x, 3))), `*`(`/`(2, 15), `*`(`^`(x, 5))), `*`(`/`(17, 315), `*`(`^`(x, 7))), `*`(`/`(62, 2835), `*`(`^`(x, 9))), `*`(`/`(1382, 155925), `*`(`^`(x, 11))), `*`(`/`(2...
 

Vérification 

> series(S-tan(x),x,33);
 

series(`+`()+O(`^`(x, 33)),x,33)
 

II. Approximation 

Q3. Approximant de Padé 

> F:=numapprox[pade](S,x,[15,16]);
 

`/`(`*`(`+`(`-`(`*`(`/`(8, 11288163762500625), `*`(`^`(x, 15)))), `*`(`/`(4, 1886075816625), `*`(`^`(x, 13))), `-`(`*`(`/`(4, 2302900875), `*`(`^`(x, 11)))), `*`(`/`(22, 38229975), `*`(`^`(x, 9))), `-...
 

Q4. Graphes 

> S:=convert(S,polynom):
 

> plot([F,S,tan(x)],x=-20..20,view=-5..5);
 

Plot_2d
 

Q5. Valeurs en 1 

> L:=map(eval,[F,S],x=1)-[tan(1)$2];
 

[`+`(`-`(tan(1)), `/`(164104322274089999, 105370173575100901)), `+`(`-`(tan(1)), `/`(1334467394810770246446481, 856852057740605254453125))]
 

> evalf(evalf(L,100));
 

[-0.2734341263e-35, -0.7221793904e-6]
 

Q6. Vitesse de convergence 

> Digits:=40:
 

> listapprox:=[seq(numapprox[pade](S,x,[k,k]),k=1..16)];
 

[x, `/`(`*`(x), `*`(`+`(1, `-`(`*`(`/`(1, 3), `*`(`^`(x, 2))))))), `/`(`*`(`+`(`-`(`*`(`/`(1, 15), `*`(`^`(x, 3)))), x)), `*`(`+`(1, `-`(`*`(`/`(2, 5), `*`(`^`(x, 2))))))), `/`(`*`(`+`(`-`(`*`(`/`(2, ...
[x, `/`(`*`(x), `*`(`+`(1, `-`(`*`(`/`(1, 3), `*`(`^`(x, 2))))))), `/`(`*`(`+`(`-`(`*`(`/`(1, 15), `*`(`^`(x, 3)))), x)), `*`(`+`(1, `-`(`*`(`/`(2, 5), `*`(`^`(x, 2))))))), `/`(`*`(`+`(`-`(`*`(`/`(2, ...
[x, `/`(`*`(x), `*`(`+`(1, `-`(`*`(`/`(1, 3), `*`(`^`(x, 2))))))), `/`(`*`(`+`(`-`(`*`(`/`(1, 15), `*`(`^`(x, 3)))), x)), `*`(`+`(1, `-`(`*`(`/`(2, 5), `*`(`^`(x, 2))))))), `/`(`*`(`+`(`-`(`*`(`/`(2, ...
[x, `/`(`*`(x), `*`(`+`(1, `-`(`*`(`/`(1, 3), `*`(`^`(x, 2))))))), `/`(`*`(`+`(`-`(`*`(`/`(1, 15), `*`(`^`(x, 3)))), x)), `*`(`+`(1, `-`(`*`(`/`(2, 5), `*`(`^`(x, 2))))))), `/`(`*`(`+`(`-`(`*`(`/`(2, ...
[x, `/`(`*`(x), `*`(`+`(1, `-`(`*`(`/`(1, 3), `*`(`^`(x, 2))))))), `/`(`*`(`+`(`-`(`*`(`/`(1, 15), `*`(`^`(x, 3)))), x)), `*`(`+`(1, `-`(`*`(`/`(2, 5), `*`(`^`(x, 2))))))), `/`(`*`(`+`(`-`(`*`(`/`(2, ...
[x, `/`(`*`(x), `*`(`+`(1, `-`(`*`(`/`(1, 3), `*`(`^`(x, 2))))))), `/`(`*`(`+`(`-`(`*`(`/`(1, 15), `*`(`^`(x, 3)))), x)), `*`(`+`(1, `-`(`*`(`/`(2, 5), `*`(`^`(x, 2))))))), `/`(`*`(`+`(`-`(`*`(`/`(2, ...
[x, `/`(`*`(x), `*`(`+`(1, `-`(`*`(`/`(1, 3), `*`(`^`(x, 2))))))), `/`(`*`(`+`(`-`(`*`(`/`(1, 15), `*`(`^`(x, 3)))), x)), `*`(`+`(1, `-`(`*`(`/`(2, 5), `*`(`^`(x, 2))))))), `/`(`*`(`+`(`-`(`*`(`/`(2, ...
 

> evalf(subs(x=1,listapprox));
 

[1., 1.500000000000000000000000000000000000000, 1.555555555555555555555555555555555555556, 1.557377049180327868852459016393442622951, 1.557407407407407407407407407407407407407, 1.557407722401769008334...
[1., 1.500000000000000000000000000000000000000, 1.555555555555555555555555555555555555556, 1.557377049180327868852459016393442622951, 1.557407407407407407407407407407407407407, 1.557407722401769008334...
[1., 1.500000000000000000000000000000000000000, 1.555555555555555555555555555555555555556, 1.557377049180327868852459016393442622951, 1.557407407407407407407407407407407407407, 1.557407722401769008334...
[1., 1.500000000000000000000000000000000000000, 1.555555555555555555555555555555555555556, 1.557377049180327868852459016393442622951, 1.557407407407407407407407407407407407407, 1.557407722401769008334...
 

> seq(evalf(tan(1))-%[i],i=1..nops(%));
 

.557407724654902230506974807458360173087, 0.57407724654902230506974807458360173087e-1, 0.1852169099346674951419251902804617531e-2, 0.30675474574361654515791064917550136e-4, 0.3172474948230995674000509...
.557407724654902230506974807458360173087, 0.57407724654902230506974807458360173087e-1, 0.1852169099346674951419251902804617531e-2, 0.30675474574361654515791064917550136e-4, 0.3172474948230995674000509...
.557407724654902230506974807458360173087, 0.57407724654902230506974807458360173087e-1, 0.1852169099346674951419251902804617531e-2, 0.30675474574361654515791064917550136e-4, 0.3172474948230995674000509...
 

Chaque terme apporte environ 3 décimales. 

Q7. Mêmes calculs en 10 

> L:=map(eval,[F,S],x=10)-[tan(10)$2];
 

[`+`(`-`(tan(10)), `/`(934662715205830, 1441682689460483)), `+`(`-`(tan(10)), `/`(1549185059306001610982388286201381418434470410, 142580182408036714341))]
 

> evalf(L,100);
 

[-0.470743435475708072520532303524217931194969422211109574320975831250562534657665719879967142953234e-4, 10865360340699632978672320.78547855740080653464973409504782275114139085929473347652337703782552...
[-0.470743435475708072520532303524217931194969422211109574320975831250562534657665719879967142953234e-4, 10865360340699632978672320.78547855740080653464973409504782275114139085929473347652337703782552...
 

> evalf(subs(x=10,listapprox));
 

[10., -.3092783505154639175257731958762886597938, 1.452991452991452991452991452991452991453, -1.596788581623550401427297056199821587868, 0.4084629859103217219698012758731470007802e-1, 1.47978899348638...
[10., -.3092783505154639175257731958762886597938, 1.452991452991452991452991452991452991453, -1.596788581623550401427297056199821587868, 0.4084629859103217219698012758731470007802e-1, 1.47978899348638...
[10., -.3092783505154639175257731958762886597938, 1.452991452991452991452991452991452991453, -1.596788581623550401427297056199821587868, 0.4084629859103217219698012758731470007802e-1, 1.47978899348638...
[10., -.3092783505154639175257731958762886597938, 1.452991452991452991452991452991452991453, -1.596788581623550401427297056199821587868, 0.4084629859103217219698012758731470007802e-1, 1.47978899348638...
 

> seq(evalf(tan(10)-%[i]),i=1..nops(%));
 

-9.351639172540913328740875066990191323183, .9576391779745505887848981288860973366107, -.8046306255323663201938665199816443146361, 2.245149409082637072686421989209630264685, .6075145288680544990621448...
-9.351639172540913328740875066990191323183, .9576391779745505887848981288860973366107, -.8046306255323663201938665199816443146361, 2.245149409082637072686421989209630264685, .6075145288680544990621448...
-9.351639172540913328740875066990191323183, .9576391779745505887848981288860973366107, -.8046306255323663201938665199816443146361, 2.245149409082637072686421989209630264685, .6075145288680544990621448...
-9.351639172540913328740875066990191323183, .9576391779745505887848981288860973366107, -.8046306255323663201938665199816443146361, 2.245149409082637072686421989209630264685, .6075145288680544990621448...
 

La convergence semble encore géométrique, quoique plus lente. 

Q8. Les racines du dénominateur 

> fsolve(denom(F),x);
 

-86.83736192185777619949395360702870918852, -29.65707271262522137711629313039416980067, -18.71928215855790014329959257121332544189, -14.21440493463074196141564796234170404293, -10.99594203514260171128...
-86.83736192185777619949395360702870918852, -29.65707271262522137711629313039416980067, -18.71928215855790014329959257121332544189, -14.21440493463074196141564796234170404293, -10.99594203514260171128...
-86.83736192185777619949395360702870918852, -29.65707271262522137711629313039416980067, -18.71928215855790014329959257121332544189, -14.21440493463074196141564796234170404293, -10.99594203514260171128...
-86.83736192185777619949395360702870918852, -29.65707271262522137711629313039416980067, -18.71928215855790014329959257121332544189, -14.21440493463074196141564796234170404293, -10.99594203514260171128...
 

> evalf([%]/Pi*2);
 

[-55.28238157969437342492167446879162279844, -18.88027887940027657394488105333608838333, -11.91706514666565711527876780745482673134, -9.049171233825247908558343779348527911662, -7.00023411537960223058...
[-55.28238157969437342492167446879162279844, -18.88027887940027657394488105333608838333, -11.91706514666565711527876780745482673134, -9.049171233825247908558343779348527911662, -7.00023411537960223058...
[-55.28238157969437342492167446879162279844, -18.88027887940027657394488105333608838333, -11.91706514666565711527876780745482673134, -9.049171233825247908558343779348527911662, -7.00023411537960223058...
[-55.28238157969437342492167446879162279844, -18.88027887940027657394488105333608838333, -11.91706514666565711527876780745482673134, -9.049171233825247908558343779348527911662, -7.00023411537960223058...
 

Les premières racines sont très proches des multiples de `+`(`*`(`/`(1, 2), `*`(Pi))), et la qualité de l'approximation se dégrade en s'éloignant de l'origine. 

Q9. Celles du numérateur 

> fsolve(numer(F),x);
 

-43.81066451693335083101464808108491242331, -22.73731003484164954128902847207456837023, -16.12000594551374673593875397707221555938, -12.57422858475311532234191414738549095953, -9.424784813091165815502...
-43.81066451693335083101464808108491242331, -22.73731003484164954128902847207456837023, -16.12000594551374673593875397707221555938, -12.57422858475311532234191414738549095953, -9.424784813091165815502...
-43.81066451693335083101464808108491242331, -22.73731003484164954128902847207456837023, -16.12000594551374673593875397707221555938, -12.57422858475311532234191414738549095953, -9.424784813091165815502...
-43.81066451693335083101464808108491242331, -22.73731003484164954128902847207456837023, -16.12000594551374673593875397707221555938, -12.57422858475311532234191414738549095953, -9.424784813091165815502...
 

> evalf([%]/Pi);
 

[-13.94536763602129142470130200885828368038, -7.237510569316006973805630076208879548843, -5.131157257798509652868313562180232799569, -4.002501269661731392060675186458990144292, -3.00000218116176782823...
[-13.94536763602129142470130200885828368038, -7.237510569316006973805630076208879548843, -5.131157257798509652868313562180232799569, -4.002501269661731392060675186458990144292, -3.00000218116176782823...
[-13.94536763602129142470130200885828368038, -7.237510569316006973805630076208879548843, -5.131157257798509652868313562180232799569, -4.002501269661731392060675186458990144292, -3.00000218116176782823...
[-13.94536763602129142470130200885828368038, -7.237510569316006973805630076208879548843, -5.131157257798509652868313562180232799569, -4.002501269661731392060675186458990144292, -3.00000218116176782823...
 

Même observation. 

Q10. Des dessins animés 

D'abord sur ℝ : 

> plots[display]([seq(plot([listapprox[i],tan(x)],x=-20..20,view=-5..5),i=1..nops(listapprox))],insequence=true);
 

Plot_2d
 

Puis sur ℂ : on trace le module des approximants diagonaux dans le plan complexe, en utilisant la couleur pour représenter l'argument. 

> plots[display]([seq(plots[complexplot3d](listapprox[i],x=-10-10*I..10+10*I,view=0..5,axes=boxed,style=surfacecontour,numpoints=100*100),i=1..nops(listapprox))],insequence=true);
 

Plot_2d
 

III. Validité des approximations 

Q11. Le développement en fraction continue de tanh 

> numtheory[cfrac](series(tanh(x),x,12),monic);
 

CFRAC([0, [x, 1], [`*`(`^`(x, 2)), 3], [`*`(`^`(x, 2)), 5], [`*`(`^`(x, 2)), 7], [`*`(`^`(x, 2)), 9], [`*`(`^`(x, 2)), 11], `...`])
 

On reconnaît les entiers impairs, qui sont donc positifs. 

Q12. Conclusion 

L'idée est de se ramener à une série de Stieltjes. D'abord, en changeant légèrement la fonction, on obtient la forme souhaitée pour la fraction continue 

> CF:=numtheory[cfrac](series(tanh(sqrt(x))*sqrt(x),x,10),regular);
 

CFRAC([0, [x, 1], [x, 3], [x, 5], [x, 7], [x, 9], [x, 11], [x, 13], [x, 15], [x, 17], `...`])
 

Étude de la convergence 

Cette fraction continue étant à coefficients positifs, ses convergents se récrivent comme une série alternée : 

> CV:=[seq(numtheory[nthconver](CF,i),i=1..9)];
 

[x, `+`(`/`(`*`(3, `*`(x)), `*`(`+`(x, 3)))), `/`(`*`(`+`(`*`(`^`(x, 2)), `*`(15, `*`(x)))), `*`(`+`(`*`(6, `*`(x)), 15))), `/`(`*`(`+`(`*`(10, `*`(`^`(x, 2))), `*`(105, `*`(x)))), `*`(`+`(`*`(`^`(x, ...
[x, `+`(`/`(`*`(3, `*`(x)), `*`(`+`(x, 3)))), `/`(`*`(`+`(`*`(`^`(x, 2)), `*`(15, `*`(x)))), `*`(`+`(`*`(6, `*`(x)), 15))), `/`(`*`(`+`(`*`(10, `*`(`^`(x, 2))), `*`(105, `*`(x)))), `*`(`+`(`*`(`^`(x, ...
 

> map(normal,[seq(CV[i+1]-CV[i],i=1..nops(CV)-1)]);
 

[`+`(`-`(`/`(`*`(`^`(x, 2)), `*`(`+`(x, 3))))), `+`(`/`(`*`(`/`(1, 3), `*`(`^`(x, 3))), `*`(`+`(`*`(2, `*`(x)), 5), `*`(`+`(x, 3))))), `+`(`-`(`/`(`*`(`/`(1, 3), `*`(`^`(x, 4))), `*`(`+`(`*`(`^`(x, 2)...
[`+`(`-`(`/`(`*`(`^`(x, 2)), `*`(`+`(x, 3))))), `+`(`/`(`*`(`/`(1, 3), `*`(`^`(x, 3))), `*`(`+`(`*`(2, `*`(x)), 5), `*`(`+`(x, 3))))), `+`(`-`(`/`(`*`(`/`(1, 3), `*`(`^`(x, 4))), `*`(`+`(`*`(`^`(x, 2)...
[`+`(`-`(`/`(`*`(`^`(x, 2)), `*`(`+`(x, 3))))), `+`(`/`(`*`(`/`(1, 3), `*`(`^`(x, 3))), `*`(`+`(`*`(2, `*`(x)), 5), `*`(`+`(x, 3))))), `+`(`-`(`/`(`*`(`/`(1, 3), `*`(`^`(x, 4))), `*`(`+`(`*`(`^`(x, 2)...
 

Il suffit maintenant de montrer que le terme général tend vers 0 pour `>`(x, 0.) Ce terme général n'est autre (à `^`(`+`(`-`(x)), n) près) que l'inverse du produit de deux dénominateurs consécutifs :   

> den:=[seq(numtheory[nthdenom](CF,i),i=0..9)];
 

[1, 1, `+`(x, 3), `+`(`*`(6, `*`(x)), 15), `+`(`*`(`^`(x, 2)), `*`(45, `*`(x)), 105), `+`(`*`(15, `*`(`^`(x, 2))), `*`(420, `*`(x)), 945), `+`(`*`(`^`(x, 3)), `*`(210, `*`(`^`(x, 2))), `*`(4725, `*`(x...
[1, 1, `+`(x, 3), `+`(`*`(6, `*`(x)), 15), `+`(`*`(`^`(x, 2)), `*`(45, `*`(x)), 105), `+`(`*`(15, `*`(`^`(x, 2))), `*`(420, `*`(x)), 945), `+`(`*`(`^`(x, 3)), `*`(210, `*`(`^`(x, 2))), `*`(4725, `*`(x...
 

Soit d[i]le ième dénominateur. Le résultat est donc obtenu si l'on montre que pour tout `/`(`*`(d[i](x), `*`(d[`+`(i, 1)](x))), `*`(`^`(x, i)))tend vers l'infini avec    

Pour cela, on dispose d'une récurrence explicite : 

> gfun:-listtorec(den,d(i));
 

[{`+`(`-`(`*`(d(`+`(i, 1)), `*`(x))), `*`(`+`(`-`(`*`(2, `*`(i))), `-`(5)), `*`(d(`+`(i, 2)))), d(`+`(i, 3))), d(0) = 1, d(1) = 1, d(2) = `+`(x, 3)}, ogf]
 

> rec:=op(1,%);
 

{`+`(`-`(`*`(d(`+`(i, 1)), `*`(x))), `*`(`+`(`-`(`*`(2, `*`(i))), `-`(5)), `*`(d(`+`(i, 2)))), d(`+`(i, 3))), d(0) = 1, d(1) = 1, d(2) = `+`(x, 3)}
 

On retrouve que les coefficients des dénominateurs sont tous positifs. Pour ces polynômes sont donc minorés par leurs termes constants 

> recconst:=subs(x=0,rec);
 

{`+`(`*`(`+`(`-`(`*`(2, `*`(i))), `-`(5)), `*`(d(`+`(i, 2)))), d(`+`(i, 3))), d(0) = 1, d(1) = 1, d(2) = 3}
 

petit bug de Maple, ça a l'air de mieux se passer en enlevant la dernière condition initiale 

> const:=rsolve(subsop(-1=NULL,recconst),d(i));
 

`/`(`*`(`^`(2, i), `*`(GAMMA(`+`(i, `/`(1, 2))))), `*`(`^`(Pi, `/`(1, 2))))
 

on la vérifie quand même : 

> eval(const,i=2);
 

3
 

Le produit de deux termes constants consécutifs : 

> const*subs(i=i+1,const);
 

`/`(`*`(`^`(2, i), `*`(GAMMA(`+`(i, `/`(1, 2))), `*`(`^`(2, `+`(i, 1)), `*`(GAMMA(`+`(i, `/`(3, 2))))))), `*`(Pi))
 

et pour tout ce terme constant tend vers l'infini plus vite que `^`(x, i); -1 

> map(simplify,asympt(ln(%/x^i),i,3)) assuming x>0;
 

`+`(`-`(`*`(`+`(2, ln(x), `-`(`*`(2, `*`(ln(2)))), `-`(`*`(2, `*`(ln(i))))), `*`(i))), `*`(2, `*`(ln(2))), ln(i), O(`/`(1, `*`(i))))
 

Or la convergence d'une fraction continue à coefficients positifs pour un `>`(x, 0) entraîne sa convergence dans complex`#msup(mi(. 

Conséquence sur le développement de tan(x) 

Les deux développements sont directement reliés : 

> map(numtheory[cfrac],[tan(x),tanh(x)],monic);
 

[CFRAC([0, [x, 1], [`+`(`-`(`*`(`^`(x, 2)))), 3], [`+`(`-`(`*`(`^`(x, 2)))), 5], [`+`(`-`(`*`(`^`(x, 2)))), 7], [`+`(`-`(`*`(`^`(x, 2)))), 9], [`+`(`-`(`*`(`^`(x, 2)))), 11], [`+`(`-`(`*`(`^`(x, 2))))...
 

on passe de l'un à l'autre en changeant x en ix et en divisant par i: 

> subs(x=I*x,%[1]);
 

CFRAC([0, [`*`(I, `*`(x)), 1], [`*`(`^`(x, 2)), 3], [`*`(`^`(x, 2)), 5], [`*`(`^`(x, 2)), 7], [`*`(`^`(x, 2)), 9], [`*`(`^`(x, 2)), 11], [`*`(`^`(x, 2)), 13], [`*`(`^`(x, 2)), 15], [`*`(`^`(x, 2)), 17...
 

On vient de voir que le développement de `*`(tanh(sqrt(x)), `*`(sqrt(x))) converge pour `in`(x, `minus`(complex, `#msup(mi(, il s'ensuit que celui de `*`(x, `*`(tanh(x)))converge pour `in`(x, `minus`(complex, `iℝ`)), et donc nous avons donc la convergence de celui de tan(x) pour tout  

>