-- Premiers pas en Maple --
J.A Weil, f\303\251vrier 20081+1 ;a:=sqrt(2) ;b:=(a+1)^2 ;expand(b);premi\303\250res manipulations symboliquesManipulation de polyn\303\264mesP:=x^2-a*x+x+1 ;On peut regrouper les termes par rapport \303\240 la variable x, puis d\303\251river ce polyn\303\264me.P:=collect(P,x);DP:= diff( P, x) ;int(DP , x);Constantes symboliques pr\303\251d\303\251finies. Le nombre "pi" se note "Pi" en Maple (attention \303\240 la majuscule).c:=sqrt(2)*(ln(4)-exp(2))+sin(Pi/3);Je peux demander une \303\251valuation num\303\251rique ("evalf" comme "\303\251valuer en flottants"). Une option permet de pr\303\251ciser le nombre de d\303\251cimales voulues.evalf(c);evalf(Pi,20);Simplification des expressions.sqrt(x)^2;On peut imposer une simplification "symbolique", par exemple pour simplifier sqrt(x^2). Noter que cette simplication, quoiqu'utile, est math\303\251matiquement incorrecte.simplify(sqrt(x^2));
simplify(sqrt(x^2),symbolic);Fonctions math\303\251matiques usuellesint( ln(x) , x) ;plot( ln(x), x=1..2);Le point important : obtenir de l'aide !?plotOn peut aussi d\303\251finir ses propres fonctions math\303\251matiques comme ci-dessous.g:=x->x*exp(x) ; g(0); g(1);h:=x->1/x ; g(h(x));Comparons une expression et une fonction.G:=x*exp(x);G(1);eval(G,x=1) ;D\303\251veloppements en s\303\251rie :series(g(x),x=0);series(g(x),x=0,10);\303\251l\303\251ments de programmationCommen\303\247ons par quelques lignes tr\303\250s na\303\257ves pour calculer une factorielle.n:=5:
f:=1:
for i from 2 to n do
f:=f*i ;
end do;Le m\303\252me sans les r\303\251sultats interm\303\251diaires : on finit les phrases par ":" ainsi, les instructions sont ex\303\251cut\303\251es mais le r\303\251sultat n'est pas montr\303\251.n:=45:
f:=1:
for i from 2 to n do
f:=f*i ;
end do:
resultat := f ;Tests "if/then/else" : if ln(2)=0
then AH ;
else OH ;
end if;if ln(1)=0
then AH ;
else OH ;
end if;Tant que .....i:=10:
while i<12 do
i:=i+1 ;
end do ;Fonctions en mapledivision, quotient, etc:exp\303\251riences pr\303\251alablesExp\303\251rience. Je veux calculer le reste de la division euclidienne de A par B.A:=(x^2+s)*(x^3+x+1) ; B:=(x^2+s)*x^2;
R := rem( A, B) ;Cette commande produit une erreur. Je consulte l'aide de la fonction "rem".?remJe vois (ce que le message d'erreur me disait) l'erreur: je n'ai pas sp\303\251cifi\303\251 par rapport \303\240 quelle variable je faisais la division.R := rem( A, B , x) ;A:=B ; B:= R ; R := rem( A, B , x) ;A:=(x^2+s)*(x^3+x+1) ; B:=(x^2+s)*x^2;Maintenant que je sais faire une division euclidienne, je vais \303\251crire une petite proc\303\251dure qui r\303\251alise l'algorithme d'Euclide pour le calcul du pgcd.
Il est conseill\303\251 de l'\303\251crire dans un fichier texte (s\303\251par\303\251ment) puis de la lire en Maple par la commande "read".euclide := proc(A,B,x) local R, AA, BB; #option trace ; R:=rem(A,B,x); AA := A: BB:= B: while R<>0 do AA:=BB; BB:=R; R:=rem(AA,BB,x); ## rem comme "remainder" end do; RETURN(BB);end proc ;euclide(A,B,x) ;Structures de donn\303\251es : listes, ensembles, tableauxSequence "suite finie"s1:= 1,2,y,a,7,y,3 ;
s2 := seq(i^2, i=1..8) ;Liste [..] : la m\303\252me chose .. avec un ordre.L := [s2] ;manipulation sur la listen:=nops(L) ; L[1] ; L[n] ; L[n+1] ;ensembles {..} : une "patate", i.e comme une liste mais sans ordre et sans r\303\251p\303\251titionL1 := [s1] ; nops(L1) ;
S1 := {s1} ; nops(S1) ;S2 := S1 minus {2,4} ; S3 := S2 union {1,4,cos(x)} ;Un exemple illustrant le chapitre "Syst\303\250mes polynomiaux".with(Groebner);F := [x^3+x*y-y^2+1, y^3-x*y+x];G := Basis(F, tdeg(x, y));FGLM(G, tdeg(x, y), plex(x, y));factor( -1+3*y-2*y^2-2*y^3+4*y^4-3*y^5+y^6+y^9 );RationalUnivariateRepresentation(F, v);factor(-1+v^9+v^6-3*v^5+4*v^4-2*v^3-2*v^2+3*v);librairies - la librairie "linalg" pour l'alg\303\250bre lin\303\251aireLibrairieswith(linalg) : with(LinearAlgebra) :M:=matrix(2,2,[2,3,a,1]) ;M1:=inverse(M) ;det(M) ;eigenvectors(M) ;Equations diff\303\251rentielleseq := diff(y(x),x)-3/4*y(x) =0 ;
sol:=dsolve(eq, y(x));eq := diff(y(x),x$2)-3/4*y(x) =0 ;
sol:=dsolve(eq, y(x));eq:=diffop2de( LCLM(Dx-sqrt(x),`and conjugates`), y(x));
dsolve(eq, y(x));eq := diff(y(x),x$2)-x*y(x) =0 ;
sol:=dsolve(eq, y(x));eq := diff(y(x),x$2)-sqrt(x+1)*y(x) =0 ;
sol:=dsolve(eq, y(x));eq := diff(y(x),x$2)-sqrt(x^3+1)*y(x) =0 ;
sol:=dsolve(eq, y(x));