For more information about MAPLE and ORCCA please visit:
AXIOM SESSIONscale=2.5]
> restart; Elementary calculations > 1/3+2; 7 - 3 > 1/3+2.0; 2.333333333 > 5.0^(1/3); 1.709975947 > 2345/34570; 469 ---- 6914 > 3*x^3-4*x^2+x-7; 3 2 3 x - 4 x + x - 7 > x^2/25+y^2/36; 1 2 1 2 -- x + -- y 25 36 > sum('i^2', 'i'=1..100); 338350 > sum('i^2', 'i'=1..n); 1 3 1 2 1 1 - (n + 1) - - (n + 1) + - n + - 3 2 6 6 > sum('1/i^2', 'i'=1..infinity); 1 2 - Pi 6 > evalf(Pi, 25); 3.141592653589793238462643 > diff(x^3*y^2, y); 3 2 x y > limit((-x^2+x+1)/(x+4), x=infinity); -infinity > limit(tan(x), x=Pi/2, left); infinity > int(1/(exp(x^2)+x), x); / 1 \ int|-----------, x| | / 2\ | \exp\x / + x / > int(1/x, x=2..4); ln(2) > int(int(int(x^2*y^2*z^2, x=1..2), y=1..2), z=1..2); 343 --- 27 > with(linalg): Warning, the protected names norm and trace have been redefined and unprotected > A := array(1..3,1..3,[[1,x,-x],[-x,0,x],[0,1,x]]); [1 x -x] [ ] A := [-x 0 x ] [ ] [0 1 x ] > det(A); 3 2 -x + x + x > inverse(A); [ 1 x + 1 x ] [- ----------- - ----------- -----------] [ 2 2 2 ] [ -1 + x + x -1 + x + x -1 + x + x] [ ] [ x 1 x - 1 ] [ ----------- ----------- -----------] [ 2 2 2 ] [ -1 + x + x -1 + x + x -1 + x + x] [ ] [ 1 1 x ] [- ----------- - --------------- -----------] [ 2 / 2 \ 2 ] [ -1 + x + x x \-1 + x + x/ -1 + x + x] > det(array(1..2, 1..2, [[a,b],[c,d]])); a d - b c > solve(cos(x) + y = 9, x); Pi - arccos(y - 9) > solve(x^3 - 6*x^2 + 11*x - 6, x); 1, 2, 3 > solve({x+y=1, 2*x+y=3}, {x,y}); {x = 2, y = -1} > solve(z^4+z^3-2*z-1,z); / 4 3 \ RootOf\_Z + _Z - 2 _Z - 1, index = 1/, / 4 3 \ RootOf\_Z + _Z - 2 _Z - 1, index = 2/, / 4 3 \ RootOf\_Z + _Z - 2 _Z - 1, index = 3/, / 4 3 \ RootOf\_Z + _Z - 2 _Z - 1, index = 4/ > solve(z^3+z-1,z); (1/3) 1 / (1/2)\ 2 - \108 + 12 93 / - -----------------------, 6 (1/3) / (1/2)\ \108 + 12 93 / (1/3) 1 / (1/2)\ 1 - -- \108 + 12 93 / + ----------------------- 12 (1/3) / (1/2)\ \108 + 12 93 / / (1/3) \ 1 (1/2) |1 / (1/2)\ 2 | + - I 3 |- \108 + 12 93 / + -----------------------|, 2 |6 (1/3)| | / (1/2)\ | \ \108 + 12 93 / / (1/3) 1 / (1/2)\ 1 - -- \108 + 12 93 / + ----------------------- 12 (1/3) / (1/2)\ \108 + 12 93 / / (1/3) \ 1 (1/2) |1 / (1/2)\ 2 | - - I 3 |- \108 + 12 93 / + -----------------------| 2 |6 (1/3)| | / (1/2)\ | \ \108 + 12 93 / / > solve({x^3+y-1,x+y^3-1},{x,y}); / / 3 \ {y = 0, x = 1}, {x = 0, y = 1}, { x = RootOf\_Z + _Z - 1, label = _L3/, \ \ / / 3 \ } { y = RootOf\_Z + _Z - 1, label = _L3// , \ / 4 3 \ y = RootOf\_Z + _Z - 2 _Z - 1, label = _L4/, 3 \ / 4 3 \ } x = -RootOf\_Z + _Z - 2 _Z - 1, label = _L4/ + 1/ Sequences, sets and lists > restart; > 1,2,3,4,5; 1, 2, 3, 4, 5 > a+b,b+c,c+d,e+f,f+g; a + b, b + c, c + d, e + f, f + g > seq(sin(Pi*i/6), i = 0..3); 1 1 (1/2) 0, -, - 3 , 1 2 2 > i; i > seq(i!/i^2, i=1..7); 1 2 3 24 720 1, -, -, -, --, 20, --- 2 3 2 5 7 > {1, 1, 2, 3, 2}; {1, 2, 3} > {red, white, blue}; {white, blue, red} > L := [seq(i, i = 0..6)]; L := [0, 1, 2, 3, 4, 5, 6] > {seq(i^2 mod 7, i = L)}; {0, 1, 2, 4} > {a, b, c, d} union {d, e, f}; {a, e, b, c, f, d} > {1, 2, 3, 4, 5} intersect {2, 4, 6, 8, 10}; {2, 4} Assignments and equations > restart; > i :=1; > i := 1 > i; 1 > unassign('i'); > i; i > x = y + 3; x = y + 3 > x - y = 1 ; x - y = 1 > x; y; x y > sols := solve({x+y=3,x-y=1}, {x,y}); sols := {y = 1, x = 2} > x; y; x y > assign(sols); > x; y; 2 1 > x := x + 3 ; x := 5 > unassign('x'); > x := x + 3 ; Error, recursive assignment > x; x Types and representations > restart; > whattype(34/57); fraction > whattype([1,2,3,4,5]); list > (x+3)*(y-4); whattype((x+3)*(y-4)); (x + 3) (y - 4) * > whattype(x = y+1); = > greetings := "hello there"; greetings := "hello there" > type(greetings, integer); false > type(greetings, string); true > hastype((x+1/2)*exp(3), fraction); true > hastype(x^2+3*x+5, `*`); true > int(exp(-x^2),x); hastype(int(exp(-x^2),x), fraction); 1 (1/2) - Pi erf(x) 2 true > has(x^2+3*x+5, 3); true > has(x^2+3*x+5, 2*x); false > object := 3*x^2 + 2*x - 3; 2 object := 3 x + 2 x - 3 > nops(object); 3 > op(object); 2 3 x , 2 x, -3 > op(1, object); 2 3 x > op(1, op(1, object)); 3 > whattype(op(2, x^2+exp(1)-3)); function Evaluation and substitution > restart; > subs(y=ln(x),exp(y)); > exp(ln(x)) > simplify(subs(y=ln(x),exp(y))); x > 4^(1/2)+3; simplify(4^(1/2)+3); (1/2) 4 + 3 5 The computations below show that one can replace a variable by a value and,,also, a term by a value. > f := x^2 + 3*x + 1; simplify(f, {x^2=1}); simplify(f, {x=1}); 2 f := x + 3 x + 1 3 x + 2 5 > f := x^2 + x*y + y^2; simplify(f, {x^2=1, y^2=6}); 2 2 f := x + x y + y x y + 7 More generally, one can simplify an expression by working modulo a relation. To make clear sense, the precise specifications of "simplify" requires mathematical notions that are outisde the scope of this introduction. > f := x^2 + 2*x*y + y^2; simplify(f, {x+y=4}); 2 2 f := x + 2 x y + y 16 > restart; simplify(x^2*y, {x^2=x*y}); 2 x y In particular, when working modulo several relations, things become more tricky. Indeed, one has to decide which simplication rule to use first. On the following example it is easy to see using the first rules twice and then the second once leads to the returned result. > g := simplify(x^5-x^2-x, {x^3 = x*y, y^2 = x+1}); g := 0 Solving equations > restart; > solve({x^2 - 3 * x + 2 = 0},{x}) ; {x = 2}, {x = 1} > solve(a*x^2 + b*x+ c,x); (1/2) (1/2) / 2 \ / 2 \ -b + \b - 4 a c/ b + \b - 4 a c/ ----------------------, - --------------------- 2 a 2 a > solve(a*x^3 + b*x^2 + c*x + d,x): > solve(a*x^4 + b*x^3 + c*x^2 + b*x + e,x); / 4 3 2 \ RootOf\a _Z + b _Z + c _Z + b _Z + e/ > d := (m -1)*x -2*(m+1)*y-m; d := (m - 1) x - 2 (m + 1) y - m > solve({d = 0},{x}); / 2 y m + 2 y + m\ { x = --------------- } \ m - 1 / > solve({abs(x^2 -4*x -3) = 3},{x}); / (1/2)\ / (1/2)\ { x = 2 + 10 }, { x = 2 - 10 }, {x = 0}, {x = 4} \ / \ / > solve({-2*x-3*y=2,4*x+6*y=5},{x,y}); > solve({x -2*y -3,-2*x+4*y+6},{x,y}); {x = 3 + 2 y, y = y} > solve({x-y+z-1,x+y-z-2,x+y+z-3},{x,y,z}); / 1 3\ { y = 1, z = -, x = - } \ 2 2/ > restart; solve({a*x + b*y - e, c*x + d * y - f},{x,y}) ; / -c e + f a -d e + b f\ { y = ----------, x = - ---------- } \ d a - b c d a - b c / Programming > f := proc(x,y) x + y; end; f := proc(x, y) x + y end proc; > f(2,3); 5 > print(f); proc(x, y) x + y end proc; > f; f Please, refer to the Maple documentation. Representations of polynomials: expression trees The default representation for polynomials in Maple is by expression trees. This has the advantage that arithmetic operations have O(1) complexity. However, a quatity which is null may be represented by something else than 0. In addition, the complexity of the equality test is not linear in the size of the input polynomials. Also finding the degree or the leading term requires to traverse the representation of the input polynomials. > restart; > p1 := x * (x + 1) * (x + 2); p1 := x (x + 1) (x + 2) > op(p1); x, x + 1, x + 2 > p2 := x^3 + 3 * x^2 + 2 * x; 3 2 p2 := x + 3 x + 2 x > op(p2); 3 2 x , 3 x , 2 x > p3 := ((x + 3) * x + 2) * x; p3 := ((x + 3) x + 2) x > op(p3); (x + 3) x + 2, x > p1 - p2; 3 2 x (x + 1) (x + 2) - x - 3 x - 2 x > expand(p1 - p2); 0 Representations of polynomials: canonical representations I > restart; p := 4*x^3 *y + 5*x*y^2 -7 *x^2 -13 *y + 1; 3 2 2 p := 4 x y + 5 x y - 7 x - 13 y + 1 > vars := [x,y]; p := expand(p,[x,y]); vars := [x, y] 3 2 2 p := 4 x y + 5 x y - 7 x - 13 y + 1 > with(Groebner); [MulMatrix, SetBasis, ToricIdealBasis, fglm_algo, gbasis, gsolve, hilbertdim, hilbertpoly, hilbertseries, inter_reduce, is_finite, is_solvable, leadcoeff, leadmon, leadterm, normalf, pretend_gbasis, reduce, spoly, termorder, testorder, univpoly] > ord := plex(op(vars)); lmp := leadterm(p,ord); lcp := leadcoeff(p,ord); ord := plex(x, y) 3 lmp := x y lcp := 4 > [[degree(lmp,vars[1]), degree(lmp,vars[2])], lcp]; [[3, 1], 4] > p := p - lmp * lcp; 2 2 p := 5 x y - 7 x - 13 y + 1 Representations of polynomials: canonical representations II > restart; read(`polynomials.input`): > vars := [x,y]; vars := [x, y] > p := x^2 + 2*x*y + 3*x + 4*y^2 + 5*y +6; 2 2 p := x + 2 x y + 3 x + 4 y + 5 y + 6 > q := x^2 -2*x*y +3*x -4*y^2 +5*y; 2 2 q := x - 2 x y + 3 x - 4 y + 5 y > mapleToPol(1, vars); mapleToPol(x, vars); mapleToPol(y, vars); [[[0, 0], 1]] [[[1, 0], 1]] [[[0, 1], 1]] > tp := mapleToPol(p,vars); tp := [[[2, 0], 1], [[1, 1], 2], [[1, 0], 3], [[0, 2], 4], [[0, 1], 5], [[0, 0], 6]] > tq := mapleToPol(q, vars); tq := [[[2, 0], 1], [[1, 1], -2], [[1, 0], 3], [[0, 2], -4], [[0, 1], 5]] > pp := polToMaple(tp,vars); pp -p ; 2 2 pp := x + 2 x y + 3 x + 4 y + 5 y + 6 0 > qq := polToMaple(tq,vars); qq -q ; 2 2 qq := x - 2 x y + 3 x - 4 y + 5 y 0 > ts := addPol(tp, tq); polToMaple(ts, vars) - (p + q); ts := [[[2, 0], 2], [[1, 0], 6], [[0, 1], 10], [[0, 0], 6]] 0 > tr := polMul(tp, tq); expand(polToMaple(tr, vars) - p * q); tr := [[[4, 0], 1], [[3, 0], 6], [[2, 2], -4], [[2, 1], 10], [[2, 0], 15], [[1, 3], -16], [[1, 1], 18], [[1, 0], 18], [[0, 4], -16], [[0, 2], 1], [[0, 1], 30]] 0
Marc Moreno Maza