Maple
Son bon usage en mathématiques

Philippe Dumas, Xavier Gourdon

Springer-Verlag, 1997

Code Maple du Chapitre 6, Livre second.



# section 1, page 255.

asympt(sum(1/k,k=1..n-1)/n^2,n);

assume(x>0):
asympt(arctan(k*x)/k,k);

S:=sum(1/(3*k+2)/(3*k+4),k=0..infinity);

F:=sum(x^n/n/(n+1),n=1..infinity);

collect(F,ln(1-x),normal);

hypergeom([1,1],[2],z);

hypergeom([2,2],[1],z);

simplify(hypergeom([2,2],[1],z),hypergeom);

`convert/Sum`:=proc(expr,n::name)
  local L,u,Num,Den,tosubs;
  L:=indets(expr,specfunc(anything,hypergeom));
  for u in L do
    Num:=convert(map(pochhammer,op(1,u),n),`*`);
    Den:=convert(map(pochhammer,op(2,u),n),`*`);
    tosubs[u]:=Sum(simplify(Num/Den*op(3,u)^n/GAMMA(n+1),GAMMA),
                                                   n=0..infinity)
  od;
  subs({seq(u=tosubs[u],u=L)},expr)
end: # convert/Sum

convert(hypergeom([2,2],[1],z),Sum,k);

value(");

S:=convert(hypergeom([2, 2],[3],x),Sum,n);

convert(op(1,subs(x=1,S)),parfrac,n):
map(Sum,expand("*x^n),op(2,S));
value(");

f:=arcsin(sqrt(x))/sqrt(x-x^2):
series(f,x);

with(share):
readshare(gfun,analysis):
with(gfun):

?gfun
?gfun[listtodiffeq]

s:=series(f,x,10);

s:=series(s,x,9):
deq:=seriestodiffeq(s,y(x));

subs(y(x)=f,deq[1]):
expand("):
collect(",arcsin,simplify);

assume(x>0,x<1);
map(simplify,",radical);
x:='x':

rec:=diffeqtorec(deq[1],y(x),u(n));

U:=rsolve(rec,u(n));

sum(U*x^n,n=0..infinity);

asympt(U,n,2);

with(share):
readshare(gfun,analysis):
with(gfun):
f:=arcsin(x)^2:
s:=series(f,x,25):
deq:=seriestodiffeq(s,y(x)):
rec:=diffeqtorec(deq[1],y(x),u(n)):
rec1:=map(factor,op(select(has,rec,n)));

newrec:=subs(n=2*k,seq(u(2*k+2*l)=v(k+l),l=0..1),rec1);

V:=rsolve({newrec,v(1)=1},v(k));

T:=1:
x0:=-1/2:
pattern:=piecewise(x<0,-x^2-1,x^2+1):
signal:=subs(x=x-floor((x-x0)/T)*T,pattern):

plot(signal,x=x0-T..x0+2*T,scaling=constrained);

assume(n,integer):
a0:=2/T*int(pattern,x=x0..x0+T);

a:=2/T*int(pattern*cos(n*x*2*Pi/T),x=x0..x0+T);

b:=2/T*int(pattern*sin(n*x*2*Pi/T),x=x0..x0+T);

b:=subs(eps=(-1)^n,collect(subs((-1)^n=eps,b),{n,eps},
                                                   distributed));

N:=5:
Fouriersum:=a0/2+add(subs(n=k,a)*cos(2*k*Pi*x/T)
                            +subs(n=k,b)*sin(2*k*Pi*x/T),k=1..N):
plot({signal,Fouriersum},x=x0-T..x0+2*T,
                                            scaling=constrained);

Besselsum:=a0^2/2+add(subs(n=k,a^2+b^2) ,k=1..N):
energy:=2/T*int(pattern^2,x=x0..x0+T):
Besselinequality:=evalf(energy>Besselsum);

rate:=evalf(Besselsum/energy);

# section 2, page 268.

# exercice 6.12, page 269.
with(share):
readshare(gfun,analysis):
with(gfun):
orec:={u(0)=1,u(1)=1,u(n+2)=u(n+1)+(n+1)*u(n)}:

odeq:=rectodiffeq(orec,u(n),y(x));

dsolve(odeq,y(x));

erec:=borel(orec,u(n));

edeq:=rectodiffeq(erec,u(n),y(x));

dsolve(edeq,y(x));
# fin exercice 6.12.

# section 3, page 271.

# probleme page 271.
F:=1/n^2:
kummer(F,3,n);
# fin probleme.

# probleme page 276.
T:=2*Pi:
t0:=0:
pattern:=piecewise(t < Pi,1,0):
signal:=subs(t=t-floor((t-t0)/T)*T,pattern):
a0:=1:
b:=(1-(-1)^n)/Pi/n:
N:=20:
signalapprox:=a0/2+add(b*sin(n*t),n=1..N):
plot([signal,signalapprox],t=-Pi..3*Pi);
# fin probleme.

# section 4, page 280.

# probleme page 280.
z[0]:=1:z[1]:=1+I:z[2]:=-1+I:z[3]:=-I:z[4]:=1:
g:=piecewise(
   seq(op([t<=j/4,4*(z[j-1]*(j/4-t)+z[j]*(t-(j-1)/4))]),j=1..4));
plots[complexplot](g,t=0..1);
# fin probleme.

# section 5, page 281.

# exercice 6.1, page 281.
u:=((4*n+1)!)^2/((2*n+1)!)^3:
DA:=asympt(u,n):
combine(DA,power,symbolic);
# fin exercice 6.1.

# exercice 6.2, page 282.
u:=1/(4*k+1)^2/(4*k+3)^2:
convert(u,parfrac,k);
# fin exercice 6.2.

# exercice 6.4, page 283.
with(share):
readshare(gfun,analysis):
with(gfun):
f:=sin(a*arcsin(x))^2;
s:=series(f,x,25);
deq:=seriestodiffeq(s,y(x));
rec:=diffeqtorec(deq[1],y(x),u(n));
rec1:=map(factor,op(select(has,rec,n)));
newrec:=subs(n=2*k,seq(u(2*k+2*l)=v(k+l),l=0..1),rec1);
V:=rsolve({newrec,v(1)=a^2},v(k));
F:=sum(V*x^(2*k),k=1..infinity);
series(f-F,x,20);
map(simplify,",GAMMA);

simplify(F,GAMMA);
# fin exercice 6.4.

# exercice 6.6, page 284.
DA:=asympt(epsilon/(sqrt(n)+epsilon),n,2);

DA:=asympt(epsilon/sqrt(n+epsilon),n,2);

DA:=asympt(epsilon/ln(n+epsilon),n,3);

asympt(2*Pi*sqrt(n^4+n^2+1),n,5);

DA:=asympt(sin(subs(2*Pi*n^2=0,")),n,7);

DA:=asympt(epsilon*n^(1/4)*sin(1/sqrt(n))/(sqrt(n)+epsilon),n,2);

asympt((exp(I*Pi/n)-1),n,3);
# fin exercice 6.6.

# exercice 6.7, page 285.
u:=(1-tanh(n))^tanh(1/n):
limit(u,n=infinity);

asympt(tanh(1/n),n);

series(ln(1-(1-epsilon)/(1+epsilon)),epsilon,3);

subs(epsilon=exp(-2*n),");

asympt(tanh(1/n)*(-2*n+ln(2)),n,3);

DA:=asympt(exp("),n);
# fin exercice 6.7.

# exercice 6.8, page .
u:=n!/n^n*r^n:
combine(subs(n=n+1,u)/u,power,symbolic):
limit(",n=infinity);
# fin exercice 6.8.

# exercice 6.9, page 287.
sum((2*k+2)!/(k+2)!*x^k/k!,k=0..infinity);

sum((k+1)^3*x^k/k!,k=0..infinity):
factor(");

F:=sum(x^n/n/(n+2),n=1..infinity):
F:=expand(F);

U:=normal(remove(has,F,{ln,hypergeom})):
V:=factor(select(has,F,ln)):
W:=factor(select(has,F,hypergeom)):
S:=select(has,W,hypergeom):
T:=remove(has,W,hypergeom):
S:=convert(S,Sum,n):
convert(op(1,subs(x=1,S)),parfrac,n):
map(Sum,expand("*x^n),op(2,S)):
W:=value(")*T:
F:=collect(U+V+W,ln,normal);
# fin exercice 6.9.

# exercice 6.10, page 288.
term:=(2*n+3)!/(n+1)!/(n+3)!:
sum(term*x^(n+1),n=0..infinity):
S:=simplify(",radical);

F:=simplify((S+subs(x=-x,S))/2,radical);

asympt(convert(term,GAMMA),n):
map(combine,",power,symbolic);

series(F,x=1/4,1):
evalc(subs(x=1/4,O(0)=0,"));

term:=((2*k+6)!)^2/((k+3)!)^4/16^(k+3)/(2*k+1):
s:=sum(term,k);

simplify((subs(k=k+1,s)-s)/term,GAMMA);
normal(expand("));

subs(k=0,s);

asympt(expand(ln(convert(s,GAMMA))),k):
combine(",ln);
# fin exercice 6.10.

# exercice 6.11, page 290.
p:=3:
e:=2:
Rho:=p/(1+e*cos(theta)):
prec:=20:
window:=[-10..10,-10..10]:
orbit[-1]:=plot([Rho*cos(theta),Rho*sin(theta),theta=0..2*Pi],
          view=window,scaling=constrained,color=red,thickness=2):
for i from 0 to prec-1 do
  P:=convert(series(subs(cos(theta)=x,Rho),x,i+1),polynom);
  rho[0,i]:=subs(x=cos(theta),P);
  Q:=convert(series(subs(cos(theta)=1/x,Rho),x,i+1),polynom);
  rho[1,i]:=subs(x=1/cos(theta),Q);
  orbit[i]:=plot([[rho[0,i]*cos(theta),rho[0,i]*sin(theta),
                   theta=0..2*Pi],[rho[1,i]*cos(theta),
                   rho[1,i]*sin(theta),theta=0..2*Pi]],
              view=window,scaling=constrained,color=[blue,green])
od:
plots[display]({orbit[-1],plots[display](
                  [seq(orbit[i],i=0..prec-1)],insequence=true)});
# fin exercice 6.11.

# exercice 6.12, page 292.
with(share):
readshare(gfun,analysis):
with(gfun):
orec:={u(n+2)+u(n+1)+u(n)=n}:
odeq:=rectodiffeq(orec,u(n),y(x)):
dsolve(odeq,y(x)):
OGF:=op(2,");

rsolve(orec,u(n));

orec:={(n+4)*u(n+2)+u(n+1)-(n+1)*u(n)}:
erec:=borel(orec,u(n)):
edeq:=rectodiffeq(erec,u(n),y(x)):
dsolve(edeq,y(x)):
EGF:=op(2,");

series(EGF,x,3);

K:=remove(has,remove(has,EGF,exp),x):
EGF:=subs(K=_C1+_C2+_C3-K,EGF);

rsolve(orec,u(n));

orec:={u(n+4)+5*u(n+2)+u(n),u(0)=1,u(1)=1,u(2)=2,u(3)=6}:
odeq:=rectodiffeq(orec,u(n),y(x));

OGF:=solve(odeq,y(x)):
DEC:=convert(OGF,fullparfrac,x);

orec:={(4+n)*u(n)+(6+n)*u(n+1)+u(n+2),u(0)=alpha,u(1)=beta}:
erec:=borel(orec,u(n)):
edeq:=rectodiffeq(erec,u(n),y(x)):
dsolve(edeq,y(x)):
EGF:=op(2,"):
EGF:=combine(EGF,exp):
EGF:=collect(EGF,exp(-x),factor);

S:=solve({beta+4*alpha=1,16*beta+65*alpha=0},{alpha,beta}):
EGF1:=subs(S,EGF):
R:=remove(has,EGF1,exp):

d:=3:
PI:=add(pi[i]*n^i,i=0..d):
nnn:=20:
RTE:=convert(series(R,x,nnn+1),polynom):
sys:={seq(subs(n=nn,(-1)^n*PI)=coeff(RTE,x,nn),nn=0..nnn)}:
inc:={seq(pi[i],i=0..d)}:
solve(sys,inc):
P:=subs(",PI);

PS:=Sum(1/factorial(p),p=0..n):
TE1:=convert(series(EGF1,x,nnn+1),polynom):
expr:=(-1)^n*add(add(c[k,j]*n^k*subs(n=n-j,PS),j=0..d-k),k=0..d):
sys:={seq(value(subs(n=nn,expr))=coeff(TE1,x,nn),nn=d..nnn)}:
inc:={seq(seq(c[k,j],j=0..k),k=0..d)}:
solve(sys,inc):
EXPR:=collect(subs(",(-1)^n*add(add(c[k,j]*n^k*
                      subs(n=n-j,SUM(n)),j=0..d-k),k=0..d)),SUM);
# fin exercice 6.12.