Maple
Son bon usage en mathématiques
Philippe Dumas, Xavier Gourdon
Springer-Verlag, 1997
Code Maple du Chapitre 1, Livre premier.
# section 1, page 3. 1+1; sqrt(2); evalf("); evalf("",20); seq(exp(-k/10*x)*sin(x),k=1..4); plot({"},x=0..6*Pi,title=`sinusoides amorties`); #plot(["],x=0..6*Pi,title=`sinusoides amorties`); plot([exp(t)*cos(t),exp(t)*sin(t),t=-Pi..2*Pi/3], title=`spirale logarithmique`,scaling=constrained); f:=x^4+x^2+1: solve(f,x); solve(f=0,x); fsolve(f,x,complex); series(tan(x),x,20); expr:=sin(omega*t)*exp(lambda*t); diff(expr,t); factor("); diff(expr,t,t); diff(expr,t$2); int(expr,t); Int(expr,t); value("); ?plot # section 2, page 7. restart; x:=2: int(tan(x),x); x:='x': for k to 10 do diff(1/x,x$k) od; plot(sin(x,x=0..Pi); ?printlevel series(1/convert([seq(1-x^k,k=1..10)],`*`),x,10); series(1/mul(1-x^k,k=1..10),x,10); [seq(1-x^k,k=1..10)]; convert(",`*`); series(1/convert([seq(1-x^k,k=1..10)],`*`),x,10); z:=exp(I*Pi/8): bound:=20: s:=0: x[0]:=Re(s): y[0]:=Im(s): Z:=1: for n to bound do Z:=evalf(z*Z); s:=s+Z/n; x[n]:=Re(s); y[n]:=Im(s); od: pic[brokenspiral]:=plot([seq([x[n],y[n]],n=0..bound)],color=red): pic[limitpoint]:=plot([[Re(-ln(1-z)),Im(-ln(1-z))]],color=blue, style=point,symbol=circle): plots[display]({pic[brokenspiral],pic[limitpoint]}, scaling=constrained); # section 3, page 10. p:=x^4+x+1; solve(p,x); evalf("); sys:={x^3-y^3+x*y,x^2+y^2-1}; inc:={x,y}; fsolve(sys,inc); expr:=int(1/(1+x^3),x); nops(expr); op(0,expr),[op(expr)],op(2,expr),op([2,2,1],expr); S:=series(sin(x)^x,x): op(0,S);op(S); equivalent:=table([sin(x)=x,1-cos(x)=x^2/2,exp(x)-1=x]); equivalent[ln(1+x)]:=x; op(0,eval(equivalent)); op(eval(equivalent)); # exercice 1.5, page 12. int(1/(x^7-x),x); # fin exercice 1.5. L[i]; # exercice 1.7, page 13. L:=[seq(factor(diff(exp(-x^2),x$k)),k=1..4)]; op(L); L[2]; # fin exercice 1.7. convert(rationalexpr,parfrac,name); convert(seriesexpr,polynom); # exercice 1.8, page 13. ci[1]:=int(1/cos(x),x); ci[2]:=convert(ci[1],tan); ci[3]:=convert(ci[1],exp); ci[4]:=convert(ci[2],exp); ci[5]:=convert(ci[1],sincos); ci[6]:=convert(ci[3],trig); cI[1]:=Int(1/cos(x),x); value("); cI[2]:=convert(cI[1],tan); value("); cI[3]:=convert(cI[1],exp); value("); cI[4]:=convert(cI[2],exp); value("); cI[5]:=convert(cI[1],sincos); value("); # fin exercice 1.8. evalf([seq([cos(k*Pi/5),sin(k*Pi/5)],k=0..10)],4); n:=3: A:=matrix(3,3,[[1,2,3],[2,3,4],[4,5,6]]); B:=linalg[transpose](A); X:=matrix(n,n): AX:=evalm(A&*X): XB:=evalm(X&*B): S:=solve({seq(seq(AX[i,j]=XB[i,j],j=1..n),i=1..n)}, {seq(seq(X[i,j],j=1..n),i=1..n)}); Xsol:=subs(S,evalm(X)); # exercice 1.9, page 15. Eseq:=entries(Xsol); Eset:=map(op,{Eseq}); indets(Eset,name); # fin exercice 1.9. # exercice 1.10, page 16. "; print(x); "; x:=2; "; x$0; "; # fin exercice 1.10. # exercice 1.11, page 16. equivalent:=table([sin(x)=x,1-cos(x)=x^2/2,exp(x)-1=x]): # fin exercice 1.11. Euler:=x^2+x+41; [seq(subs(x=i,Euler),i=1..39)]; T:=[cos(u)*(2+cos(v)),sin(u)*(2+cos(v)),sin(v)]; C:=subs(u=sqrt(2)*t,v=t,T); pic[T]:= plot3d(T,u=0..2*Pi,v=0..2*Pi): pic[C]:=plots[spacecurve](C,t=0..100,numpoints=1000,thickness=3): plots[display]({pic[T],pic[C]},scaling=constrained); subs(x=y,y=x,[x,y]); subs({x=y,y=x},[x,y]); # exercice 1.13, page 18. T:=[cos(u)*(2+rho*cos(v)),sin(u)*(2+rho*cos(v)),rho*sin(v)]; pic[T]:=plot3d(subs(rho=1,T),u=0..2*Pi,v=0..2*Pi,color=black): pic[C]:=plots[spacecurve](subs(rho=1.1,u=sqrt(2)*t,v=t,T), t=0..100,numpoints=1000, thickness=3,color=black): plots[display]({pic[T],pic[C]},scaling=constrained); # fin exercice 1.13. # section 4, page 19. whattype(exp(-x^2/2)); type(expr,t); seq([i,type(exp(-x^2/2),i)],i=[function,algebraic,algfun,ratpoly, freeof(x),exp(ratpoly),anything]); type(2+3/2*x+x^15,polynom(rational,x)); type(Pi*x+x^5,polynom(numeric)); type(Pi*x+x^5,polynom(realcons)); # exercice 1.14, page 20. type(sqrt(2),numeric); type(fsolve(x^3-x+1,x),numeric); type(fsolve(x^3-3*x+1,x),numeric); type([fsolve(x^3-3*x+1,x)],list(numeric)); type(x:=2,equation); type(x<=2,relation); S:=series(sin(x),x): type(S,`+`); P:=convert(S,polynom): type(P,`+`); type(toto,name); type(toto,string); # fin exercice 1.14. # exercice 1.15, page 20. trace(type): convert(327,base,2); sin(1+I); evalc(sin(1+I)); # fin exercice 1.15. # section 5, page 21. do od; f:=x^3-x+1; u:=0.5; for n to 4 do u:=subs(x=u,f) od; n:='n'; n:=evaln(n); # exercice 1.16, page 22. for theta from 0 by Pi/10 to Pi/2 do sin(theta) od; for k from 0 to 5 do sin(k*Pi/10) od; for n to 5 do T[n]:=subs(cos(theta)=x,expand(cos(n*theta))) od; for n to 5 do P[n]:=collect((-1)^n/2^n/n!*diff((1-x^2)^n,x$n),x) od; # fin exercice 1.16. expr:=diff((z^2+1)/(z^2-1),z); for i in expr do antider[i]:=int(i,z) od; i; n:=10: sigma:=combstruct[draw](Permutation(n)); e:=[seq(i,i=1..n)]; tau:=sigma: for k while tau <> e do tau:=subs({seq(i=sigma[i],i=1..n)},tau) #tau:=[seq(sigma[i],i=tau)] od; k; V:=[r*cos(omega*t),r*sin(omega*t),h]; M:=map(int,V,t); R:=matrix(3,3): R[1,1]:=cos(phi)*cos(psi)-cos(theta)*sin(phi)*sin(psi): R[1,2]:=subs(psi=psi+Pi/2,R[1,1]): R[2,1]:=subs(phi=phi-Pi/2,R[1,1]): R[2,2]:=subs(phi=phi-Pi/2,R[1,2]): R[1,3]:=sin(phi)*sin(theta): R[2,3]:=-cos(phi)*sin(theta): R[3,1]:=sin(theta)*sin(psi): R[3,2]:=sin(theta)*cos(psi): R[3,3]:=cos(theta): R:=map(expand,R); diffRphi:=diff(eval(R),phi); diffRphi:=map(diff,R,phi); peano:=x*y*(x^2-y^2)/(x^2+y^2); map2(diff,peano,[seq([x$(2-k),y$k],k=0..2)]): normal("); [seq([x$(2-k),y$k],k=0..2)]; pf:=convert(1/z^3/(1-z)^3,parfrac,z); select(has,pf,-1+z); remove(has,pf,-1+z); # exercice 1.19, page 26. complexlist:=[seq(evalc(((1+I*3^(1/2))/(3/2))^k),k=0..8)]; # fin exercice 1.19. add(x[i],i=0..5); add(1./n^2,n=1..100); add(k,k=1..n); sum(k,k=1..n): factor("); # exercice 1.20, page 27. iterate:=proc(path) local directionlist,n,direction,newpoint,T; directionlist:=[[1,0],[0,1],[-1,0],[0,-1]]; n:=nops(path); for direction in directionlist do newpoint:=[path[n][1]+direction[1],path[n][2]+direction[2]]; if member(newpoint,path) then T[direction]:=NULL else T[direction]:=[op(path),newpoint] fi; od; seq(T[direction],direction=directionlist) end: # iterate PATH:=[[0,0],[1,0],[1,1],[1,2],[0,2],[0,1],[-1,1],[-1,0]]: iterate(PATH); # fin exercice 1.20. # section 6, page 29. maxi:=1000: s:=0: for n to maxi do s:= s+1./n; if (n mod 100)=0 then print(n,`--> `,evalf(s-ln(n))) fi; od: n:='n': # exercice 1.24, page 30. asympt(1/(n^2+1),n); # fin exercice 1.24. # exercice 1.25, page 30. maxi:=1000: s:=0: for n to maxi do s:= s+1/n; if (n mod 100)=0 then print(n,`--> `,evalf(s-ln(n))) fi; od: n:='n': # fin exercice 1.25. # section 7, page 31. expr_to_seq:=proc(expr::anything) expr_to_seq_aux([],expr) end: # expr_to_seq expr_to_seq_aux:=proc(path,expr) local i,n; if type(expr,{name,integer}) # termination condition then [path,expr] else n:=nops(expr); # recursive call [path,op(0,expr)], seq(expr_to_seq_aux([op(path),i],op(i,expr)),i=1..n) fi end: # expr_to_seq_aux expr:=factor(diff(exp(x^2)*(x^2+1),x)); expr_to_seq(expr); trace(expr_to_seq_aux): expr_to_seq(expr); untrace(expr_to_seq_aux): # exercice 1.26, page 33. maple_to_lisp((1-4*x)^(-1/2)); # fin exercice 1.26. interface(verboseproc=2); print(student[intparts]); # exercice 1.27, page 34. trace(member); student[intparts](Int(x*exp(x),x),x); # fin exercice 1.27. convert(series(tan(x),x,10),confrac); interface(verboseproc=2); readlib(`convert/confrac`); interface(verboseproc=2); print(evalm); evalm(x,y); convert(13,base,2); nu:=proc(n::nonnegint) if n=0 then 0 elif type(n,even) then nu(n/2) else nu((n-1)/2)+1 fi end: # nu nu(13); trace(nu): nu(13): countnu:=proc(n::nonnegint) global T; if assigned(T[n]) then T[n]:=T[n]+1 else T[n]:=1 fi; if n=0 then 0 elif type(n,even) then countnu(n/2) else countnu((n-1)/2)+1 fi end: # countnu for n from 0 to 10 do countnu(n) od: seq([n,T[n]],n=0..10); remembernu:=proc(n::nonnegint) option remember; if n=0 then 0 elif type(n,even) then remembernu(n/2) else remembernu((n-1)/2)+1 fi end: # remembernu for n from 0 to 10 do remembernu(n) od: R:=op(4,eval(remembernu)): seq([n,R[n]],n=0..10); remembernu:=subsop(4=NULL,eval(remembernu)): # exercice 1.30, page 39. series(exp(exp(x)-1),x,11); add(bell(n)/n!*x^n,n=0..10); # fin exercice 1.30. lucas:=proc(n::nonnegint) option remember; lucas(n-1)+lucas(n-2) end: # lucas lucas(0):=2: lucas(1):=1: op(4,eval(lucas)); f(0):=1: # exercice 1.32, page 40. for k from 0 to 4 do convert(series(add(fibonacci(i)^k*t^i,i=0..20),t,20),ratpoly) od; # fin exercice 1.32. # section 8, page 41. T:=table([seq(c=evalf(c,10),c=constants)]): T; print(T); op(4,ln); op(4,eval(ln)); p[1]:=proc() local U,V,W; U:=V; V:=array(1..2,1..2,[[1,2],[3,4]]); linalg[transpose](U) end: # p[1] p[1](); p[2]:=proc() local U,V,W; U:=V; V:=W; W:=array(1..2,1..2,[[1,2],[3,4]]); linalg[transpose](U) end: # p[2] p[2](); p[3]:=proc() local U,V,W; U:=V; V:=W; W:=array(1..2,1..2,[[1,2],[3,4]]); linalg[transpose](eval(U)) end: # p[3] p[3](); # exercice 1.33, page 43. trace(linalg[transpose]); # fin exercice 1.33. A:=matrix(2,2,[[0,-1],[1,0]]); B:=subs(x=A,x^2+1); evalm(B); z:=(1-I)*(5+I)^4; arctan(Im(z),Re(z)); evala((5-sqrt(2))/(3+sqrt(2))); evala((5-RootOf(x^2-2))/(3+RootOf(y^2-2))); alias(theta=RootOf(_Z^3+_Z+1)): trace(evala): evala(1/add(theta^k,k=0..5)); # section 9, page 45. F[0]:=Int(x^(2*m+1)/(x^2-a^2)^(n+1/2),x); G:=subs(n=3,m=2,F[0]); value(G); F[1]:=student[intparts](F[0],x^(2*m)/(x^2-a^2)^n); F[2]:=map(combine,F[1],power,symbolic); F[3]:=map(combine,F[2],power,symbolic); F[4]:=map(expand,F[3]); F[5]:=map(combine,F[4],power,symbolic); evalf(int(exp(-sec(phi)),phi=0..Pi/4)); evalf(Int(exp(-sec(phi)),phi=0..Pi/4)); 2 &^ (10^6) mod 3^5; # exercice 1.37, page 48. binomialdecomposition(22,5); # fin exercice 1.37. # section 10, page 48. # exercice 1.1, page 48. dsolve(x*diff(y(x),x)+y(x)=sin(x),y); dsolve(x*diff(y(x),x)+y(x)=sin(x),y(x)); # fin exercice 1.1. # exercice 1.2, page 48. plot([sin(x),x,x-x^3/6],x=-Pi/2..Pi); plot([sin(x),x,x-x^3/6],x=-Pi/2..Pi,color=[red,blue,green]); plot([sin(x),x,x-x^3/6],x=-Pi/2..Pi,color=black); L:=[sin(x),x,x-x^3/6]: C:=[red,blue,green]: n:=nops(L): for i to n do pic[i]:=plot(L[i],x=-Pi/2..Pi,color=C[i]) od: plots[display]({seq(pic[i],i=1..n)}); # fin exercice 1.2. # exercice 1.3, page 49. series(sin(x),x,10); series(sin(x)/x,x,10); series(1/sin(x),x,10); series(1/sin(x)-1/x,x,10); s[1]:=series(1/sin(x),x); s[2]:=series(sin(x),x); series(s[1]*s[2],x); # fin exercice 1.3. # exercice 1.4, page 50. expand(cos(5*phi)); subs(cos(phi)=x,"); orthopoly[T](5,x); solve(",x); fsolve("",x); # fin exercice 1.4. # exercice 1.6, page 51. expr:=3/2; op(0,expr),op(expr); expr:=I; op(0,expr),op(expr); expr:=z=sin(z/2); op(0,expr),op(expr); # fin exercice 1.6. # exercice 1.7, page 52. L:=[seq(factor(diff(exp(-x^2),x$k)),k=1..4)]; L[2]; # fin exercice 1.7. # exercice 1.8, page 52. ci[1]:=int(1/cos(x),x); ci[5]:=convert(ci[1],sincos); cI[1]:=Int(1/cos(x),x); cI[2]:=convert(cI[1],tan); value("); cI[4]:=convert(cI[2],exp); value("); # fin exercice 1.8. # exercice 1.9, page 53. indices(Xsol); Eset:=map(op,{Eseq}); indets((ln(x+sqrt(exp(x)+1))+x)/(x+sin(x*y))); indets(convert(Xsol,set)); # fin exercice 1.9. # exercice 1.11, page 53. seq([i],i=eval(equivalent)); # fin exercice 1.11. # exercice 1.13, page 54. K:=[rho*u*cos(v),rho*u*sin(v),2*u]; pic[K]:=plot3d(subs(rho=1,K),u=-1..1,v=0..2*Pi,color=black): pic[H]:=plots[spacecurve](subs(rho=1.1,u=t,v=10*t,K),t=-1..1, numpoints=50,thickness=3,color=black): plots[display]({pic[K],pic[H]},orientation=[70,85], scaling=constrained); # fin exercice 1.13. # exercice 1.14, page 54. type(sqrt(2),numeric); fsolve(x^3-x+1,x),type(fsolve(x^3-x+1,x),numeric); fsolve(x^3-3*x+1,x),type(fsolve(x^3-3*x+1,x),numeric); type([fsolve(x^3-3*x+1,x)],list(numeric)); type(x:=2,equation); type(x<=2,relation); S:=series(sin(x),x): op(0,S); op(S); type(S,`+`); P:=convert(S,polynom): type(P,`+`); series((1+x)^x,x); lprint("); series((1+sqrt(x))^x,x); lprint("); type(",`+`); # fin exercice 1.14. # exercice 1.15, page 56. untrace(type); # fin exercice 1.15. # exercice 1.17, page 56. Digits:=25: olda:=1.: oldb:=sqrt(2.): while abs(olda-oldb)>10^(-20) do newa:=(olda+oldb)/2; newb:=sqrt(olda*oldb); olda:=newa; oldb:=newb; od: M:=(olda+oldb)/2: 1/M; evalf(2/Pi*Int(1/sqrt(1-t^4),t=0..1)); # fin exercice 1.17. # exercice 1.18, page 57. H:=0: for n while H<=10 do H:=evalf(H+1/n) od: n,H; # fin exercice 1.18. # exercice 1.19, page 57. complexlist:=[seq(evalc(((1+I*3^(1/2))/(3/2))^k),k=0..8)]; pointlist:=map(proc(z) [Re(z),Im(z)] end,complexlist); plot(pointlist,scaling=constrained); # fin exercice 1.19. # exercice 1.20, page 57. T[0]:=1: pathlist:=[[[0,0]]]: nmax:=10: for n to nmax do pathlist:=map(iterate,pathlist); T[n]:=nops(pathlist) od: seq(T[n],n=0..nmax); for n from 1 to 9 do evalf(T[n+1]/T[n]) od; # fin exercice 1.20. # exercice 1.21, page 58. for p to 10 do factor(sum(k^p,k=1..n)) od; # fin exercice 1.21. # exercice 1.22, page 58. m:=5: for i to m do p[i]:=1/mul(1-lambda[i]/lambda[j],j=1..i-1) /mul(1-lambda[i]/lambda[j],j=i+1..m) od: for k to m-1 do s[k]:=add(lambda[i]^k*p[i],i=1..m) od: seq(normal(s[k]),k=1..m-1); restart: p:=1/product(1-lambda[i]/lambda[j],j=1..i-1) /product(1-lambda[i]/lambda[j],j=i+1..m): s:=sum(lambda[i]^k*p[i],i=1..m): for k to m-1 do indets(s[k]) od; indets(s); # fin exercice 1.22. # exercice 1.23, page 59. for n to 50 do convert(map(proc(pair) 1/pair[1]/pair[2] end, select(proc(pair) evalb((pair[1]n) and (igcd(pair[1],pair[2])=1)) end, [seq(seq([p,q],q=2..n),p=2..n)])), `+`) od; for n to 50 do convert(map(proc(pair) 1/pair[1]/pair[2] end, select(proc(pair) evalb((igcd(pair[1],pair[2])=1)) end, [seq(seq([p,q],q=max(p+1,n+1-p)..n),p=2..n)])), `+`) od; for n to 50 do s[n]:=0; for p from 2 to n do for q from max(p+1,n+1-p) to n do if igcd(p,q)=1 then s[n]:=s[n]+1/p/q fi od od; od: seq([n,s[n]],n=1..50); # fin exercice 1.23. # exercice 1.24, page 60. da:=asympt(Psi(n+1),n); subs(n=1000,da); op(0,da),op(da); subs(n=1000,O=0,[op(da)]); evalf("); # fin exercice 1.24. # exercice 1.26, page 61. maple_to_lisp:=proc(expr::anything) local i; if type(expr,{name,integer}) then expr else [op(0,expr),seq(maple_to_lisp(op(i,expr)),i=1..nops(expr))] fi end: # maple_to_lisp n:=evalc((1-2*I)^3); expr_to_seq(n); maple_to_lisp(n); absn:=abs(n); expr_to_seq(absn); maple_to_lisp(absn); exprtrig:=combine(cos(x)^3,trig); expr_to_seq(exprtrig); maple_to_lisp(exprtrig); A:=array(symmetric,1..2,1..2,[(1,1)=x,(1,2)=y,(2,2)=z]); expr_to_seq(A); expr_to_seq(eval(A)); maple_to_lisp(eval(A)); B:=array(1..2,1..2,[[a,b],[c,d]]); expr_to_seq(eval(B)); maple_to_lisp(eval(B)); # fin exercice 1.26. # exercice 1.27, page 61. untrace(member); # fin exercice 1.27. # exercice 1.28, page 61. permutation_order_1:=proc(sigma::list(posint)) local n,e,tau,k,i; n:=nops(sigma); e:=[seq(i,i=1..n)]; if {op(sigma)}={op(e)} then tau:=sigma; for k while tau <> e do tau:=[seq(sigma[i],i=tau)] od; k; else ERROR(`expected a permutation of [1,`,n,`], but received`,sigma) fi end: # permutation_order_1 `type/permutation`:=proc(sigma) local i; type(sigma,list(posint)) and {op(sigma)}={seq(i,i=1..nops(sigma))} end: # type/permutation permutation_order_2:=proc(sigma::permutation) local n,e,tau,k,i; n:=nops(sigma); e:=[seq(i,i=1..n)]; tau:=sigma; for k while tau <> e do tau:=[seq(sigma[i],i=tau)] od; k; end: # permutation_order_2 sigma:=[1,2,7,4,5,6]; permutation_order_1(sigma); permutation_order_2(sigma); # fin exercice 1.28. # exercice 1.29, page 62. op(4,eval(evalf)); # fin exercice 1.29. # exercice 1.30, page 63. bell:=proc(n::nonnegint) local minus1,k; option remember; if n=0 then 1 else minus1:=n-1; add(binomial(minus1,k)*bell(k),k=0..minus1) fi end: # bell seq(bell(n),n=0..10); bell:=proc(n::nonnegint) local minus1,k; option remember; minus1:=n-1; add(binomial(minus1,k)*bell(k),k=0..minus1) end: # bell bell(0):=1: # fin exercice 1.30. # exercice 1.31, page 63. directnu:=proc(n::nonnegint) #local i; convert(convert(n,base,2),`+`) #add(i,i=convert(n,base,2)); end: # directnu directnu(13); # fin exercice 1.31. # exercice 1.32, page 64. fibonacci:=proc(n::nonnegint) option remember; fibonacci(n-1)+fibonacci(n-2) end: # fibonacci fibonacci(0):=1: fibonacci(1):=1: coeff_a:=proc(k::nonnegint,j::nonnegint) local m; option remember; if j=0 then if k=0 then 1 else 0 fi else add(coeff_a(m,j-1)*fibonacci(k-m-2),m=0..k-2) fi end: # coeff_a Phi:=proc(k::nonnegint) option remember; normal((1+k*t*add((-1)^j*coeff_a(k,j)/j* subs(t=(-1)^j*t,Phi(k-2*j)),j=1..iquo(k,2))) /(1-lucas(k)*t+(-1)^k*t^2)) end: # Phi Phi(0):=1/(1-t): Phi(1):=1/(1-t-t^2): seq(Phi(k),k=0..3); # fin exercice 1.32. # exercice 1.33, page 64. for i to m do for j to n do B[i,j]:=A[j,i] od od; # fin exercice 1.33. # exercice 1.34, page 65. evalc((7+I)^5*(79+3*I)^2); # fin exercice 1.34. # exercice 1.35, page 65. T[0]:=Int(cos(x)^n*sin(x)^m,x); T[1]:=student[intparts](T[0],cos(x)^n*sin(x)^(m-1)); T[2]:=expand(T[1]); T[3]:=combine(T[2],power,symbolic); # fin exercice 1.35. # exercice 1.36, page 65. R:=Int(arctan(t)/t,t=0..x); evalf(subs(x=1,R)); plot(R,x=-1..1); series(R,x,10); evalf(Sum((-1)^n/(2*n+1)^2,n=0..infinity)); # fin exercice 1.36. # exercice 1.37, page 66. binomialdecomposition:=proc(N::nonnegint,l::posint) local k,counter; if N=0 then add(Binomial(k-1,k),k=1..l) elif l=1 then Binomial(N,1) else for counter while binomial(counter,l)<=N do od; Binomial(counter-1,l) +binomialdecomposition(N-binomial(counter-1,l),l-1) fi end: # binomialdecomposition `value/Binomial`:=proc(expr) subs(Binomial=binomial,expr) end: # value/Binomial # fin exercice 1.37.