Está en la página 1de 14

Manipulacin de expresiones algebraicas en Maple

Jos Luis Torres Rodrguez* Marzo 2011


Maple proporciona diversas funciones que nos permiten realizar manipulaciones sobre expresiones algebraicas, tales como simplicaciones, factorizaciones, expansin de expresiones con exponentes, agrupacin de trminos comunes, normalizacin de expresiones racionales, manipulacin del numerador y denominador de una expresin racional; adems de conversion de tipos de expresiones, entre otras. A lo largo de este captulo describiremos vrias de las funciones que nos permiten realizar este tipo de manipulaciones.

1.

Simplicacin

Al manipular una expresin, Maple lleva a cabo simplicaciones automticas sobre sta. El sistema fue diseado para mantener las expresiones en la forma que fueron introducidas; sin embargo, en el caso de expresiones aritmticas, se llevan a cabo algunas simplicaciones sencillas en sumas, productos, cocientes y potencias de nmeros enteros y racionales, nmeros racionales expresados en forma fraccionaria, reduccin de monomios semejantes y expresiones en las que puede aplicarse la propiedad asociativa, entre otras. Por ejemplo: Normalizacin de fracciones:
>

-54/9*x^2 + 16/128*x + 32/4 = 0; 6 x2 +

1 x+8=0 8 Expresiones con operaciones aritmticas y racionales:


>

2^3*x^3 - 4.2/8*x^2 + x/(3.5*4); 8 x3 0,5250000000 x2 + 0,07142857143 x

Agrupacin de trminos identicos en sumas y productos:


>

a + b + c + 2*a - 4*c; 3a + b 3c

Reordenamiento de productos, colocando el factor constante al inicio de la expresin:


>

a*b*3^2*x; 9abx

Eliminacin de factores sintcticamente idnticos en el numerador y el denominador de fracciones algebraicas:


>

(a*b)/(a*x^2*b); 1 x2

* Coordinacin

de Cmputo, Facultad de Ciencias, UNAM

Eliminacin de elementos repetidos en conjuntos:


>

{x, a, b, a, f, g, x}; {f, g, a, x, b}

Combinacin de potencias de acuerdo a la regla (xr )s = x(r s) , cuando r y s son racionales y adems 1 < r 1 :
>

(x^(3/5))^(2/3), (x^(1/3))^(-3/4); x(2/5) , 1 x(1/4)

Distribucin de potencias segn la regla (x y )r = xr y r , cuando r es un nmero racional, y x o y son positivos:


>

(4*x)^(2/3), (3/x)^(2/3); 1 4(2/3) x(2/3) , 3(2/3) ( )(2/3) x

Tambin se llevan a cabo otras simplicaciones, como producto de la evaluacin de ciertas expresiones, por ejemplo:
>

ln(1/2); ln(2) cos(Pi/4);

>

2 2

>

abs(abs(x));

|x| Cabe aclarar que, en estos ltimos casos en realidad no se lleva a cabo una simplicacin automtica, sta es resultado de la evaluacin. Cuando se usan expresiones ms complicadas, las reglas de simplicacin automtica no las reducen a su forma ms simple. En estos casos es necesario solicitar explicitamente la simplicacin; esto puede hacerse por medio del comando simplify; su sintaxis es: simplify(expr); simplify(expr, regla1, regla2, ..., reglan); Donde expr es la expresin a simplicar. Tambin se pueden especicar, opcionalmente, las reglas de simplicacin que deseamos aplicar a la expresin; aunque esta instruccin puede aplicar reglas de simplicacin apropiadas para cada tipo de expresin, de tal forma que generalmente obtenemos una forma ms simple. Por ejemplo, consideremos los siguientes ejemplos:
>

9^(1/2) - 3; 9^n/(3^n*3^n) - 1;

93

>

9n 1 (3n )2 Ntese que en ambos casos no se realiza la simplicacin. Intentemos usando simplify:
>

simplify(9^(1/2) - 3); 0 2

>

simplify(9^n/(3^n*3^n) - 1); 0

Veamos otro ejemplo:


>

F1 := exp(-ln(x) + x)*(x^2 + 2*sin(x)^2 + 2*cos(x)^2 - 3*x - 2); F1 := e(ln(x)+x) (x2 + 2 sin(x)2 + 2 cos(x)2 3 x 2)

>

simplify(F1);

ex (x 3) Algunas de las opciones soportadas por simplify nos permiten aplicas reglas especcas, por ejemplo cuando las expresiones involucran funciones trigonometricas, logaritmos o radicales; como veremos a continuacin.

1.1.

Simplicacin de expresiones con funciones trigonomtricas

Para llevar a cabo este tipo de simplicaciones debemos incluir la opcin trig como argumento de la funcin simplify.
>

sin(x)^3; sin(x)3

>

simplify( %, trig); sin(x) sin(x) cos(x)2

>

1 + tan(x)^2, simplify( %, trig); 1 + tan(x)2 , sin(x) sin(x) cos(x)2

>

cos(2*x) + sin(x)^2 = simplify(cos(2*x) + sin(x)^2, trig); cos(2 x) + sin(x)2 = cos(x)2

1.2.
> >

Simplicacin de expresiones con las opciones radical y symbolic


e := [(x^3 + 3*x^2*a + 3*x*a^2 + a^3)^(1/3) + (8*y)^(1/3), (y^3)^(1/2) + (-27)^(1/3)];

Consideremos la siguiente expresin:

e := [ (x3 + 3 x2 a + 3 x a2 + a3 )(1/3) + 8(1/3) y (1/3) , y 3 + (27)(1/3) ] Ntese que Maple no considera automticamente sqrt(x^2) igual a x, pues sta ltima podria ser negativa o compleja. Para forzar la evaluacin a x (asumiendo que es un real positivo) necesitamos incluir las opciones radical y symbolic.
>

simplify(e, radical); [ ((a + x)3 )(1/3) + 2 y (1/3) , y3 + 3 3 + I 3] 2 2

>

simplify(e, radical, symbolic); [ a + x + 2 y (1/3) , y (3/2) +

3 3 + I 3] 2 2 Otra forma en la que se puede forzar la simplicacin en este tipo de expresiones es indicando a Maple que suponga una cierta propiedad para las incgnitas. Por ejemplo, consideremos la siguiente expresin:
>

f := (-8*n^8*c)^(1/4); f := (8 n8 c)(1/4) 3

Primero intentemos simplicarla solo con simplify:


>

simplify(f);

2(3/4) (n8 c)(1/4) Puede notarse que solo se aplica la regla de simplicacin para radicales sobre 8" y sobre (-n^3*c)", sin embargo este ltimo producto no puede ser simplicado pues no se sabe nada acerca de n y de c. Volvamos a simplicar, indicandole a simplify que asuma las incognitas como reales, esto podemos hacerlo por medio de la opcin assume=real:
>

simplify(f, assume=real);

n2 2(3/4) (c)(1/4) Otra opcin ms que puede aplicarse es symbolic, con la cual simplify considera las variables como simblicas:
>

simplify(f, symbolic);

(1 + I ) n2 2(1/4) c(1/4) Tambin podemos usar la funcin assume para indicar que la constante c debe ser considerada, por ejemplo, mayor que cero: > assume(c > 0);
>

simplify(f); 2(3/4) c (1/4) (n8 )(1/4)

1.3.

Simplicacin de acuerdo a reglas denidas por el usuario

Otra forma de llevar a cabo una simplicacin es especicando una igualdad para que se aplique al hacer esta operacin. Por ejemplo, consideremos la siguiente relacin:
>

rel_lateral := {sin(x)^2 + cos(x)^2 = 1};

rel _lateral := {sin(x)2 + cos(x)2 = 1} Simplicaremos la siguiente expresin, usando para ello rel_lateral:
>

expr1 := sin(x)^3 - 11*sin(x)^2*cos(x) + 3*cos(x)^3 - sin(x)*cos(x) + 2; expr1 := sin(x)3 11 sin(x)2 cos(x) + 3 cos(x)3 sin(x) cos(x) + 2

>

simplify(expr1, rel_lateral);

14 cos(x)3 sin(x) cos(x) + 2 sin(x) cos(x)2 + sin(x) 11 cos(x) Tambin es posible especicar varias relaciones para que la funcin simplify las aplique al realizar la simplicacin, veamos un ejemplo:
> >

rels := {z^3 - z^2 - z*y + 2*y^2 = 1, z^3 + y^2 = 1, z^2 + z*y - y^2 = 0, x + y = z}; rels := {x + y = z, z 2 + z y y 2 = 0, z 3 + y 2 = 1, z 3 z 2 z y + 2 y 2 = 1}

> > >

h1 := 36*z^4*y^2 + 36*z*y^4 - 36*z*y^2 - 1/2*z^2 + z*y - 1/2*y^2 + 1/2*x*z - 1/2*x*y + 2/3*z^4 + 4/3*z^3*y - 2/3*z^2*y^2 - 4/3*z*y^3 + 2/3*y^4; h1 := 36 z 4 y 2 + 36 z y 4 36 z y 2 4 3 2 4 zy + y 3 3 4 1 2 1 1 1 2 4 2 z + z y y2 + x z x y + z4 + z3 y z2 y2 2 2 2 2 3 3 3

>

simplify(h1, rels); 0

1.4.

Simplicacin de expresiones con radicales anidados

La funcin simplify puede simplicar expresiones con radicales simples, pero no puede hacerlo cuando los radicales se encuentran anidados, por ejemplo:
>

s := sqrt(2*(3 - sqrt(2) - sqrt(3) + sqrt(6))); s := 6 2 2 2 3 + 2 6 simplify(s);

>

62 22 3+2 2 3 Este tipo de expresiones deben ser simplicadas usando la funcin radnormal, de la siguiente forma:
>

radnormal(s); 1 +

2+

2.
>

Factorizacin
Maple permite llevar a cabo factorizaciones por medio de la funcin factor. Por ejemplo: factor(2*x^5 + 9*x^4 - 5*x^3 - 49*x^2 - 57*x - 20); (x + 4) (2 x 5) (x + 1)3
>

factor(x^3 - x/3);

x (3 x2 1) 3 Por omisin, este funcin lleva a cabo la factorizacin de acuerdo al tipo de coecientes que aparecen en el polinomio, a menos que se indique otra cosa. Por ejemplo:
>

factor(2*I*x^3 - 14*I*x^2 + 80*I*x + 4*I);

2 I (x3 7 x2 + 40 x + 2) Podemos indicar que la factorizacin se lleve a cabo en terminos de numeros complejos, de la siguiente forma:
>

factor(x^4 + b^4, I);

(x2 + b2 I ) (x2 b2 I ) Esta funcin tambin puede ser aplicada a integrales, en este caso se lleva a cabo la factorizacin sobre el integrando:
>

factor(Int(x^2 + 2*b*x + b^2, x)); (x + b)2 dx

Tambin es posible llevar a cabo factorizaciones en expresiones que involucran varias incognitas:
>

factor(x^2*cos(y)^5 - x^2*cos(y)^2 + 2*x^2*cos(y)^3 - 2*x^2); x2 (cos(y ) 1) (cos(y )2 + cos(y ) + 1) (cos(y )2 + 2)

3.

Expansin de expresiones

La funcin expand nos permite expandir expresiones en las que aparecen exponentes y productos de polinomios. Esta expansin se lleva a cabo principalmente distribuyendo productos sobre sumas, aunque tambin tiene la capacidad para desarrollar expresiones en las que aparecen funciones trigonomtricas, logaritmos, binomiales, entre muchas otras. Por ejemplo:
>

expand((x + 1)^2*(x - 1)); x3 + x2 x 1 expand([sin(2*x), sin(3*x)*cos(x)]);

>

[ 2 sin(x) cos(x), 4 sin(x) cos(x)3 sin(x) cos(x) ] Podemos indicar a expand que no opere algn trmino, incluyendo este al nal de la instruccin (lo mismo puede hacerse para varios trminos, escribiendolos en forma de secuencia):
>

expand((1 - x)*(1 - 2*x)/(x*(1 + y)*(1 + 2*x)), 1 + y); 1 3 2x + x (1 + y ) (1 + 2 x) (1 + y ) (1 + 2 x) (1 + y ) (1 + 2 x)

4.

Agrupacin de trminos

Por otro lado, la funcin combine nos permite agrupar trminos dentro de una expresin. Dependiendo del tipo de sta y de los trminos que se desea combinar, existen diferentes opciones aplicables. Por ejemplo, para agrupar trminos en una expresin trigonomtrica usamos la opcin trig:
>

combine(2*sin(x)*cos(x), trig);

sin(2 x) Otras opciones aplicables son: log, exp y power, las cuales pueden ser combinadas, como puede apreciarse en los siguientes ejemplos:
>

combine(2*ln(x^2 - 1) - ln(x^2 + 1), ln); 2 ln(x2 1) ln(x2 + 1)

>

combine((x^b)^2 - sqrt(3)^(1/5), power); x(2 b) 3(1/10)

>

combine([2*sin(x)*cos(x), 2*cos(x)^2 - 1], trig); [ sin(2 x), cos(2 x) ]

>

combine(exp(sin(x)*cos(b))*exp(cos(x)*sin(b)), [trig, exp]); esin(x+b)

>

Integral := Int(exp(sin(x)*cos(b))*exp(cos(x)*sin(b)), x); Integral := e(sin(x) cos(b)) e(cos(x) sin(b)) dx

>

combine(Integral, [trig, exp]); esin(x+b) dx

5.

Normalizacin

Podemos simplicar expresiones compuestas por fracciones algebraicas por medio de la funcin normal. Al normalizar una fraccin algebraica, sta se expresa en forma de una fraccin irreducible p/q. Por ejemplo:
>

normal((x^2 - y^2)/(x - y)^3); x+y (x y )2

>

expr := sin((x*(x + 1) - x)/(x + 2))^2 + cos(x^2*(x + 2)/(x^2 - 4))^2; expr := sin x (x + 1) x x+2
2 2

+ cos

x2 (x + 2) x2 4
2

>

normal(expr); sin

x2 x2 + cos x+2 x2 Podemos incluir la opcin expanded para que el resultado de la normalizacin sea desplegado en forma expandida:
>

normal((x^4 - y^4)/(x - y)^3, expanded);

x3 + y x2 + y 2 x + y 3 x2 2 x y + y 2 No es recomendable usar esta funcin si el numerador o denominador se complican al ser factorizados, por ejemplo:
>

normal((x^10 - 1)/(x - 1)); x9 + x8 + x7 + x6 + x5 + x4 + x3 + x2 + x + 1

6.

Agrupacin de trminos respecto a una variable

No siempre es posible factorizar o simplicar una expresin, en algunos casos solo se pueden agrupar trminos comunes. Para ejemplicar esto consideremos la siguiente expresin:
> > >

expr := x^3*y^2 + x^3*y*b + x^3*y*c + x^3*b - x^3*c + x^2*y*a x^2*y*b + x^2*c - x*y^2*a - x*y^2*b + x*y*c - x*y*d - x*y - x*a x*b + y*a + y*b - 1;

expr := x3 y 2 + x3 y b + x3 y c + x3 b x3 c + x2 y a x2 y b + x2 c x y 2 a x y 2 b + x y c xyd xy xa xb + ya + yb 1 Intentaremos simplicarla y factorizarla:


>

simplify(expr); x3 y 2 + x3 y b + x3 y c + x3 b x3 c + x2 y a x2 y b + x2 c x y 2 a x y 2 b + x y c x y d xy xa xb + ya + yb 1

>

factor(expr); x3 y 2 + x3 y b + x3 y c + x3 b x3 c + x2 y a x2 y b + x2 c x y 2 a x y 2 b + x y c x y d xy xa xb + ya + yb 1

Como puede apreciarse, no obtenemos una expresin ms simple. En este caso podemos usar la funcin collect para agrupar trminos e intentar obtener una forma ms sencilla. Primero intentaremos transformar esta expresin en un polinomio en trminos de x:
>

collect(expr, x);

(y 2 + y b + y c + b c) x3 + (y a y b + c) x2 + (b a y 2 b + y c y d y 2 a y ) x 1 +ya+yb Tambin podemos agrupar en trminos de x, de tal forma que cada coeciente sea un polinomio en trminos de y:
>

collect(expr, [x, y]);

(y 2 + (b + c) y c + b) x3 + ((a b) y + c) x2 + ((b a) y 2 + (1 + c d) y b a) x 1 + (a + b) y Otra posible opcin es expresar el polinomio en trminos de y:


>

collect(expr, y);

(x b x a + x3 ) y 2 + (x3 c x2 b x + x2 a + x c x d + b + x3 b + a) y x a x b + x3 b x3 c 1 + x2 c Por medio de collect podemos aplicar varias opciones a la expresin que estamos manipulando, por ejemplo podemos factorizar cada coeciente:
>

collect(expr, x, factor);

(y 2 + y b + y c + b c) x3 + (y a y b + c) x2 + (b a y 2 b + y c y d y 2 a y ) x 1 +ya+yb Tambin podemos aplicar funciones a los coecientes; por ejemplo, aplicaremos la funcin sin a cada uno de los coecientes de expr:
>

collect(expr, x, sin);

sin(y 2 + y b + y c + b c) x3 + sin(y a y b + c) x2 sin(b + a + y 2 b y c + y d + y 2 a + y ) x + sin(1 + y a + y b) Otra posible opcin es agrupar trminos con respecto a dos o ms variables:
>

collect(expr, [y, x]);

(x3 + (b a) x) y 2 + ((b + c) x3 + (a b) x2 + (1 + c d) x + a + b) y 1 + (c + b) x3 + x2 c + (b a) x Veamos otro ejemplo, con la siguiente expresin:


> > >

expr2 := ((y^3 + (b + c)*y^2 + (b - c)*y)/(y^2 - (a + b)*y))*x^3 + ((a - b)*y^2 + c*y)*x^2/(y^2 + a*y) - ((a + b)*y^3 - (c - d - 1)*y^2 + (a + b)*y)*x/(y^2 + (a + b)*y) - 1; expr2 :=

(y 3 + (b + c) y 2 + (c + b) y ) x3 ((a b) y 2 + y c) x2 + 2 y (a + b) y y2 + y a ((a + b) y 3 (1 + c d) y 2 + (a + b) y ) x 1 y 2 + ( a + b) y Si aplicamos simplify, lejos de simplicarse, se complica la expresion:


>

simplify(expr2); 8

(x2 y 3 a x2 y a3 x2 y 3 b + x2 y b3 + x2 y 2 c + x3 y c a b + x3 y b2 + x3 b a2 + x3 b2 a x3 c a2 + x3 y 2 b2 + x3 y 3 c x3 y 2 c + 2 x3 y 3 a + 2 x3 y 3 b + x3 y 2 a2 + x3 y 2 b + y b2 + 2 b a2 + b2 a + x3 y 4 + y a2 + 2 x3 y 2 c a + x3 y 2 c b x3 y c b x3 c a b + 2 x3 y b a 2 x3 y c a + x3 y b a2 + x3 y b2 a + x3 y c a2 + 3 x3 y 2 a b x2 y b a2 + x2 y b2 a 2 x2 c a b + 2 y b a + x y d b a x y c a b + x a3 x y 3 + x y b2 + 2 x b a2 + x b2 a + x y a2 + x y 3 c x y 4 b + x y 3 b2 x y 3 d x y 4 a + x y 2 a3 x y 2 c b + 2 x y b a x y c a2 + x y d a 2 + x y 2 d b + x y 3 b a + x y 2 b 2 a + 2 x y 2 a2 b x2 c a2 x2 c b2 + a3 x y 2 a y 2 a y 3 ) ((y + a + b) (y + a) (y + a + b)) Intentaremos simplicarla usando diferentes variantes de la funcin collect :
>

collect(expr2, x); (y 3 + (b + c) y 2 + (c + b) y ) x3 ((a b) y 2 + y c) x2 + 2 y (a + b) y y2 + y a ((a + b) y 3 (1 + c d) y 2 + (a + b) y ) x 1 y 2 + ( a + b) y

>

collect(expr2, [x, y]); 1 + (y 3 + (b + c) y 2 + (c + b) y ) x3 ((a b) y 2 + y c) x2 + y 2 + (b a) y y2 + y a 3 2 ((a + b) y + (1 c + d) y + (a + b) y ) x y 2 + (a + b) y

>

collect(expr2, [x, y], normal); (y 3 + (b + c) y 2 + (c + b) y ) x3 ((a b) y 2 + y c) x2 + y 2 + (b a) y y2 + y a 3 2 ((a + b) y + (1 c + d) y + (a + b) y ) x y 2 + (a + b) y collect(expr2, [x, y], factor); 1 + 1 + (y 3 + (b + c) y 2 + (c + b) y ) x3 ((a b) y 2 + y c) x2 + y 2 + (b a) y y2 + y a 3 2 ((a + b) y + (1 c + d) y + (a + b) y ) x y 2 + (a + b) y

>

>

collect(expr2, [y, x], factor); 1 (y 2 + y b + y c + b c) x3 (y a y b + c) x2 (b + a + y 2 b y c + y d + y 2 a + y ) x + y + a + b y+a y+a+b

7.

Manipulacin del numerador y denominador de una expresin racional

Las funciones numer y denom nos permiten extraer el numerador y denominador, respectivamente, de una expresin racional. Por ejemplo:

> >

expr_rac := (2*x - sqrt(x + 1) - (1/2)*x^3 - x*sin(2*x))/(1 + 2*x + sqrt(x + 1) - (1/2)*x^3 + x^2*sin(2*x)); x3 x sin(2 x) 2 expr _rac := x3 1 + 2x + x + 1 + x2 sin(2 x) 2 2x x+1

>

numer(expr_rac); 4x 2

x + 1 x3 2 x sin(2 x)

>

2 + 4 x + 2 x + 1 x3 + 2 x2 sin(2 x) Ntese que la expresin es normalizada antes de extraer el numerador y denominador. Comparese expr_rac con la expresin normalizada:
>

denom(expr_rac);

4 x + 2 x + 1 + x3 + 2 x sin(2 x) 2 + 4 x + 2 x + 1 x3 + 2 x2 sin(2 x) Una vez extraidos el numerador y denominador, podemos aplicar diferentes simplicadores a cada parte:
>

normal(expr_rac);

factor(numer(expr_rac)) / factor(denom(expr_rac)); 4 x 2 x + 1 x3 2 x sin(2 x) 2 + 4 x + 2 x + 1 x3 + 2 x2 sin(2 x) collect(numer(expr_rac), x) / factor(denom(expr_rac)); x3 + (4 2 sin(2 x)) x 2 x + 1 2 + 4 x + 2 x + 1 x3 + 2 x2 sin(2 x)

>

8.

Extraccin de los coecientes de un polinomio

Maple nos permite extraer los coecientes de un polinomio por medio de las funciones coe y coes. Consideremos la siguiente expresin:
> > >

pol := x^3*y^2 + x^3*y*b + x^3*y*c + x^3*b - x^3*c + x^2*y*a - x^2*y*b + x^2*c - x*y^2*a - x*y^2*b + x*y*c - x*y*d - x*y - x*a - x*b + y*a + y*b - 1;

pol := x3 y 2 + x3 y b + x3 y c + x3 b x3 c + x2 y a x2 y b + x2 c x y 2 a x y 2 b + x y c xyd xy xa xb + ya + yb 1 Podemos expresar este polinomio en trminos de x por medio de collect:
>

collect(pol, x);

(y 2 + y b + y c + b c) x3 + (y a y b + c) x2 + (b a y 2 b + y c y d y 2 a y ) x 1 +ya+yb Tambin podemos extraer cada uno de los coecientes del polinomio, especicando la variable principal y la potencia de la cual deseamos el coeciente:
>

coeff(pol, x, 3); y2 + y b + y c + b c

10

>

coeff(pol, x, 2); yayb+c

>

coeff(pol, x, 1); b a y 2 b + y c y d y 2 a y

>

coeff(pol, x, 0);

1 + y a + y b Podemos extraer todos los coecientes, en forma de secuencia, usando la funcin coes de la siguiente forma:
>

coeffs(pol, x); 1 + y a + y b, b a y 2 b + y c y d y 2 a y, y a y b + c, y 2 + y b + y c + b c

En los siguientes ejemplos, extraeremos los coecientes de pol respecto a y. Ntese que automticamente se agrupan los trminos con respecto a la variable especicada, antes de extraer los coecientes. Comprese con la salida de collect:
>

coeff(pol, y, 2); x b x a + x3

>

coeffs(pol, y); x a x b + x3 b x3 c 1 + x2 c, x b x a + x3 , x3 c x2 b x + x2 a + x c x d + b + x3 b + a

>

collect(pol, y); (x b x a + x3 ) y 2 + (x3 c x2 b x + x2 a + x c x d + b + x3 b + a) y x a x b + x3 b x3 c 1 + x2 c

9.

Ordenamiento de trminos

La funcin sort no permite ordenar los elementos de una expresin. Esta funcin tambin puede ser aplicada a listas de expresiones. Por ejemplo:
>

sort(1 + x^2 - x);

x2 x + 1 Por omisin las expresiones son ordenadas en forma descendente, aunque se puede especicar de que manera se debe realizar el ordenamiento. Por ejemplo, ordenaremos los elementos de la siguiente expresin, en el primer caso solo con respecto a x, en el segundo caso con respecto a x y con respecto a y; y nalmente con respecto a y y con respecto a x:
> >

poli := x^4*y + 12*x^5*y^2 + 40*x^6*y^4 - 32*x^4*y^3 - 368*x^4*y 320*x^3*y + 768*x + 1024; poli := 367 x4 y + 12 x5 y 2 + 40 x6 y 4 32 x4 y 3 320 x3 y + 768 x + 1024

>

sort(poli, x); 40 y 4 x6 + 12 y 2 x5 367 y x4 32 y 3 x4 320 y x3 + 768 x + 1024

>

sort(poli, [x, y]); 40 x6 y 4 + 12 x5 y 2 32 x4 y 3 367 x4 y 320 x3 y + 768 x + 1024 11

>

sort(poli, [y, x]); 40 y 4 x6 32 y 3 x4 + 12 y 2 x5 367 y x4 320 y x3 + 768 x + 1024

Podemos especicar el orden en que se llevar a cabo el ordenamiento, para ello se pueden incluir como opciones < o >, para un orden ascendente o descendente, respectivamente. Por ejemplo:
>

sort([-2, 4, 8, 5, -4, 10, 25], >); [25, 10, 8, 5, 4, 2, 4]

sort([-2, 4, 8, 5, -4, 10, 25], <); [4, 2, 4, 5, 8, 10, 25] Tambin podemos expecicar la variable y el orden al mismo tiempo:
> >

sort(poli, [x, >]); 40 y 4 x6 + 12 y 2 x5 32 y 3 x4 367 y x4 320 y x3 + 768 x + 1024

10.

Conversin de expresiones

Otra de las facilidades proporcionadas por Maple es la conversin de expresiones, la cual puede llevarse a cabo por medio de la funcin convert. sta nos permite convertir entre diferentes tipos, tales como: Convertir series en polinomios:
>

s1 := taylor(sin(x), x=0); s1 := x 1 3 1 5 x + x + O(x6 ) 6 120 1 3 1 5 x + x 6 120

>

convert(s1, polynom); x

Convertir series en expresiones racionales:


>

s2 := taylor(exp(x), x=0); 1 1 1 4 1 5 s2 := 1 + x + x2 + x3 + x + x + O(x6 ) 2 6 24 120 convert(s2, ratpoly); 1+ 3 3 2 1 3 x+ x + x 5 20 60 2 1 2 1 x+ x 5 20

>

Convertir una expresion racional en fracciones parciales, con respecto a x:


>

g := (x^3 - 3*x + 1)*(x^4 - 5*x^3) / (2*x^4 + 4*x^2 - 5*x); g := (x3 3 x + 1) (x4 5 x3 ) 2 x4 + 4 x2 5 x

>

convert(g, parfrac, x); 5 x2 5 x 57 30 x2 278 x + 285 x3 + + 2 2 2 4 4 (2 x3 + 4 x 5)

12

Conversin de senos y tangentes a logaritmos o exponenciales:


>

convert(sinh(x) + sin(x), exp); 1 x 1 1 1 1 e I (e(x I ) (x I ) ) x 2 2 e 2 e convert(arctanh(x), ln); 1 1 ln(x + 1) ln(1 x) 2 2

>

Conversion de listas y conjuntos en sumas y productos....


>

S := seq(x[i]^2, i=1..10); S := x1 2 , x2 2 , x3 2 , x4 2 , x5 2 , x6 2 , x7 2 , x8 2 , x9 2 , x10 2

>

convert([S], +); x1 2 + x2 2 + x3 2 + x4 2 + x5 2 + x6 2 + x7 2 + x8 2 + x9 2 + x10 2

>

convert({S}, *); x1 2 x2 2 x3 2 x4 2 x5 2 x6 2 x7 2 x8 2 x9 2 x10 2

Con esta misma funcin se pueden llevar a cabo otras conversiones ms simples, por ejemplo: Conversiones de radianes a grados y viceversa:
>

convert(Pi/2, degrees); 90 degrees

>

convert(120*degrees, radians); 2 3

Conversin de nmeros entre diferentes bases. Por ejemplo: - Convertir de decimal a binario, a hexadecimal y a octal:
>

convert(34, binary); 100010

>

convert(1234, hex); 4D2

>

convert(235, octal); 353

- Convertir a decimal un numero en cualquier base entre 2 y 36. La sintaxis en este caso es: convert(nmero, decimal, base) Donde base es un nmero entre 2 y 36, o bien una de las palabras: binary, octal o hex, para binario, octal o hexadecimal, respectivamente. En bases mayores que 10 se pueden usar las letras a (o A) a la z (o Z), para representar los dgitos 10 a 35, respectivamente. Por ejemplo:
>

convert("1A.C", decimal, hex); 26,75000000 13

>

convert(110101, decimal, 2); 53 convert(GH23A, decimal, 20); 2696870

>

- Convertir a octal o hexadecimal un nmero en cualquier base entre 2 y 36. Este caso es anlogo al anterior. Por ejemplo:
>

convert(3212, octal, decimal); 6214 convert(6214, hex, octal); 1846 convert(1846, decimal, hex); 6214 convert(23483, hex, 9); 5BBB

>

>

>

Los siguientes ejemplos muestran otro tipo de conversiones vlidas: Convertir nmeros de punto otante en fracciones:
>

convert(.3456, fraction); 216 625

Convertir listas en matrices:


>

l := [[1, 2, 3], [4, 5, 6], [7, 8, 9]]; l := [[1, 2, 3], [4, 5, 6], [7, 8, 9]] convert(l, Matrix, 3, 3); 3 6 9

>

1 2 4 5 7 8 Convertir enteros en bytes y cadenas en enteros:


>

convert([65, 66, 67], bytes); ABC

>

convert(Hola, bytes); [72, 111, 108, 97]

Esta funcin permite realizar una gran cantidad de conversiones de tipos; por razones de espacio solo se han presentado algunos ejemplos. Vease la pgina de ayuda ?convert para obtener una lista completa.

14

También podría gustarte