restart: interface(elisiondigitsthreshold=200, elisiondigitsafter=10, elisiondigitsbefore=10): with(gfun): with(NumGfun):
Introduction
Une fonction d'onde sph\303\251ro\303\257dale
a, b, c, q := 1/5, 1/3, 2, 1;
deq[swf] := {(1-z^2)*diff(y(z),z,z) - 2*(b+1)*z*diff(y(z),z) + (c-4*q*z^2)*y(z), y(0)=1, D(y)(0)=0};
myswf := diffeqtoproc(deq[swf], y(z)):
myswf(1/2*(1+I));
swf := z -> HeunC(0,-1/2,b,q,1/4-1/4*b-1/4*c,z^2);
evalf(swf(1/2*(1+I)));
myswf(1/2*(1+I),1500);
evalf[1500](swf(1/2*(1+I)));
transition_matrix(deq[swf],y(z),[0,-I/2,1/2-I,1-I,3/2-I,2-I/2,2],5);
Suites r\303\251currentes I : entiers
Nombres de Catalan
nth_term({C(n+1)=(4*n+2)/(n+2)*C(n),C(0)=1}, C(n), 50000);
Nombres de Motzkin
m := rectoproc_binsplit({(n+3)*u(n+2)=3*n*u(n)+(2*n+3)*u(n+1), u(0)=0, u(1)=1, u(2)=1}, u(n)):
['m(n)'$n=0..10];
m(50000);
Suites r\303\251currentes II : s\303\251ries convergentes
1/Pi par la formule des Chudnovsky
A, B, C := 13591409, 545140134, 640320^3;
x := fnth_term(
{(A+B*n)*(3*n+3)*(3*n+2)*(3*n+1)*(n+1)^3*C * u(n+1)
+ (6*n+6)*(6*n+5)*(6*n+4)*(6*n+3)*(6*n+2)*(6*n+1)*(A+B*(n+1)) * u(n),
u(0) = A },
u(n), 50, 501, ndseries):
evalf[500](C^(1/2)/(12*x));
Gamma de petits rationnels
g := proc(s, prec)
local k, rec, a, u, n:
k := ceil(evalf(prec*ln(10) + ln(prec*ln(10)))):
rec := {u(n+1) = k/(n+s+1)*u(n), u(0) = 1/s}:
a := fnth_term(rec,u(n),6*k,prec+1,ndseries):
evalf[prec](k^s*exp(-k)*a):
end proc:
g(5/3,50);
time(g(5/3,2000));
time(evalf[2000](GAMMA(5/3)));
\303\211valuation dans le disque de convergence
Un exemple familier : arctan
deq[arctan] := diffeqtohomdiffeq(holexprtodiffeq(arctan(z),y(z)),y(z));
myarctan := diffeqtoproc(deq[arctan], y(z)):
myarctan(1/4);
myarctan(1/4,10000);
Prolongement analytique
\303\211valuation le long d'un chemin
path[right] := [0, 1/2*(1+I), 3/4*(1+I), 1+I, 1/2*(1+3*I),1/4*(1+7*I),2*I];
myarctan(path[right]);
path[left] := [0, 1/2*(-1+I), 3/4*(-1+I), -1+I, 1/2*(-1+3*I),1/4*(-1+7*I),2*I];
myarctan(path[left]);
Matrice de passage
transition_matrix(deq[arctan], y(z), path[right], 10);
Application : monodromie locale
local_monodromy(deq[arctan], y(z), I, 0, 10);
Bornes
Point singulier r\303\251gulier en 1
bound[arctan] := bound_diffeq(deq[arctan], y(z));
series(arctan(z),z);
series(bound[arctan],z);
Point singulier irr\303\251gulier en 1
f[irreg] := erf(z+1/(1-z));
deq[irreg] := holexprtodiffeq(f[irreg],y(z));
bound[irreg] := bound_diffeq(deq[irreg],y(z));
Singularit\303\251 \303\240 l'infini
deq[infinity] := holexprtodiffeq(AiryAi(z), y(z));
bound_diffeq(deq[infinity], y(z));
JSFH