tutorial de maple v

99
30/07/13 Tutorial de MAPLE V www.dmdelrio.es/Maple/MAPLE1.html 1/99 MAPLE V.5 David Miguel del Río Estos apuntes tienen como objetivo el poder utilizar MAPLE V.5 con rapidez. Se ha hecho especial hincapié en los aspectos algebraicos (ecuaciones, sistemas y funciones) que puede desarrollar MAPLE No obstante, MAPLE tiene muchas otras posibilidades. A pesar de esto, espero que este manual sea de utilidad. Puedes hacer consultas o sugerencias en: [email protected] Tengo que agradecer a Ismael su interés en este tipo de sistemas de cálculo simbolico ya que, sin saberlo, fue el mayor promotor de este trabajo. INTRODUCCIÓN HOJAS DE TRABAJO Cuando inicies una sesión de MAPLE aparecerá una hoja de trabajo(worksheet ) en blanco, en la que verás un signo mayor que precedido de un corchete abierto([> ). El corchete indica un área de trabajo y el signo > indica una zona de entrada. Todo lo que teclees ahí aparecerá en rojo y será interpretado como un comando de MAPLE. TIPOS DE REGIONES Hay varios tipos de regiones: Región de entrada de texto, como esta que estás leyendo, donde aparecen comentarios en negro. Puedes activar una zona de comentarios pulsando el icono T en la barra de comandos. Podrás ecribir con diferentes formatos, tamaños, etc. Región de comando(input), como la que aparece al iniciar MAPLE. Se reconoce por el signo > y en ella el texto escrito aparecerá en rojo. Puedes iniciar una zona de comando pulsando el icono [> en la barra de comandos. Dentro de una zona de comando se pueden introducir comentarios aclaratorios. Para ello utilizamos el símbolo #, después se escribe el comentario. Región de salida (output), en la que aparecerá, en azul, la salida producida por un comando Las diferentes regiones pueden unirse utilizando la tecla F4, y separarse con F3 AYUDAS Lo primero que debes saber es cómo llamar a la ayuda de MAPLE . Es tan sencillo como teclear ? en una línea de comando y pulsar [INTRO] > ? Si lo que ocurre es que tienes dudas sobre cuál es la sintaxis de un determinado comando, teclea ? y detrás el nombre del comando, después pulsa [INTRO], por ejemplo: > ?factor nos dará información acerca del comando factor Se puede obtener una ayuda general de todas las posibilidades de MAPLE con el comando: > ?index COMANDOS SINTAXIS GENERAL DE UN COMANDO Como norma general un comando consta de un palabra clave seguida de unos argumentos que se escribirán englobados en un paréntesis separados por comas. Por ejemplo:

Upload: cefeim-eapim-unamba

Post on 26-Nov-2015

207 views

Category:

Documents


0 download

TRANSCRIPT

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 1/99

    MAPLE V.5 David Miguel del Ro

    Estos apuntes tienen como objetivo el poder utilizar MAPLE V.5 con rapidez. Se ha hecho especial hincapi en los aspectosalgebraicos (ecuaciones, sistemas y funciones) que puede desarrollar MAPLE No obstante, MAPLE tiene muchas otrasposibilidades. A pesar de esto, espero que este manual sea de utilidad.

    Puedes hacer consultas o sugerencias en: [email protected]

    Tengo que agradecer a Ismael su inters en este tipo de sistemas de clculo simbolico ya que, sin saberlo, fue el mayor promotorde este trabajo.

    INTRODUCCIN

    HOJAS DE TRABAJO

    Cuando inicies una sesin de MAPLE aparecer una hoja de trabajo(worksheet ) en blanco, en la que vers un signo mayor queprecedido de un corchete abierto([> ). El corchete indica un rea de trabajo y el signo > indica una zona de entrada. Todo lo queteclees ah aparecer en rojo y ser interpretado como un comando de MAPLE.

    TIPOS DE REGIONES

    Hay varios tipos de regiones:

    Regin de entrada de texto, como esta que ests leyendo, donde aparecen comentarios en negro. Puedes activar una zonade comentarios pulsando el icono T en la barra de comandos. Podrs ecribir con diferentes formatos, tamaos, etc.Regin de comando(input), como la que aparece al iniciar MAPLE. Se reconoce por el signo > y en ella el texto escritoaparecer en rojo. Puedes iniciar una zona de comando pulsando el icono [> en la barra de comandos. Dentro de una zonade comando se pueden introducir comentarios aclaratorios. Para ello utilizamos el smbolo #, despus se escribe elcomentario.Regin de salida (output), en la que aparecer, en azul, la salida producida por un comando

    Las diferentes regiones pueden unirse utilizando la tecla F4, y separarse con F3

    AYUDAS

    Lo primero que debes saber es cmo llamar a la ayuda de MAPLE. Es tan sencillo como teclear ? en una lnea de comando ypulsar [INTRO]

    > ?

    Si lo que ocurre es que tienes dudas sobre cul es la sintaxis de un determinado comando, teclea ? y detrs el nombre delcomando, despus pulsa [INTRO], por ejemplo:

    > ?factor

    nos dar informacin acerca del comando factor

    Se puede obtener una ayuda general de todas las posibilidades de MAPLE con el comando:

    > ?index

    COMANDOS

    SINTAXIS GENERAL DE UN COMANDO

    Como norma general un comando consta de un palabra clave seguida de unos argumentos que se escribirn englobados en unparntesis separados por comas. Por ejemplo:

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 2/99

    > solve(a*b-c,b);

    El comando solve resuelve la ecuacin del polinomio (igualado a 0) que aparace como primer argumento en el parntesisdespejando la variable que aparecere como segundo argumento en el parntesis. Para ver con ms detalle cmo se utiliza estecomando teclea:

    > ?solve

    Hay comandos que no tienen este tipo de sintaxis, como son las operaciones bsicas, la potenciacin, el factorial.

    FINALIZADOR DE UN COMANDO

    Para que el comando sea ejecutado ser necesario escribir un finalizador y pulsar [INTRO]. Hay dos tipos de finalizador decomando:

    el punto y coma (;) ejecutar el comando y producir una salida que se ver en pantalla en color azul.los dos puntos (:) que ejecuta el comando pero no producir salida alguna. Es muy til cuando sea necesario ejecutar unaserie de comandos donde nicamente interese la salida del ltimo de ellos.

    Por ejemplo, el comando para factorizar enteros es ifactor (i por integer y factor por factorizar):

    > ifactor(180);

    > ifactor(180):

    Hay comandos que no tienen este tipo de sintaxis, como son las operaciones bsicas, la potenciacin, el factorial. Puedes veralgunos de ellos tecleando:

    > ?index,expression

    COMANDOS ENCADENADOS

    Es posible encadenar los comando en una misma lnea utilizando los separadores entre ellos, por ejemplo:

    > 2+3; 5-3;

    Tambin podemos separarlos con una coma, en cuyo caso la salida ser de esta manera:

    > 2+3 , 5-3;

    Si no deseamos visualizar la salida utilizaremos los dos puntos:

    > 2+3 : 5-3:

    simplify Y expand

    Dos comandos muy utilizados son simplify y expand.

    El comando simplify se utiliza para simplificar expresiones, como quebrados, potencias, etc.

    > (x^3-3*x+2)/(x^3+3*x^2-4)=simplify((x^3-3*x+2)/(x^3+3*x^2-4));

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 3/99

    El comando expand se utiliza para expandir expresiones. Por ejemplo:

    > (a+b)^3 = expand((a+b)^3);

    MAYSCULAS Y MINSCULAS

    MAPLE es case sensitive, es decir, distingue entre maysculas y minsculas . Por esto deberemos tener especial cuidado alescribir variables. Por ejemplo: para MAPLE las variables Numero y numero son distintas.

    En general, los comandos se escriben en minscula.

    Reservaremos las maysculas para las funciones y procedimientos definidos por nosotros.

    EXPRESIN INERTE

    MAPLE tiene varios comandos que, segn se escriban con la primera letra en mayscula o minscula, hacen diferenetesacciones. Por ejemplo:

    Para hallar un lmite se utiliza el comando limit, pero si escribimos Limit lo que aparecer ser la expresin del lmite en sunotacin convencional, que es lo que se denomina expresin inerte:

    > Limit(x/(x^2-1),x=infinity);

    > limit(x/(x^2-1),x=infinity);

    Esta capacidad de MAPLE se puede utilizar para escribir frmulas de la siguiente manera:

    > Limit(x/(x^2-1),x=infinity)=limit(x/(x^2-1),x=infinity);

    Otros comandos con capacidad de escribir la expresin inerte son, por ejemplo:

    Sum y sum (sumatorio)

    Product y product (productorio)

    Diff y diff (para el cculo de derivadas)

    Int y int (calcula la integral indefinida de una funcin).

    PAQUETES DE COMANDOS Y LIBRERAS

    MAPLE guarda en su memoria los comandos ms usuales, el resto se guarda en paquetes (packages) que ser preciso cargarcuando vayamos a utilizarlos. Para ver el listado de paquetes disponibles teclea:

    > ?index,packages

    CARGANDO UN PAQUETE

    Si necesitamos cargar un paquete concreto utilizaremos el comando with indicando el nombre del paquete. El resultado porpantalla es distinto segn el finalizardor: con punto y coma se listan los comando cargados, con dos puntos el paquete se cargapero no se nos indica nada.

    > with(linalg);

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 4/99

    Warning, new definition for norm

    Warning, new definition for trace

    > with(linalg):

    Si utilizamos un comando de un paquete no cargado MAPLE no har nada, simplemente devolver un eco del comando escrito.

    DESCARGANDO UN PAQUETE

    Si queremos descargar un paquete (lo que liberar memoria) utilizaremos el comando:

    > restart;

    LIBRERAS

    Determinados comandos muy poco usados no estn contenidos ni en el ncleo de MAPLE ni en un paquete determinado. En vezde esto estn en una librera general. Se pueden cargar con el comando readlib.

    Por ejemplo, el comando discont, que calcula puntos de discontinuidad de una funcin, se carga de la siguiente manera:

    > readlib(discont);

    > discont(1/(x^2-1),x);

    OPERACIONES NUMRICAS BSICAS

    SUMA, RESTA, MULTIPLICACIN, DIVISIN Y POTENCIACIN

    Se utilizan los signos comunes: +, - , *, / y ^adems de los parntesis (reiterados si es necesario). MAPLE respeta la prioridad delas operaciones. Por ejemplo:

    > 2+3*4^2;

    Para operaciones bsicas no se utilizarn corchetes ni llaves, nicamente parntesis:

    > (((2+3)*4)^2)/10;

    FACTORIALES

    El factorial se indica con el signo admiracin cerrada< !

    > 45!;

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 5/99

    NMEROS ALEATORIOS

    Podemos obtener nmeros aleatorios con el comando rand.

    Sin argumento, rand() devuelve un nmero entero aleatorio de 12 dgitos:

    > rand();

    Pero podemos elegir el rango entre los que ser elegido el nmero aleatorio:

    > n:=rand(50..60):n();

    Es interesante ver la generacin de nmeros aleatorios (semilla, etc). Teclea:

    > ?randomize

    EL COMODN %

    El cdigo % indica que se va a utilizar el ltimo resultado obtenido, aunque no haya salido en pantalla. Por ejemplo:

    > 3+2:

    > %!;

    El uso de % se puede reiterar hasta tres veces: %% se referir al penltimo resultado y %%% al antepenltimo:

    > 2+2:

    > 5-2:

    > 2:

    > %+%%+%%%;

    VARIABLES

    Una variable puede llamarse como queramos, siempre que no utilicemos como nombre de la variable el de un comando deMAPLE. Tampoco podemos empezar el nombre de la variable con nmeros e interesa que no incluyamo cdigos extraos(acentos, ee, etc). Recordemos, tambin, que MAPLE distingue entre maysculas y minsculas.

    ASIGNACIN DE VARIABLES

    Para asignar valor a una variable se utiliza la combinacin dos puntos e igual :=, por ejemlo:

    > a:=13;

    que devuelve como eco la asignacin a la variable a del valor 13.

    Si no queremos el eco debemos usar el terminados dos puntos.

    > a:=25:

    Ahora no hay eco y, adems a ha cambiado de valor. Esto podemos comprobarlo preguntando el valor de a:

    > a;

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 6/99

    BORRADO DE VARIABLES

    Para borar el valor de una variable basta con igualarla a s misma entre comillas simples:

    > a:='a';

    Si lo que queremos es borrar todas las variables asignadas podemos utilizar el comando restart

    > restart;

    EJEMPLO Y COMANDO PRINT

    Vamos a calcular el capital final que se retira despus de tener 8 aos 3000 euros al 4%:

    > ci := 3000:

    > t := 8:

    > redito := 4:

    > cf:=ci*(1+redito/100)^t;

    Para poner la salida de forma ms legible usaremos los comandos print y el ya conocido evalf:

    > print(`El capital final es de `,evalf(cf));

    El comando print permite poner entre parntesis lo que va a salir por pantalla. Si queremos que sea texto se encerrar entre losacentos agudos ( )^ que aparecen en la tecla a la derecha de la P (junto con [ y )^. Las diferentes partes de la salida se separan concomas. Como nico inconveniente de print decir que estas comas separadoras aparecen en la salida por pantalla.

    CONVERSIN DE TIPOS

    A veces puede ser til convertir una variable de un tipo a otro. Esto se realiza con el comando convert, que recibe dos argumentos:la variable y el tipo final.

    Para ver un listado de los tipos de variables teclea:

    > ?convert

    o, tambin:

    > ?type

    Por ejemplo:

    > convert(117,binary);

    TIPOS DE ESTRUCTURAS

    CONJUNTOS (SET)

    DEFINICIN

    Por extensin

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 7/99

    Un conjunto se define por extensin enumerando sus elementos entre llaves:

    > dias:={lunes,martes,miercoles,jueves,viernes,sabado,domingo};

    Por comprensin

    Se define un conjunto por comprensin dando una ley de formacin. En MAPLE se usa el signo dolar ($):

    > pares:={2*i$i=1..10};

    OPERACIONES

    Las operaciones bsicas con conjuntos son la union, interseccin y diferencia, que en MAPLE se hacen con los operadoresunion, intersect y minus, respectivamente:

    > A:={1,2,3,4,5,6,7,8,9,10} : B:={2,3,5,7,11,13}:

    > A union B;

    > A intersect B;

    > A minus B;

    LISTAS

    Las listas se indican entre corchetes. Se diferencian de los conjuntos en que en la listas se respeta el orden. Al igual que losconjuntos, las listas pueden definirs por extensin y por comprensin (utilizando el signo $)

    > vocales:=[a,e,i,o,u];

    > pares:=[2*i$i=1..10];

    MATRICES

    Para definir una matriz (o un vector) utilizamos el comando array, indicando el nmero de filas y desps el de columnas:

    > A:=array(1..2,1..3);print(A);

    Para llenar el array iremos asignando valores de la siguiente manera:

    > A[1,1]:=1: A[2,1]:=k : A[1,3]:=x^2:print(A);

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 8/99

    En el momento de crear el array pueden asignarse los valores de la siguiente manera:

    > B:=array(1..2,1..2,[[1.1,1.2],[2.1,2.2]]);

    MATRICES ESPECIALES

    Hay ciertas matrices que pueden definirse de forma directa:

    - La matriz nula con el parmetro sparse:

    > N:=array(sparse,1..2,1..3);print(N);

    - La matriz simtrica con el parmetro symmetric. Basta con llenar la mitad de la matriz, MAPLE rellenar automticamente elresto:

    > S:=array(symmetric,1..3,1..3): S[1,1]:=1: S[1,2]:=2: S[1,3]:= 3: S[2,2]:=4: S[2,3]:=5: S[3,3]:=6:print(S);

    - De forma similar se rellena una matriz antisimtrica, con el comando antisymmetric:

    - Una matriz diagonal se indica con el parmetro diagonal (a la que no podemos llamar D, porque es el comando funcinderivada):

    > Dg:=array(diagonal,1..3,1..3);print(Dg);

    - La matriz identidad se indica con el parmetro identity:

    > Id:=array(identity,1..3,1..3);print(Id);

    PROGRAMACIN

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 9/99

    En MAPLE podemos definir procedimientos que realicen ciertas operaciones y llamarlos cuando los necesitemos. Vamos a ver unejemplo sencillo.

    Supongamos que en una cierta hoja de trabajo vamos a necesitar calcular constantemente la velocidad final con la que llega alsuelo un cuerpo que cae, en cada libre, desde h metros.

    Vamos a definir el procedimiento vfinal:

    > vfinal:=proc(h)

    > sqrt(2*9.8*h):

    > end:

    Aqu podemos ver:

    1.- hemos asignado al procedimiento el nombre vfinal, ah el uso de :=

    2.- la palabra clave para definir un procedimiento es proc. Despus se ponen, entre parntesis y separadas por comas lasvariables que mandamos desde el exterior y que sern usadas dentro del procedimiento

    3.- en este caso concrero el procedimiento consta de una sla lnea que calcula el valor buscado

    4.- el procedimiento termina con el comando end:

    Para usar este procedimiento, por ejemplo si la altura fuera 10, haramos:

    > vfinal(10);

    ARGUMENTOS DEL PROCEDIMIENTO

    Podemos comprobar qu tipo de datos llegan al procedimiento declarndolos. De esta forma si llega un dato de un tipo noesperado MAPLE devolver un error.

    > restart:

    > TERNAP:=proc(p::integer,q::integer)

    > local x,y,z:

    > if igcd(p,q)1 then print(`los nmeros deben ser primos entre si`)

    > else x:=2*p*q: y:=abs(p^2-q^2): z:=p^2+q^2: print(x,y,z) fi:

    > end:

    Este procedimiento calcula ternas pitagricas. Recibe como parmetros dos nmero, p y q, que obligamos sean enteros.

    > TERNAP(2,6);

    > TERNAP(2.3,5);

    Error, TERNAP expects its 1st argument, p, to be of type integer, but received 2.3

    Tambin es posible dejar el procedimiento sin entradas, en cuyo caso se dejan los parntesis vacos.

    VARIABLES

    Las variables usadas dentro del procedimiento pueden ser locales o globales.

    Una variable local se declara con el comando local seguido del nombre de las variables separados por comas. Una variable localslo tiene existencia dentro del procedimiento.

    Una variable global se declara con el comando global seguido del nombre de las variables separados por comas. Una variableglobal tiene validez una vez hayamos salido del procedimiento.

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 10/99

    RECURSIVIDAD

    Un procedimiento puede llamar a otro e incluso llamarse a s mismo. En este ltimo caso es necesario tener cuidado para ponerla condicin de salida. Es clsico el ejemplo del factorial de un nmero por su elegancia:

    > FACT:=proc(n::integer)

    > if (n end:

    > FACT(500);

    En el caso de que la recursividad alcance muchos ciclos es posible que se sature le memoria. Para evitar esto pondremos comosegunda lnea option remember; que hace que MAPLE construya una tabla con los valores ya calculados.

    CONDICIONALES

    if then else fi

    La sentencia condicional se inicia con if que probar si se cumple una cierta condicin, por ejemplo a=b. Si esta condicin secumple se ejecutarn los comando escritos despus de then, en caso contrario se ejecutarn los comandos escritos despus deelse (es parte del condicional es opcional). El condicional termina con fi (que es if al revs).

    > DISCRIM1:=proc(a,b,c)

    > if (b^2-4*a*c end:

    > DISCRIM1(1,2,3);

    > DISCRIM2:=proc(a,b,c)

    > local d:

    > d:=b^2-4*a*c:

    > if d else print(`Si tiene soluciones reales`)

    > fi

    > end:

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 11/99

    > DISCRIM2(3,4,1);

    Las condiciones dentro del if se pueden conectar con and, or y not.

    CONDICIONALES ANIDADOS

    Un condicional puede estar dentro de otro, pero en este caso como alternativa al then no se pone else sino elif.

    > DISCRIM3:=proc(a,b,c)

    > local d:

    > d:=b^2-4*a*c:

    > if d elif d=0 then print(`Tiene solucin nica`)

    > else print(`Tiene dos soluciones`)

    > fi

    > end:

    > DISCRIM3(1,2,1);

    BUCLES

    En general la estructura de un bucle es for variab le to tope do sentencias do;

    En este caso la variable contadora empieza en 1 y va aumentando de 1 en 1 hasta alcanzar el tope:

    > for i to 4 do i^2 od;

    Si necesitamos empezar en un valor distindo de 1 utilizaremos from, y si adems, el salto no es de 1 en 1 usaremos by:

    > for j from 10 to 7 by -1 do 2*j od;

    BUCLES SOBRE CONJUNTOS O LISTAS

    Para que el efecto de un bucle se ejecute sobre todos los elementos de una lista o un conjunto utilizamos el comando in:

    > for a in {5,10,15,20} do a^2 od;

    BUCLES CONDICIONALES: while

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 12/99

    Podemos hacer que un bucle se ejecute mientras se cumpla una determinada condicin. Esto se consigue con el comando while:

    > for n while n 50!;

    Para saber el nmero total de dgitos que tiene este nmero utilizamos el comando length

    > length(%);

    Hemos utilizado el comodn % para designar el ltimo resultado obtenido.

    Podamos escribir el resultado hallado con el comando print

    > print(`El nmero de dgitos del factorial de 50 es`,%);

    DIVISIN ENTERA Y ARITMTICA MODULAR

    DIVISIN ENTERA: iquo, irem

    Podemos hallar el cociente y el resto de una divisin de enteros utilizando los comandos iquo (integer quotient), para obtener elcociente, y irem (integer remainder), para obtener el resto. Por ejemplo si dividimos 147 entre 11:

    > print(`147 entre 11 cabe a`,iquo(147,11),`y restan`, irem(147,11));

    ARITMTICA MODULAR: mod

    Se pueden hacer clculos de congruencias en cualquier mdulo utilizando el operador mod:

    > 12 mod 4;

    Por ejemplo, podemos tratar de ver si Z[4] es un Dominio de Integridad (anillo sin divisores de cero) hallando su tabla demultiplicacin: ([0], [1], [2], [3])x([0],[1],[2],[3])

    > A:=[0,1,2,3] ; B:=[0,1,2,3];

    > for i to 4 do for j to 4 do print(A[i],B[j],A[i]*B[j] mod 4) od od;

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 13/99

    Podemos ver como el producto 2*2 = 0 en Z[4], luego Z[4] no es un Dominio de Integridad

    NMEROS PRIMOS

    MAPLE permite utilizar nmeros primos con gran facilidad.

    Podemos saber si un nmero es primo con el comando booleano isprime:

    > isprime(13453);

    Podemos obtener los primos anterior y siguiente de un nmero dado con los comandos prevprime y nextprime:

    > prevprime(13453),nextprime(13453);

    Tambin podemos obtener el i-simo primo de la tabla de primos con el comando ithprime:

    > ithprime(34);

    En el paquete numtheory hay muchos otros comandos relacionados con primos.

    FACTORIZACIN, DIVISORES, MCD Y MCM

    FACTORIZACIN ENTERA

    Para factorizar un entero en producto de primos se utiliza el comando ifactor

    > ifactor(2732730);

    DIVISORES

    MAPLE permita hallar todos los divisores de un nmero entero, para lo cual hay que cargar el paquete numtheory

    > with(numtheory):

    > divisors(36);

    Warning, new definition for B

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 14/99

    Warning, new definition for order

    Fjate que han salido descolocados...

    Tambin podemos saber cuntos divisores son en total con el comando tau del paquete numtheory

    > print(`36 tiene`,tau(36),`divisores`);

    Un consejo: si no se va a volver a utilizar los comandos de un paquete conviene descargarlo de la memoria:

    > restart:

    MCD Y MCM

    Tambin podemos hallar el Mximo Comn Divisor y el mnimo comn mltiplo:

    Para hallar el MCD se utiliza el comando igcd (integer great common divisor) y para hallar el mcm se utiliza el comando ilcm(integer l east common multiple). Podemos mejorar la salida con el comando print

    > print(`MCD(126,140)=`,igcd(126,140));

    > print(`mcm(126,140)=`,ilcm(126,140));

    MCD: Algoritmo de Euclides

    El Algoritmo de Eucides permite calcular el MCD de dos nmeros a y b utilizando un procedimiento recursivo, que podemosprogramar.

    El procedimiento se basa en el siguiente LEMA: si a, b, c y r son enteros no nulos tales que a=bc+r, entonces elMCD(a,b)=MCD(b,r).

    Este LEMA permite hacer un encadenamiento hasta encontrar r=0, en cuyo caso el MCD ser b.

    El procedimiento es el siguiente:

    ALGORITMO DE EUCLIDES PARA CALCULAR EL MCD DE DOS NMEROS

    > MCD:=proc(a::integer,b::integer)

    > local r:

    > if (a r:=irem(a,b):

    > if r=0 then RETURN(b)

    > else MCD(b,r)

    > fi

    > end:

    Comentarios sobre el procedimiento:

    1.- El procedimiento recibe dos variables, a y b, que se pide sean nmeros enteros

    2.- Como se va a realizar la divisin "a entre b" necesitamos que a>=b

    3.- Si a

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 15/99

    5.- Si el resto r es 0, se ha terminado y el MCD ser el valor de b en ese momento

    6.- Si r no es 0 volvemos a empezar tomando b en lugar de a y r en lugar de b

    Por ejemplo, el MDC(22, 30) es:

    > MCD(22,30);

    Si quieres quitar MCD de la memoria de MAPLE ejecuta el comando restart

    EL LEMA DE BEZOUT: propiedad lineal del MCD

    El lema de Bezout aplicado a los nmeros enteros establece la Propiedad lineal del MCD: si a y b son dos enteros no nulos,existen dos enteros u y v tales que: ua + vb = MCD(a,b)

    Con MAPLE podemos hallar u y v utilizando el comando igcdex

    Por elemplo obtener u y v para a=30 y b=45: 30u + 45v = MCD(30,45)

    > igcdex(30,45,'u','v'):

    u y v quedan en la memoria:

    > u,v;

    NMEROS REALES

    Ya sabemos que los nmeros reales resultan de la unin de los racionales e irracionales.

    NMEROS RACIONALES

    En el caso de operaciones con quebrados se devuelve el resultado ms simplificado.

    > 36/30;

    Si queremos que el quebrado se opere hasta el final podemos hacer dos cosas.

    1.- Poner alguno de los nmeros con coma decimal:

    > 36/30.0;

    2.- Utilizar el comando para evaluar en coma flotante: evalf

    > evalf(36/30);

    NMEROS IRRACIONALES

    RADICALES

    En general, si p no es potencia n-sima, entonces la raz n-sima de p es irracional.

    Para obtener la raz cuadrada de un nmero utilizamos el comando sqrt (square root). Para que se evale la raz utilizamos evalf:

    > sqrt(13) = evalf(sqrt(13));

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 16/99

    Caso de necesitar nicamente la parte entera de la raz utilizaremos isqrt (integer square root ):

    > isqrt(13);

    Para races de ndice superior utilizaremos la expresin potencial (elevando al nmero racional), por ejemplo, la raz quinta de 13ser:

    > 13^(1/5) = evalf(13^(1/5));

    SIMPLIFICACIN DE RADICALES

    Como con otras expresiones, los radicales se simplifican con el comando simplify:

    > 32^(3/15) = simplify(32^(3/15));

    RACIONALIZACIN DE DENOMINADORES

    Utilizaremos el comando rationalize:

    > (a-1)/(sqrt(a)-1) = rationalize((a-1)/(sqrt(a)-1));

    > 1/(sqrt(x)-sqrt(y))+1/(sqrt(x)+sqrt(y))=rationalize(1/(sqrt(x) -sqrt(y))+1/(sqrt(x)+sqrt(y)));

    NMEROS ESPECIALES

    EL NMERO PI

    En MAPLE se escribe Pi y podemos obtenerlo con la precisin que deseemos con evalf, por ejemplo con 50 decimales:

    > Pi = evalf(Pi,50);

    EL NMERO e

    El nmero e es, posiblemente, el nmero ms importante en matemticas superiores. Aparece en muchos procesos decrecimiento, en la desintegracin radiactiva, en la frmula de la catenaria, etc. Podemos obtenerlo a travs del siguiente lmite:

    > Limit((1+1/n)^n,n=infinity) = evalf(limit((1+1/n)^n,n=infinity));

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 17/99

    En MAPLE se escribe con e minscula y podemos obtenerlo con exp(1) y la precisin que deseemos:

    > e = evalf(exp(1),25);

    PARTES DE UN NMERO REAL

    Podemos obtener el signo de un nmero con signum: obtendremos 1, 0 -1:

    > signum(-4.13);

    El valor absoluto de un nmero se obtiene con abs:

    > abs(-0.34);

    La parte entera de un nmero se obtiene con trunc y la parte decimal con frac:

    > trunc(5.78);frac(5.78);

    Para redondear al entero ms prximo utilizamos round:

    > round(5.78);

    Para conseguir todos los decimales que queramos damos, como segundo argumento de evalf, el nmero de decimalesrequerido.

    > evalf(1/7,50);

    LOGARITMOS Y EXPONENCIALES

    MAPLE calcula de forma directa los logaritmos neperianos con ln() log(). Para que se evalue hay que utilizar evalf:

    > ln(10) = evalf(ln(10));

    > Log(10) = evalf(log(10));

    Para calcular logaritmos en otra base utilizamos el comando log[base](nmero) :

    > log[10](10);

    El nmero e se obtiene con exp:

    > exp(3) = evalf(exp(3));

    Podemos utilizar los comandos expand o simplify para desarrollar expresiones con logaritmos y potencias:

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 18/99

    > simplify(log(3*a/5*b^2));

    LOGARITMO NEPERIANO COMO INTEGRAL

    El logaritmo neperiano, o natural, de un nmero real x positivo se define mediante la integral

    > L:=x->Int(1/t,t=1..x);

    es decir, el logaritmo neperiano de x se puede interpretar como el rea bajo la curva 1/t entre 1 y x.

    > L(1)=evalf(L(1));

    > L(2)=evalf(L(2));Ln(2)=evalf(ln(2));

    > with(student):middlebox(1/t,t=1..2,100);evalf(middlesum(1/t, t=1..2));restart:

    TRIGONOMETRA

    GRADOS Y RADIANES

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 19/99

    MAPLE permite convertir de grados a radianes con el comando convert, utilizando como segundo argumento degrees o radians:

    > convert(2*Pi/3,degrees);

    > convert(210*degrees,radians);

    LNEAS TRIGONOMTRICAS

    Las lneas trigonomtricas en MAPLE se corresponden con los comandos: sin, cos y tan, que reciben como argumento el nguloen radianes:

    > sin(3*Pi/2);cos(Pi/4);tan(Pi/3);

    Las funciones inversas son: arcsin, arccos y arctan:

    > arccos(1/2);

    MAPLE conoce todas las relaciones entre lneas trigonomtricas. Podemos utilizar los comandos simplify y expand paradesarrollar una expresin trigonomtrica:

    > sin(alpha-beta) = expand(sin(alpha-beta));

    SENO Y COSENO DE LA SUMA Y LA DIFERENCIA

    Utilizando el producto escalar de dos vectores y el clculo del ngulo entre ellos podemos deducir las frmulas del seno y cosenode la suma y la diferencia de ngulos.

    Vamos a pintar un esquema de los vectores u y v, cuyo mdulo es la unidad. Los ngulos que forman u y v con el eje X son a y b,respectivamente, por esto el nguo entre u y v es a-b. Para pintar todo esto utilizamos los comandos plot, textplot, polarplot ydisplay. Para alguno de ellos necesitamos cargar el paquete plots.

    > with(plots):

    > c:=polarplot(1,theta=0..Pi/2,scaling=CONSTRAINED,color=green):

    > u:=plot([[0,0],[cos(Pi/3),sin(Pi/3)]],x=0..1):

    > v:=plot([[0,0],[cos(Pi/6),sin(Pi/6)]],x=0..1):

    > angu:=polarplot(0.2,theta=0..Pi/3,color=blue):

    > angv:=polarplot(0.4,theta=0..Pi/6,color=blue):

    > anguv:=polarplot(0.3,theta=Pi/6..Pi/3,color=blue):

    > t:=textplot([[cos(Pi/3),sin(Pi/3),'u(cos(a),sen(a))'],[cos(Pi/6), sin(Pi/6),'v(cos(b),sin(b))'],[0.22,0.05,'a'],[0.42,0.05,'b'],[0.22,0.22,'a-b']],align={ABOVE, RIGHT}):

    > display(c,u,v,angu,angv,anguv,t);restart:

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 20/99

    Vamos a calcular la expresin del coseno del ngulo (a-b) entre los vectores u y v, para ello haremos uso del comando angle delpaquete linalg. Este comando devuelve el arccos el ngulo. Por esto evaluamos su coseno y le pedimos a MAPLE que losimplifique:

    > with(linalg):

    > u:=vector([cos(a),sin(a)]);v:=vector([cos(b),sin(b)]);

    > cos(a-b):=simplify(cos(angle(u,v)));

    Warning, new definition for norm

    Warning, new definition for trace

    Ahora podemos calcular el seno de la resta y coseno y seno de la suma sustituyento el ngulo b por determinados valores ypidiendo a MAPLE que simplifique la expresin:

    > cos(a+b):=simplify(subs(b=-b,cos(a-b)));

    > sin(a-b):=simplify(subs(b=b+Pi/2,cos(a-b)));

    > sin(a+b):=simplify(subs(b=-b,sin(a-b)));

    De la misma manera podemos hallar el seno y coseno del ngulo doble:

    > sin(2*a):=simplify(subs(b=a,sin(a+b)));

    > cos(2*a):=simplify(subs(b=a,cos(a+b)));restart:

    TRIGONOMETRA HIPERBLICA

    Las funciones hiperblicas en MAPLE son: sinh, cosh, tanh y sus inversas arcsinh, arccosh y arctanh.

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 21/99

    MAPLE conoce las diferentes relaciones entre las lneas hiperblicas.

    >cosh(alpha)^2-sinh(alpha)^2 = simplify(cosh(alpha)^2-sinh(alpha)^2);

    NMEROS COMPLEJOS

    LA UNIDAD IMAGINARIA I

    En MAPLE la unidad imaginaria (raz cuadrada de -1) se escribe con I mayscula. Sus potencias son:

    > for i from 0 to 3 do print(`i elevado a`,i,`da`,I^i) od;

    FORMAS DE REPRESENTAR UN COMPLEJO

    Ya sabemos que los elementos del cuerpo de los nmeros complejos, isomorfo con RxR, se pueden escribir en diferenesnotaciones (binmica, polar, exponencial, trigonomtrica).

    FORMA BINMICA

    En forma binmica el nmero complejo se escribe:

    > z1 := 3-2*I;

    Para obtener su forma polar utilizamos el comando convert:

    > z2:=convert(z1,polar);

    FORMA POLAR (MDULO-ARGUMENTO)

    Para obtener el mdulo y el argumento de un complejo se utilizan los comandos abs y argument, respectivamente:

    > z:=3-2*I; abs(z); argument(z);

    Para escribir directamente un complejo en forma polar hacemos:

    > z:=polar(4,Pi/3);

    Si lo que queremos es pasar un complejo en forma polar a forma binmica usamos evalc (evalue complex):

    > evalc(z);

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 22/99

    FORMA EXPONENCIAL-TRIGONOMTRICA

    Utilizando la Frmula de Euler (que podemos obtener utilizando series):

    > exp(ix) = cos(x) + I*sin(x);

    Podemos relacionar la forma trigonomtrica de un complejo Z con su forma exponencial:

    > r*(cos(theta)+I*sin(theta)) = r*exp(I*theta);

    Para obtener la forma exponencial y trigonomtrica de un complejo utilizaremos exp y evalc, respectivamente.

    > z:=3-2*I;

    > exp(z) = evalc(exp(z));

    Para convertir un complejo a forma exponencial o trigonomtrica utilizamos el comando convert:

    > convert(3*(cos(2)+I*sin(2)),exp);

    > convert(5*exp(I*4),trig);

    EXPRESIONES RootOf

    El comando RootOf pemite definir nmeros como races de un polinomio. Si deseamos conocer todos los valores debemos usarel comando allvalues:

    > a:=RootOf(x^5+9*x^3-4*x^4-14*x^2+14*x-12);

    > allvalues(a);

    OPERACIONES CON COMPLEJOS

    SUMA, RESTA, PRODUCTO, COCIENTE, POTENCIA, INVERSO

    Utilizando la notacin binmica se pueden hacer todos estos clculos con complejos (utilizando I como unidad imaginaria).

    > z1:=3-2*I:z2:=-1+3*I:

    > 2*z1-3*z2;

    > (z1*z2)^2;

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 23/99

    > z2/z1;

    El inverso podemos obtener elevando a -1:

    > z1^(-1);

    RACES DE UN COMPLEJO

    Para hallar todas las races de un complejo deberemos obtener todos los valores (allvalues ) de una expresin RootOf. Para hallartodas las races cbicas de I planteamos la ecuacin:

    > z:=(-1)^(1/3) ; ec:=convert(z,'RootOf');

    > allvalues(ec);

    CONJUGADO

    Podemos obtener la parte real y la parte imaginaria de un complejo con Re e Im, respectivamente:

    > z:=3-2*I;Re(z),Im(z);

    El conjugado lo obtendremos con el comando conjugate:

    > z:=3-2*I;conjugate(z);

    LOGARITMO DE UN COMPLEJO

    Para tomar el logaritmo de un complejo utilizaremos ste en forma exponencial:

    > z:=r*exp(I*theta);

    Por lo tanto el logaritmo neperiano (principal) de z ser:

    > ln(z)=ln(r)+I*theta;

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 24/99

    As, todemos disear un procedimiento que calcule el logaritmo neperiano de un complejo. Lo llamaremos lnc:

    > lnc:=proc(z)

    > local r,a:

    > r:=abs(z):

    > a:=argument(z):

    > ln(r)+I*a

    > end:

    > lnc(4-2*I);

    > lnc(I);

    De todas formas MAPLE hace este tipo de clculos con evalc:

    > evalc(ln(4-2*I));

    ELEVAR UN COMPLEJO A OTRO COMPLEJO

    Para elevar un complejo a otro utilizamos las funciones exponencial y logaritmo neperiano:

    > Z^W = exp(W*ln(Z));

    Por ejemplo para calcular i i^ (la unidad imaginaria elevada a s misma) haremos:

    > I^I = exp(I*Ln(I));

    Calcularemos primero LN(I) y despus lo multiplicaremos por I:

    > I*Ln(I) = I*ln(I);

    Por lo tanto:

    > I^I = exp(-Pi/2);

    Claro que no hace falta tanto proceso: MAPLE realiza este tipo de operaciones con evalc:

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 25/99

    > evalc(I^I);

    COMBINATORIA

    Los comandos relativos a combinatoria estn en el paquete combinat.

    VARIACIONES

    Para calcular el nmero de variaciones sin repeticin de m elementos tomados de n en n utilizamos el comando numbperm delpaquete combinat. Como primer argumento damos el nmero de elementos totales y como segundo argumento el tamao de

    cada grupo.

    > with(combinat):

    > V(5,2) = numbperm(5,2);

    > restart:

    Warning, new definition for Chi

    MAPLE tambin permite listar las variaciones utilizando el comando permute:

    > with(combinat):

    > permute(5,2);

    > restart:

    Warning, new definition for Chi

    Para calcular las variaciones con repeticin de m elementos tomados de n en n utilizaremos la frmula terica: m^n VR(3,14) = 3^14;

    PERMUTACIONES

    El comando de MAPLE que permite calcular el nmero de permutaciones sin repeticin de m elementos es numbperm delpaquete combinat. En este caso nicamente se da un argumento: m

    > with(combinat):

    > P(5) = numbperm(5);

    > restart:

    Warning, new definition for Chi

    En el caso de ser pocos elementos MAPLE permite listar las permutaciones posibles con el comando permute:

    > with(combinat):permute(4);rstart:

    Warning, new definition for Chi

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 26/99

    > with(combinat):permute([as,reina,rey]);restart:

    Para obtener las permutaciones con repeticin podemos recurrir a la frmula terica con el uso de factoriales o al comando

    multinomial del paquete combinat. Por ejemplo si queremos hallar las permutaciones con repeticin de 10 letras:a,a,a,b,b,c,c,c,c,d haremos:

    > with(combinat):multinomial(10,3,2,4,1);restart:

    Warning, new definition for Chi

    COMBINACIONES

    Para hallar el nmero de combinaciones sin repeticin de m elementos tomados de n en n podemos utilizar el comando

    numbcomb o el comando binomial, que devuelve el nmero combinatorio:

    > with(combinat):C(5,2)=numbcomb(5,2);C(5,2)=binomial(5,2);restart:

    Warning, new definition for Chi

    Si lo que queremos es listar las combinaciones utilizaremos el comando choose, dando como primer parmetro la lista, o el

    conjunto, de elementos y como segundo parmetro el tamao de las agrupaciones:

    > with(combinat):

    > choose({a,b,c,d,e},3);

    > restart:

    Warning, new definition for Chi

    Para calcular las combinaciones con repeticin de m elementos tomados de n en n, recurrimos a la frmula terica, que es el

    nmero combinatorio de m+n-1 sobre n. Podramos escribir un procedimiento para calcular las combinaciones con repeticin,ser CR:

    > CR:=proc(m::integer,n::integer)

    > local a:

    > with(combinat):a:=binomial(m+n-1,n);restart:

    > a

    > end:

    > CR(4,3);

    Warning, new definition for Chi

    POLINOMIOS

    DEFINICIN Y GRADO

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 27/99

    Para definir un polinomio basta con asignarlo a una variable:

    > q:=3*x^4-2*x*y^2+2*x*y-1;

    Incluso podemos pedir a MAPLE que genere un polinomio aleatoriamente con randpoly, basta con decirle las variables y el

    nmero de monomios que deseamos, por ejemplo, un polinomio de 4 monomios en a, b y c:

    > p:=randpoly([a,b,c],terms=4);

    Puedes ver ms informacin de randpoly en la ayuda:

    > ?randpoly

    Para ver el grado del polinomio q, se utiliza degree:

    > degree(q);

    Si queremos ver el grado del polinomio p podemos hacerlo globalmente o por cada una de sus variables:

    > degree(p),degree(p,a),degree(p,b),degree(p,c);

    Podemos pedir a MAPLE que ordene un polinomio en el grado de la variable que deseemos, por ejemplo:

    > sort(q,y);

    OPERACIONES BSICAS

    SUMA, RESTA Y MULTIPLICACIN

    Basta con usar los operadores habituales. Por ejemplo, sea:

    > p:=3*x^4-4*x^2+3*x-1 : q:=3*x^2-2*x+3:

    > p+q,p-q;

    > 2*p-5*q;

    Sin embargo al hacer la mltiplicacin nicamente la dejar indicada siendo necesario expandirla:

    > p*q;

    > expand(p*q);

    POTENCIA DE POLINOMIOS

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 28/99

    Con la potencia ocurre igual que con el producto de polinomios, MAPLE se limita a dejarla indicada siendo necesario pedirle que la

    expand a:

    > (2*x-3*y)^4,expand((2*x-3*y)^4);

    BINOMIO DE NEWTON

    Utilizando MAPLE podemos desarrollar diferentes potencias del binomio (a+b) para tratar de obtener la frmula de Newton:

    > (a+b)^0;(a+b)^1;expand((a+b)^2);expand((a+b)^3);expand((a+b)^4);

    Si observamos con detenimiento veremos que la frmula para obtener la potencia (a+b)^n es:

    > (a+b)^n,Sum(binomial(n,i)*a^(n-i)*b^i,i=0..n);

    Donde binomial(n.i) es un comando de MAPLE que halla el nmero combinatorio "n sobre i". Por ejemplo para n=5 obtendremos elbinomio de quinto grado:

    > n:=5:sum(binomial(n,i)*a^(n-i)*b^i,i=0..n);

    Un detalle de MAPLE: si usas sum, en minscula, se calcula la suma; pero si usas Sum, en mayscula, nicamente se pone lafrmula (es lo que se llama expresin inerte).

    FACTOR COMN

    Para extraer factor comn se utiliza el comando collect, indicando sobre qu polinomio actuar y qu queremos sacar factor comn:

    > p:=3*x^2+4*y^2-5*x^2*y-4*x^3*y^2;

    > collect(p,x);

    DIVISIN DE POLINOMIOS

    Si realizamos la divisin de polinomios utilizando el operador / no obtendremos los resultados deseados, por ejemplo sean los

    polinomios p y q:

    > p:=6*x^6-7*x^5+4*x^4-10*x^3-x^2+5*x: q:=2*x^2-x:

    Vamos a realizar la operacion p/q e incluso a pedir que la expand a:

    > p/q;expand(p/q);

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 29/99

    Como podemos ver no hace la divisin entera de polinomios, para ello tenemos que usar los comandos quo y rem que nosdevolvern el cociente y el resto de la divisin, respectivamente. Como parmetros hay que dar el polinomio dividendo, el polinomio

    divisor y la variable respecto de la que dividimos:

    > quo(p,q,x);rem(p,q,x);

    FRACCIONES ALGEBRAICAS

    Las fracciones algebraicas son aquellas cuyo numerador y denominador son polinomios. Una de las operaciones bsicas que

    podemos hacer con ellas es simplificarlas, si es posible. Para ello utilizamos el comando simplify:

    > p:=x^3-x^2-x+1 : q:=x^3+x^2-x-1:p/q;

    > simplify(p/q);

    Fracciones Simples

    MAPLE es capaz de descomponer fracciones algebraica complejas en fracciones ms simples. Esto puede ser muy til en el

    clculo de ciertas integrales. Para hacer esto utlizamos en comando convert, que recibe como primer parmetro la fraccin asimplificar, como segundo parmetro la palabra clave parfrac y como ltimo parmetro la variable:

    > p:=(4*x-2)/(x^3+3*x^2-x-3);

    > convert(p,parfrac,x);

    FACTORIZACIN DE POLINOMIOS, MCD y MCM

    Para factorizar un polinomio utilizamos el comando factor:

    > factor(x^6-9*x^5+12*x^4+76*x^3-144*x^2-192*x+256);

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 30/99

    > factor(a^3-a^2*b-a*b^2+b^3);

    Tambin podemos hallar el MCD y MCM de dos polinomios con los comandos gcd y lcm, respectivamente:

    > p:=x^4-x^3-3*x^2+x+2 : q:=x^5-5*x^4+6*x^3+2*x^2-7*x+3:

    > gcd(p,q);

    > lcm(p,q);

    FACTORIZACIONES EN Z[i]

    Tambin podemos factorizar en los anillos Z[i]. En MAPLE la unidad imaginaria se escribe I, desplegando el men

    View>Palettes>Symbol Palette: I es el ltimo smbolo que aperece en la ventana.

    Por ejemplo, podemos factorizar x^ 2+4 en Z[i]:

    > factor(x^2+4,I);

    Mientras que en R, x^ 2+4 no tiene factorizacin posible.

    > factor(x^2+4);

    DESARROLLOS DE TAYLOR

    Los polinomios de Taylor se utilizan para aproximar funciones en un determinado punto. Para ello es necesario que la funcintenga derivada hasta el orden n (n ser el grado del polinomio de Taylor) en dicho punto.

    La expresin del polinomio de Taylor en x=a es:

    > P(x)=Sum(D^i*[f(a)]/i!*(x-a)^i,i=0..n);

    Donde se calcula la derivada i-sima de f en x=a, hasta i=n.

    Este clculo lo realiza MAPLE automticamente con el comando taylor. Por ejemplo, para aproximar la funcin sen(x) en x=0, conun polinmio de Taylor de grado 8 se hara:

    > taylor(sin(x),x=0,8);

    En este polinomio el ltimo trmino expresa el error cometido, es lo que se denomina resto de Taylor.

    Podemos pintar la funcin seno y el polinomio hallado en el entorno de x=0 para obsevar su coincidencia. Pero, para esto, esnecesario convertir en polinomio la expresin de Taylor hallada. Esto se hace con el comando convert:

    > p:=convert(taylor(sin(x),x=0,8),polynom);

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 31/99

    Para pintar las funciones utilizamos el comando plot:

    > plot({sin(x),p},x=-4..4,y=-1..1);

    ECUACIONES E INECUACIONES. SISTEMAS

    ECUACIONES

    El comando para resolver ecuaciones es solve poniendo entre parntesis dos parmetros: la ecuacin a resolver y la variable que

    queremos hallar. Por ejemplo:

    > solve(3*x-1=13,x);

    Si lo que queremos es hallar soluciones reales aproximadas, el comando es fsolve (float solve):

    > fsolve(3*x-1=13,x);

    MAPLE tambin encuentra soluciones imaginarias (hay que recordar eu I es la unidad imaginaria):

    > solve(x^2-2*x+2);

    ECUACIONES NO ALGEBRAICAS

    MAPLE puede resolver diferentes tipos de ecuaciones no algebraicas (recordemos que las ecuaciones algebraicas son aquellasque se pueden resolver efectuando operaciones algebracias: suma, resta, multiplicacin y divisin).

    ECUACIONES CON RADICALES

    En el caso de races cuadradas, estas ecuaciones se pueden convertir en algebraicas elevando al cuadrado ambos miembros las

    veces que sea necesario. De todas formas MAPLE resuelve estas ecuaciones sin incluir soluciones falsas (lo que si ocurre alconvertirlas en algebraicas). El comando sqrt indica raz cuadrada. Por ejemplo:

    > solve(sqrt(2*x-3)+1=x,x);

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 32/99

    ECUACIONES TRIGONOMTRICAS

    MAPLE resuelve las ecuaciones trigonomtricas dando la solucin para el primer periodo. Hay que recordar que las funciones

    trigonomtricas en MAPLE se escriben: sin(), cos() y tan() para el seno, coseno y tangente, respectivamente. Por ejemplo:

    > solve(sin(x)+cos(x)=1,x);

    ECUACIONES EXPONENCIALES

    MAPLE resuelve ecuaciones exponenciales recurriendo a logaritmos neperianos.

    > solve(2^x=3);

    Si queremos la solucin real aproximada debemos usar el comando fsolve:

    > fsolve(2^x=3);

    Podemos incluso plantear ecuaciones "curiosas", como: qu nmero elevado a s mismo da 2?

    > fsolve(x^x=2);

    ECUACIONES CON VALORES ABSOLUTOS

    MAPLE utiliza el comando abs para indicar valor absoluto. Podemos resolver ecuaciones de este tipo con el comando solve:

    > abs(x+1)=3;solve(abs(x+1)=3);

    ECUACIONES RECURRENTES

    Vamos a resolver el siguiente problema: "Un mono tiene una bolsa de cacahuetes. Cada maana su dueo le aade 100cacahuetes. Luego, durante el da el mono se come la mitad de los cacahuetes que hay en la bolsa. Una noche, despus de varios

    aos haciendo esto, el dueo cont los cacahuetes cuntos cacahuetes habr en la bolsa?"

    Planteamos la siguiente ecuacin recurrente: la noche del da k+1 en la bolsa habr x(k+1)=(100+x(k))/2 porque al iniciar el da

    haba x(k) cacahuetes, a los que el dueo aade 100, pero luego el mono se come la mitad...

    Cmo resolvemos esta ecuacin recurrente? Utilizamos el comando rsolve, en el que los argumentos son la propia ecuacinrecurrente y la funcin incgnita:

    > rsolve(x(k+1)=50+x(k)/2,x);

    Como pasan muchos aos tomas el lmite de la funcin obtenida cuando k tiende a infinito.

    > limit(%,k=infinity);

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 33/99

    Esto quiere decir que habr 100 cacahuetes en la bolsa.

    Para informate mejor del comando rsolve teclea:

    > ?rsolve

    ECUACIONES DIOFNTICAS

    Las ecuaciones diofnticas son aquellas cuyas soluciones son nmeros enteros.

    Por ejemplo, si deseamos llevar 430 euros en billetes de 50 y 20 euros.. 1) es posible? 2) en caso de ser posible cuntosbilletes de cada hay que coger?

    > isolve(50*x+20*y=430);

    Obtenemos un conjunto de soluciones sustituyendo _NI por nmeros enteros, por ejemplo:

    > for i from -5 to 5 do print(`x=`,1+2*i,`y=`,19-5*i) od;

    donde nos quedaramos con las parejas de soluciones positivas,por ejemplo (1,19), es decir 1 billete de 50 y 19 de 20, etc.

    ECUACIONES DIFERENCIALES

    En ingeniera y el ciencias hay muchos problemas que, cuando se formulan en trminos matemticos, requieren la determinacinde una funcin que debe satisfacer una ecuacin que contiene derivadas de la propia funcin desconocida. Estas ecuaciones se

    denominan ecuaciones diferenciales.

    Por ejemplo, para determinar el movimiento de una partcula sobre la que acta la fuerza de la gravedad, es necesario determinar

    una funcin u(t) que satisfaga la siguiente ecuacin:

    > ec1:=m*diff(u(t),t$2)=-m*g;

    El comando de MAPLE para resolver ecuaciones diferenciales es dsolve, que recive dos parmetros: la ecuacin diferencial y elnombre de la funcin incgnita:

    > dsolve(ec1,u(t));

    Como podemos ver, aparecen _C1 y _C2, que son constantes que se pueden determinar si se conocen las condiciones iniciales.

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 34/99

    El paquete DEtools contiene comandos sobre ecuaciones diferenciales. Interesa echarle un vistazo:

    > ?DEtools

    Tambin es interesante que veamos la explicacin del comando que resuelve ecuaciones diferenciales:

    > ?dsolve

    El comando dsolve admite, como tercer argumento, que se le inidique el mtodo de resolucin de la ecuacin diferencial:

    - poniendo method=laplace, utilizar la transformada de Laplace

    - poniendo type=series, se obtendr una serie como solucin aproximada

    - poniendo type=numeric, se obtendr una solucin numrica utilizando un Runge-Kutta de orden 4-5.

    CONDICIONES INICIALES

    Cuando conocemos las condiciones iniciales podemos hallar una solucin particular de la ecuacin diferencial. Las condicionesiniciales se incluyen en el comando dsolve haciendo un conjunto cuyo primer elemendo es la ecuacin a resolver, y despus las

    condiciones iniciales separadas por comas.

    Encontrar la solucin de y'=y^ 2 sabiendo que y(0)=1:

    > ec:=diff(y(x),x)=y(x)^2;

    > dsolve({ec,y(0)=1},y(x));

    Podemos comprobar que la solucin obtenida cumple la ecuacin planteada. Para ello debemos coger la parte derecha (comandorhs, right side) de la ltima salida (comodn %) y sustituirla en la ecuacin:

    > y:=unapply(rhs(%),x);

    > ec;

    Adems hay que verificar que se cumple la condicin inicial y(0)=1:

    > y(0);

    Otro ejemplo, una ecuacin en la que es posible hacer separacin de variables:

    > restart:

    > ec:=diff(y(x),x)=(3*x^2+4*x+2)/(2*(y(x)-1));

    > dsolve({ec,y(0)=1},y(x));

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 35/99

    ECUACIONES DIFERENCIALES CON DERIVADAS PARCIALES

    MAPLE puede resolver ecuaciones diferenciales en derivadas parciales utilizando el comando pdsolve, que recibe dos

    parmetros: la ecuacin diferencial y la funcin incgnita.

    Vamos a resolver la siguiente ecuacin en derivadas parciales:

    > restart:

    > ec:=alpha^2*diff(u(x,t),x)=diff(u(x,t),t);

    > sol:=pdsolve(ec,u(x,t));

    La solucin aparece expresada como una funcin arbitraria _F1 que podemos elegir nosotros. Vamos a tomar como _F1 la funcin

    seno:

    > subs(_F1=sin,%);

    Ahora vamos a sustituirla en la ecuacin y a simplificar la expresin para ver que, en efecto, se cumple la ecuacin:

    > simplify(subs(u(x,t)=rhs(%),ec));

    INECUACIONES

    Se resuelven utilizando el comando solve. En la solucin se indica si el intervalo es abierto con Open.

    > solve(x-1>5);

    > solve(x^2+2*x-3>=0);

    Puede ocurrir que no tengan solucin:

    > solve(x^2-2*x+3

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 36/99

    > solve({y-3*x=-5,x^2+y=-1},{x,y});

    En el caso de ser sistema compatible indeterminado, la solucin se expresa con parmetros:

    > solve({3*x-2*y+z=4,x+y-3*z=2},{x,y,z});

    En el caso de que el sistema sea incompatible, MAPLE no devuelve nada:

    > solve({x-y=3,2*y-2*x=3},{x,y});

    SISTEMAS LINEALES: TEOREMA DE ROUCHE-FROBENIUS

    Segn el Teorema de Rouche-Frobenius un sistema es compatible si el rango de la matriz del sistema es igual que el rango de lamatriz ampliada. Si adems es igual al nmero de incgnitas, el sistema ser compatible determinado.

    Veamos un ejemplo con el sistema:

    > ec1:=x+2*y+z=9:

    > ec2:=x-y-z=-10:

    > ec3:=2*x-y+z=5:

    En primer lugar tenemos que generar la matriz (matrix) del sistema (S) y la matriz ampliada (A). Esto se hace con el comandogenmatrix. Para ello necesitamos cargar el paquete linalg.

    > with(linalg):

    > S:=genmatrix([ec1,ec2,ec3],[x,y,z]):

    > A:=genmatrix([ec1,ec2,ec3],[x,y,z],flag):

    > rank(S);rank(A);

    Warning, new definition for norm

    Warning, new definition for trace

    y como el nmero de incgnitas es 3, el sistema es compatible determinado. Ahora descargamos el paquete para liberar

    memoria.

    > restart:

    Podemos escribir un procedimiento que utilice el teorema de Rouche-Frobenius para discutir un sistema lineal y dar su solucin:

    > rouchef:=proc(ecuaciones::list,variables::list)

    > local S,A,n:

    > with(linalg):

    > S:=genmatrix(ecuaciones,variables):

    > A:=genmatrix(ecuaciones,variables,flag):

    > n := nops(variables);

    > if rank(S)rank(A) then print(`Sistema incompatible`)

    > elif rank(S)=n then print(`Sistema compatible determinado`)

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 37/99

    > else print(`Sistema compatible indeterminado`)

    > fi:

    > restart:

    > S:=convert(ecuaciones,set):A:=convert(variables,set);

    > solve(S,A):

    > end:

    Para utilizar el procedimiento definido haremos:

    > rouchef([x+2*y+z=9,x-y-z=-10,2*x-y+z=5],[x,y,z]);

    Warning, new definition for norm

    Warning, new definition for trace

    EIGENVALORES Y EIGENFUNCIONES

    La ecuacin matricial formada a partir de un sistema de ecuaciones: Ax = y puede imaginarse como una transformacin lineal deun vector dado x en un nuevo vector y.

    En este tipo de transformaciones los vectores que se transforman en mltiplos de s mismos tienen mltiples aplicaciones (porejemplo, en el problema de encontrar los ejes principales de los esfuerzos de un cuerpo elstico, o en el caso de encontrar los

    modos de vibracin libre en un sistema conservativo con un nmero finto de grados de libertad).

    Para encontrar estos vectores haremos:

    > y=lambda*x;

    siendo lamda un factor escalar. Por lo tanto buscaremos soluciones de la ecuacin:

    > A*x=lambda*x;

    > with(linalg):Id:=diag(1,1,1):(A-lambda*Id)*x=0;

    Donde Id es la matriz identidad.

    Esta ltima ecuacin slo tiene soluciones diferentes (del caso trivial x=0) si el determinande de A-lamdaId es nulo:

    > Det(A-lambda*Id)=0;restart:

    Los valores de lambda que satisfacen esta ecuacin se denominan eigenvalores o valores propios de la matriz A y las soluciones

    que se obtienen utilizando estos eigenvalores en la ecuacin Ax=lambday se denominan eigenvectores, o vectores propios,asociados a ese eigenvalor.

    Vamos a encontrar los eigenvectores y eigenvalores de la matriz A:

    > A:=matrix([[0,1,1],[1,0,1],[1,1,0]]);Id:=matrix([[1,0,0],[0,1,0],[0,0,1]]);

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 38/99

    > B:=evalm(A)-lambda*evalm(Id);evalm(B);

    Obtenemos el determinante, lo igualamos a cero y resolvemos la ecuacin:

    > with(linalg):det(B)=0;solve(det(B)=0);

    Warning, new definition for norm

    Warning, new definition for trace

    Hemos obtenido tres eigenvalores: lambda1=2, lambda2=-1 y lambda3=-1 (luego 2 es un eigenvalor simple y -1 es un eigenvalorde multiplicidad dos)

    Vamos ahora a encontrar los eigenvectores asociados. El sistema ser:

    > X=matrix([[x[1]],[x[2]],[x[3]]]);nulo:=matrix([[0],[0],[0]]):

    > evalm(B)*X=evalm(nulo);

    Tomamos el primer eigenvalor: lambda1=2 y sustituimos:

    > lambda:=2;evalm(B)*X=evalm(nulo);

    Resolviendo este sistema encontraremos el eigenvector asociado al eigenvalor lambda=2.

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 39/99

    Sin embargo, MAPLE no necesita hacer todo este proceso para obtener los eigenvalores y eigenvectores. Para ello disponde de

    los comandos eigenvalues y eigenvectors, respectivamente, del paquete linalg.

    > restart:with(linalg):

    > A:=matrix([[0,1,1],[1,0,1],[1,1,0]]);

    > eigenvalores:=eigenvalues(A);

    Warning, new definition for norm

    Warning, new definition for trace

    > eigenvectores:=eigenvectors(A);restart:

    Esta salida se debe leer as: hay dos listas:

    [2,1,{[1,1,1,]}] , que indica el eigenvalor: 2, su multiplicidad: 1 y el eigenvector asociado: [1,1,1]

    [-1,2,{[0,-1,1],[1,-1,0]}] que indica el segundo eigenvalor: -1, su multiplicidad: 2 y los eigenvectores asociados: [0,-1,1] y [1,-1,0]

    SISTEMAS DE INECUACIONES

    Para resolverlos utilizaremos el comando solve con dos parmetros: el conjunto de inecuaciones y el conjunto de incgnitas. En

    caso de no aparecer respuesta es que el sistema no tiene solucinPor ejemplo:

    SISTEMAS DE INECUACIONE S CON UNA INCGNITA

    Basta con utilizar el comando solve, dando la inecuacin entre llaves y la incgnita entre tambin entre llaves.

    > solve({4*x-32},{x});

    SISTEMAS DE INECUACIONES CON DOS INCGNITAS

    El comando solve simplifica el conjunto de inecuaciones.

    > solve({2*x-y with(plots):

    > inequal({2*x-y

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 40/99

    En este ejemplo hemos pedido: - La zona solucin en color verde; - La zona excluida en color amarillo; -Las fronteras abiertas encolor azul; - Las fronteras cerradas en color rojo.

    SISTEMAS DE ECUACIONES DIFERENCIALES ORDINARIAS

    Para resolver un sistema de ecuaciones diferenciales MAPLE dispone del comando dsolve, al que hay que dar el conjunto de lasecuaciones (y condiciones iniciales si las hubiere) y el conjunto de las funciones incgnita:

    > ec1:=diff(x[1](t),t)=x[1](t)+x[2](t);

    > ec2:=diff(x[2](t),t)=4*x[1](t)+x[2](t);

    > soluciones=dsolve({ec1,ec2},{x[1](t),x[2](t)});

    Si conocemos condiciones iniciales los inclumos con las ecuaciones:

    > restart:

    > ec1:=diff(x(t),t)=x(t)-5*y(t);

    > ec2:=diff(y(t),t)=x(t)-3*y(t);

    > dsolve({ec1,ec2,x(0)=1,y(0)=1},{x(t),y(t)});

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 41/99

    MATRICES Y VECTORES

    VECTORES

    Para definir un vector utilizamos el comando vector, dando las componentes del vector en forma de lista:

    > v:=vector([1,2,3,4,5]);

    Para ver su contenido podemos utilizar print o evalm (evalue matrix)

    > evalm(v);

    En el caso de necesitar que una lista se convierta en vector, podemos usar el comando convert con la opcin vector.

    Para transferir el contenido de un vector a otro se utiliza el comando copy:

    > w:=copy(v);

    OPERACIONES CON VECTORES

    En general se puede hacer cualquier operacin con vectores pidiendo que se evale con el comando evalm.

    > u:=vector([u1,u2,u3]):v:=vector([v1,v2,v3]):

    La suma, resta y multiplicacin por un nmero real se expresan con los operadores habituales (+,-,*):

    > evalm(r*u+s*v);

    > evalm(u-v);

    PRODUCTO ESCALAR

    El producto escalar se calcula a travs del comando dotprod del paquete linalg, que recibe como parmetros los dos vectoresque se multiplican. Est definido considerando que los vectores pueden ser complejos. Esto quiere decir que dotprod de los

    vectores u y v, devuelve el producto escalar de u por el conjugado de v (esto permite calcular el mdulo de un complejo):

    > u:=vector([u1,u2*I]);v:=vector([v1,v2*I]);

    > with(linalg):dotprod(u,v);restart:

    Warning, new definition for norm

    Warning, new definition for trace

    Si se necesitara calcular el producto escalar de u por v sin utilizar el conjugado podemos hacerlo con dotprod del paquete linalg,utilizando como tercer parmetro la opcin 'orthogonal':

    > u:=vector([u1,u2*I]);v:=vector([v1,v2*I]);

    > with(linalg):dotprod(u,v,'orthogonal');restart:

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 42/99

    Warning, new definition for norm

    Warning, new definition for trace

    Norma o mdulo de un vector

    El mdulo de un vector se puede calcular como la raz cuadrada positiva del producto escalar de un vector por s mismo.

    Resordemos que para calcular el producto escalar se utiliza el comando dotprod del paquete linalg.

    > with(linalg):

    > v:=vector([I,-2,3*I]);sqrt(dotprod(v,v));restart:

    Warning, new definition for norm

    Warning, new definition for trace

    MAPLE tiene el comando norm del paquete linalg. Damos como primer parmetro el vector y como segundo parmetro el ndice de

    la raz para calcular el mdulo (2).

    > with(linalg):v:=vector([I,-2,3*I]):norm(v,2);restart:

    Warning, new definition for norm

    Warning, new definition for trace

    Clculo del vector unitario

    Calcular el vector unitario de otro dado, esto es, el vector de mdulo 1 de la misma direccin y sentido que el primero, se denomina

    normalizar un vector.

    Para obtener el vector normalizado se multiplica el vector por el inverso de su propio mdulo:

    > with(linalg):

    > V:=([I,1,2*I]);v:=norm(V,2);

    > U:=evalm(V*1/v);

    Warning, new definition for norm

    Warning, new definition for trace

    Vamos a comprobar que el vector U hallado es unitario:

    > u:=norm(U,2);restart:

    De todas formas MAPLE puede normalizar un vector directamente con el comando normalize del paquete linalg.

    > with(linalg):

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 43/99

    > V:=([I,1,2*I]);

    > U:=normalize(V);

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

    ngulo entre dos vectores

    Utilizando la definicin de producto escalar: uv = |u||v|cos(uv) podemos encontrar el ngulo que fomar ambos vectores

    sencillamente despejando el coseno y calculando arccos. Recoremos que la respuesta aparece en radianes.

    Utilizando esta misma definicin de producto escalar, est claro que si dos vectores son perpendiculares, su producto escalarser nulo (puesto que cos(90)=0).

    > u:=vector([1,0]);v:=vector([1,1]);

    > with(linalg):

    > angulorad:=arccos(dotprod(u,v)/(norm(u,2)*norm(v,2)));

    Warning, new definition for norm

    Warning, new definition for trace

    Si queremos el resultado en grados:

    > angulogrados:=convert(angulorad,degrees);restart:

    De todas formas MAPLE permite hallar el ngulo entre dos vectores con el comando angle del paquete linalg. El resultado apareceen radianes.

    > u:=vector([1,0]);v:=vector([1,1]);

    > with(linalg):

    > angulorad:=angle(u,v);

    > angulograd:=convert(angulorad,degrees);

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 44/99

    PRODUCTO VECTORIAL

    El producto vectorial se consigue con el comando crossprod del paquete linalg.

    > with(linalg):

    > u:=vector([1,0,0]);v:=vector([0,1,0]);

    > uxv:=crossprod(u,v);

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

    Como podemos ver, el vector resultante es perpendicular al plano definido por los otros dos vectores.

    Interpretacin geomtrica

    El producto vectorial de dos vectores u y v se puede interpretar como el rea del paralelogramo definido por los dos vectores(tomando el mdulo de producto vectorial, naturalmente).

    Por ejemplo, si queremos hallar el rea del tringulo cuyos vrtices tienen por coordenadas A(3,-1,2), B(0,1,2) y C(2,2,2) haremos

    lo siguiente:

    Hallamos los vectores u=AB y v=AC y obtenemos la mitad del modulo del producto vectorial (porque el rea del tringulo es la

    mitad del rea del paralelogramo):

    > u:=vector([0-3,1-(-1),2-2]);v:=vector([2-3,2-(-1),2-2]);

    > with(linalg):

    > area=1/2*norm(crossprod(u,v),2);

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

    ANLISIS VECTORIAL

    GRADIENTE

    El gradiente de una funcin escalar f(x,y,z), continua y derivable, es una funcin vectorial que se obtiene calculando sus derivadasparciales con respecto a cada una de las coordenadas. MAPLE permite calcular el gradiente de una funcin escalar con el

    comando grad del paquete linalg, que recibe como primer argumento la expresin de la funcin, y como segundo argumento lalista de las variables.

    > restart:

    > `grad`(f)=(Diff(f,x),Diff(f,y),Diff(f,z));

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 45/99

    El operador gradiente es comunmente utilizado en Fsica. Por ejemplo, el campo elctrico (E) es una funcin vectorial que resultade aplicar el gradiente a la funcin potencial: E = -grad(V)

    > with(linalg):

    > V:=x^2+y^2+z^2;E:=-grad(V,[x,y,z]);

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

    Tambin podemos calcular el gradiene en coordenadas esfricas o cilndricas. Para ello inclumos el parmetrocoords=spherical o coords=cylindrical, respectivamente. Por defecto el gradiente se calcula en coordenadas cartesianas.

    > with(linalg):

    > V:=x^2+y^2+z^2;E:=-grad(V,[x,y,z],coords=cylindrical);

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

    > with(linalg):

    > V:=x^2+y^2+z^2;E:=-grad(V,[x,y,z],coords=spherical);

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

    DIVERGENCIA

    El operador divergencia acta sobre una funcin vectorial F (Fx,Fy,Fz) devolviendo un escalar. En coordenadas cartesianas la

    divergencia se expresa:

    > div(F)=Diff(Fx,x)+Diff(Fy,y)+Diff(Fz,z);

    El operador divergencia se utiliza mucho en Fsica. Por ejemplo, en electromagnetismo, la divergencia del campo electrico hace

    referencia al flujo total de las lneas de campo elctrico (que puede ser nulo, positivo y entonces hay una fuente, o negarivo y

    entonces hay un sumidero). Por ejemplo, sea el campo E:

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 46/99

    > Ex:=6*x*y:Ey:=3*x^2-3*y^2:Ez:=3*z:

    > e:=[Ex,Ey,Ez];

    > with(linalg):

    > divergencia(E)=diverge(e,[x,y,z]);

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

    En este resultado la divergencia del campo elctrico es positiva. Tenemos, por lo tanto, una fuente.

    En este otro caso la divergencia resulta ser nula:

    > Ex:=6*x*y:Ey:=3*x^2-3*y^2:Ez:=0:

    > e:=[Ex,Ey,Ez];

    > with(linalg):

    > divergencia(E)=diverge(e,[x,y,z]);

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

    Tambin podemos calcular la divergencia en coordenadas esfricas o cilndricas. Para ello inclumos el parmetro

    coords=spherical o coords=cylindrical, respectivamente. Por defecto la divergencia se calcula en coordenadas cartesianas.

    > with(linalg):

    > Ex:=2*Pi*rho*x:Ey:=rho*y/(2*epsilon[0]):Ez:=0:

    > e:=[Ex,Ey,Ez];

    > divergencia(E)=diverge(e,[x,y,z],coords=cylindrical);

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

    ROTACIONAL

    El operador rotacional acta sobre una funcin vectorial y devuelve otra funcin vectorial. Desde el punto de vista de la Fsica el

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 47/99

    rotacional distinto de cero significa que el campo tiene circulacin, o turbulencia. Por ejemplo, el campo de velocidades del agua al

    vaciar una baera adquiere, generalmente, una circulacin. Su rotacional no es cero en la mayor parte de la superficie (cualquier

    cuerpo que flote en la superficie gira mientras avanza).

    MAPLE dispone del comando curl del paquete linalg para calcular el rotacional. Como parmetros es necesario dar la funcin

    vectorial y la lista de variables.

    > with(linalg):

    > f1:=x*y*z:f2:=3*x^2*z:f3:=-2*y*z^2:

    > F:=[f1,f2,f3];rot(f)=curl(F,[x,y,z]);

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

    Tambin podemos calcular el rotacional en coordenadas esfricas o cilndricas. Para ello inclumos el parmetro

    coords=spherical o coords=cylindrical, respectivamente. Por defecto el rotacional se calcula en coordenadas cartesianas.

    > with(linalg):

    > f1:=x*y*z:f2:=3*x^2*z:f3:=-2*y*z^2:

    > F:=[f1,f2,f3];rot(f)=curl(F,[x,y,z],coords=cylindrical);

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

    LAPLACIANA

    El operador laplaciana se puede considerar como "la divergencia del gradiente", es decir, partiendo de una funcin escalar

    aplicamos el gradiente, por lo que obtenemos la variacin de dicha funcin en las tres direcciones del espacio. Ahora aplicamos

    sobre esta funcin vectorial recien hallada el operador divergencia, por lo que volvemos a obtener una funcin escalar.

    En coordenadas cartesianas la laplaciana tiene la siguiente forma:

    > laplaciana(f)=Diff(f,x$2)+Diff(f,y$2)+Diff(f,z$2);

    El comando de MAPLE que hace de operador laplaciana es laplacian, del paquete linalg. Este comando recibe como argumentosla funcin escalar y la lista de variables:

    > with(linalg):

    > f:=x^2+y^2+z^2:

    > laplaciana(f)=laplacian(f,[x,y,z]);

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 48/99

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

    Dondequiera que la densidad de carga sea nula (todas las regiones del espacio que no contienen carga elctrica) el potencial

    elctrico V tiene que satisfacer la ecuacin de Laplace:

    > laplaciana(V)=0;

    Tambin podemos calcular la laplaciana en coordenadas esfricas o cilndricas. Para ello inclumos el parmetro

    coords=spherical o coords=cylindrical, respectivamente. Por defecto la laplaciana se calcula en coordenadas cartesianas.

    > with(linalg):

    > f:=x^2+y^2+z^2:

    > laplaciana(f)=laplacian(f,[x,y,z],coords=spherical);

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

    MATRICES

    DEFINIENDO MATRICES

    En la introduccin ya se habl de como definir matrices. Vamos a ver ahora cmo definir una matriz de otras formas:

    El comando matrix permite definir y rellenar matrices dando las sucesivas filas en forma de lista:

    > m:=matrix([[1,2,3],[4,5,6]]);

    Tambin podemos ir rellenando la matriz indicando el valor de cada posicin:

    > m[1,1]:=8;

    Para visualizar la matriz podemos usar print o evalm:

    > evalm(m);

    Podemos copiar el contenido de una matriz en otra utilizando el comando copy:

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 49/99

    > n:=copy(m):print(`n=`,n);

    PROCEDIMIENTOS PARA LLENAR MATRICES

    Podemos rellenar una matriz utilizando bucles anidados:

    > m:=matrix(2,3);for i to 2 do for j to 3 do m[i,j]:=1 od od:evalm(m);

    Tambin, MAPLE tiene definidas ciertas matrices especiales.

    Otras matrices definidas por MAPLE en el paquete linalg son:

    > with(linalg):

    Warning, new definition for norm

    Warning, new definition for trace

    Matriz de Vandermonde:

    > vandermonde([a,b,c]);

    Matriz diagonal:

    > diag(a,b,c);

    Matriz jacobiana: se aplica sobre funciones vectoriales, evalundose en cada fila las dereivadas parciales de cada componente de

    la funcin con respecto a cada una de las variables. El comando es jacobian.

    > f=f(fx,fy,fz),jacobiano=matrix([[Diff(fx,x),Diff(fx,y),Diff(fx,z)],[Diff(fy,x),Diff(fy,y),Diff(fy,z)],[Diff(fz,x),Diff(fz,y),Diff(fz,z)]]);

    > f:=[x*y*z,x^2+y^2+z^2,y]:

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 50/99

    > funcion=f,jacobiana=jacobian(f,[x,y,z]);

    Matriz wronskiana: se utiliza para la resolucin de determinadas ecuaciones diferenciales. La primera fila muestra las

    componentes de una funcin vectorial, y las filas siguientes son sus derivadas sucesivas. El comando es wronskian.

    > f:=[sin(x^2),exp(-x),1/x]:

    > funcion=f,wronskiana=wronskian(f,x);

    OPERACIONES CON MATRICES

    Podemos hacer las operaciones bsicas con matrices (suma resta y multiplicacin por un nmero) utilizando los operadoresnormales (+, - ,*), y despus evaluar la matriz resultado con el comando evalm:

    > a:=matrix([[1,1,1],[3,3,3]]);b:=matrix([[2,2,2],[4,4,4]]);

    > a+b=evalm(a+b);

    > 3*a=evalm(3*a);

    > 4*a-2*b=evalm(4*a-2*b);

    MULTIPLICACIN DE MATRICES

    Para multiplicar dos matrices es necesario utilizar la combinacin de smbolos &*, dado que este producto no es conmutativo.

    Tenemos que recordar que, para que dos matrices se puedan multiplicar, es necesario que el nmero de columnas de la primera

    coincida con el nmero de filas de la segunda. Para evaluar el resultado utilizaremos el comando evalm.

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 51/99

    > a:=matrix([[a11,a12,a13],[a21,a22,a23]]);b:=matrix([[b11,b12],[b21,b22],[b31,b32]]);

    > evalm(a&*b);

    Como caso especial comentar que si multiplicamos un vector fila (1xM) por una matriz (MxN) obtendremos otro vector fila (1xM)

    > v:=vector([v1,v2]):

    > evalm(v)&*evalm(a)=evalm(v&*a);

    Si multiplicamos una matriz (MxN) por un vector columna (Nx1) obtendremos otro vector columna (Mx1), aunque MAPLE devuelva el

    resultado en forma de vector fila.

    > w:=vector([w1,w2,w3]):

    > evalm(a)*evalm(w)=evalm(a&*w);

    Si queremos el resultado en forma de vector columna debemos definir el vector como una matriz de tres filas y una nica columna:

    > a:=matrix([[1,2,3],[4,5,6]]):v:=matrix([[-1],[0],[1]]):

    > evalm(a)*evalm(v)=evalm(a&*v);

    POTENCIA DE MATRICES

    Elevar una matriz a una potencia significa multiplicarla por s misma tantas veces como sea necesario, por lo tanto nicamente

    podremos calcular la potencia de matrices cuadradas, o de lo contrario no se podran multiplicar. Para indicar la potencia

    utilizamos el operador ^y el comando evalm para visualizar el resultado.

    > a:=matrix([[1,I],[-I,1]]);

    > evalm(a^2);

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 52/99

    > evalm(a^4);

    MATRIZ TRASPUESTA

    La traspuesta At de una matriz A se obtiene intercambiando las filas y las columnas de A. MAPLE utiliza el comando transpose, del

    paquete linalg, para obtener la traspuesa de una matriz:

    > with(linalg):

    > A:=matrix([[3,2-I],[4+3*I,-5+2*I]]);At:=transpose(A);

    > restart:

    MATRIZ CONJUGADA

    La conjugada de una matriz se consigue reemplazando cada elemento de la matriz por su conjugado. El comando conjugate

    aplicado sobre una matriz realiza esta tarea. Si queremos visualizar la matriz debemos utilizar el comando evalm:

    > A:=matrix([[3,2-I],[4+3*I,-5+2*I]]);conjugate(A)=evalm(conjugate(A));

    MATRIZ ADJUNTA

    La matriz adjunta de otra es la traspuesta de su matriz conjugada. Maple obtiene la adjunta de una matriz con la combinacin delos comando conjugate y transpose del paquete linalg:

    > with(linalg):

    > A:=matrix([[3,2-I],[4+3*I,-5+2*I]]);

    > Aadj=transpose(conjugate(A));

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 53/99

    MATRIZ INVERSA

    Se define la matriz inversa de A a otra tal que multiplicada por A da la matriz identidad. No todas las matrices tienen inversa (enprimer lugar hay que decir que nicamente se define la inversa de matrices cuadradas). En el caso de que una matriz no tenga

    inversa se denomina singular.

    El clculo de una matriz inversa es largo y tedioso, pero MAPLE puede calcular la inversa de una matriz de dos formas distintas:

    evaluando 1/A elevando A (^-1)

    > A:=matrix([[1,-1,-1],[3,-1,2],[2,2,3]]);

    > Ainv:=evalm(1/A);

    > Ainv:=evalm(A^(-1));

    En el caso de que queramos hallar la inversa de una matriz singular, MAPLE devuelve un error:

    > B:=matrix([[1,2],[2,4]]);evalm(1/B);

    Error, (in linalg[inverse]) singular matrix

    TRAZA DE UNA MATRIZ

    MAPLE obtiene la traza de una matriz (cuadrada, evidentemente) con el comando trace del paquete linalg.

    > with(linalg):

    > A:=matrix([[a11,a12],[a21,a22]]);

    > traza=trace(A);

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 54/99

    ELIMINACIN GAUSSIANA. TRIANGULACIN

    Podemos intercambiar filas y columnas en una matriz con los comandos swaprow y swapcol, respectivamente, del paquete linalg.

    Ambos comandos deben recibir como argumento la matriz y la posicin de las filas, o columnas, que vamos a intercambiar:

    > with(linalg):

    > A:=matrix([[2,-1,-1],[-1,1,-2],[1,-2,3]]):

    > A=evalm(A),cambio_fila_2y3=swaprow(A,2,3),cambio_columna_1y3=swapcol(A,1,3);

    Warning, new definition for norm

    Warning, new definition for trace

    Para multiplicar todos los elementos de una fila, o de una columna, por un escalar se utilizan los comando mulrow y mulcol,

    respectivamente, del paquete linalg. Como argumentos se dan la matriz, la posicin de la fila o columna y el escalar:

    > A=evalm(A),fila2por3=mulrow(A,2,3),columna3por_k=mulcol(A,3,k);

    Tambin es posible multiplicar todos los elementos de una fila, o columna, por un escalar y sumar el resultado a otra fila, o

    columna. Para esto se utilizan los comando addrow y addcol, respectivamente, del paquete linalg. Como argumentos damos la

    matriz; la posicin de las fila, o columna, que va a ser multiplicada; la posicin de la fila, o columna, a la que vamos a sumar laanterior; y el valor del escalar:

    > A=evalm(A),fila1+fila2_por3=addrow(A,2,1,3),col3+col1_por(-1)=addcol(A,1,3,-1);

    Con todos estos comandos podemos triangular una matriz dada. Por ejemplo:

    > A=evalm(A);

    > A1:=swaprow(A,1,3):A2:=addrow(A1,1,2,1):A3:=addrow(A2,1,3,-2):

    > swapfil1y3=evalm(A1),fila2+fila1por(1)=evalm(A2),fila3+fila1por(-2)=evalm(A3);

    > A4:=addrow(A3,2,3,3):fila3+fila2por3=evalm(A4);restart:

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 55/99

    De todas formas MAPLE es capaz de hacer todo este proceso por s solo, con el comando gausselim (eliminacin gaussiana) del

    paquete linalg, que recibe como parmetro la matriz inicial:

    > with(linalg):A:=matrix([[2,-1,-1],[-1,1,-2],[1,-2,3]]);gausselim(A);restart:

    Warning, new definition for norm

    Warning, new definition for trace

    Pivoteo de una matriz

    Podemos elegir en una matriz un elemento pivote. Pivotar una matriz con respecto a un elemento supone conservar la fila del

    elemento tal y como est, pero anular los dems elementos de la columna del pivote (sumando a cada fila la del elemento pivote

    multiplicada por el escalar apropiado). El comando de MAPLE para pivotar una matriz es pivot, del paquete linalg, que recibe como

    argumentos la matriz y la posicin del elemento pivote:

    > A:=matrix([[2,-1,-1],[-1,1,-2],[1,-2,3]]):

    > with(linalg):

    > A=evalm(A),pivote2,3=pivot(A,2,3);

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

    RANGO

    Podemos obtener el rango de una matriz con el comando rank, del paquete linalg:

    > A:=matrix([[1,2,3],[4,5,6],[2,4,6]]):

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 56/99

    > with(linalg):

    > A=evalm(A),rango=rank(A),eliminacion_gaussiana=gausselim(A);

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

    DETERMINANTES

    Para calcular el valor de un determinante MAPLE tiene el comando det del paquete linalg. Como argumento damos la matriz(cuadrada evidentemente) cuyo determinante queremos hallar.

    > A:=matrix([[1,0,2],[-2,-4,5],[0,1,-1]]);

    > with(linalg):

    > Det(A)=det(A);

    > restart:

    Warning, new definition for norm

    Warning, new definition for trace

    VOLUMEN DE UN TETRAEDRO

    Para hallar el volumen de un tetraedro de vrtices A(a1,a2,a3), B(b1,b2,b3), C(c1,c2,c3) y D(d1,d2,d3) podemos utilizar el

    determinante de la siguiente matriz:

    > M:=matrix([[b1-a1,c1-a1,d1-a1],[b2-a2,c2-a2,d2-a2],[b3-a3,c3-a3,d3-a3]]);

    Esta matriz se puede transformar en esta:

    > M:=matrix([[1,0,0,0],[a1,b1-a1,c1-a1,d1-a1],[a2,b2-a2,c2-a2,d2-a2],[a3,b3-a3,c3-a3,d3-a3]]);

    Que es igual a esta:

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 57/99

    > M:=matrix([[1,1,1,1],[a1,b1,c1,d1],[a2,b2,c2,d2],[a3,b3,c3,d3]]);

    As, el volumen del tretraedro se calcula:

    > Vol(ABCD)=1/6*Det(evalm(M));

    Vamos a escribir un procedimiento que devuelva el volumen de un tetraedro dando sus vrtices como argumento:

    > voltetra:=proc(a,b,c,d::list)

    > local M,A,vol:

    > A:=matrix([[1,1,1,1]]);

    > with(linalg):

    > M:=stackmatrix(A,transpose(matrix([a,b,c,d])));

    > #stackmatrix apila dos matrices

    > restart:

    > vol:=1/6*det(M)

    > end:

    > vol=voltetra([2,3,1],[4,1,-2],[6,3,7],[-5,-4,8]);

    Warning, new definition for norm

    Warning, new definition for trace

    ECUACIN DEL PLANO

    Para definir un plano necesitamos dos vectores v(v1,v2,v3) y w(w1,w2,w3) y un punto m(m1,m2,m3). As, cualquier punto genrico

    X(x,y,z) que pertenezca al plano cumplir el sistema:

    > ec1:=v1*t+w1*s=x-m1;

    > ec2:=v2*t+w2*s=y-m2;

    > ec3:=v3*t+w2*s=z-m3;

    En el paquete linalg el comando genmatrix, con la opcin flag, genera la matriz del sisema.

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 58/99

    > with(linalg):

    > C:=genmatrix([ec1,ec2,ec3],[t,s]): #genmatrix genera la matriz de coeficientes

    > S:=genmatrix([ec1,ec2,ec3],[t,s],flag): #genmatrix, con la opcin flag, genera la matriz del sistema

    > Coeficientes=evalm(C),Sistema=evalm(S);

    La matriz de coeficientes debe tener rango 2, pues los dos vectores que definen el plano deben ser linealmente independientes.Por los tanto, el sistema tendr solucin nicamente si el rango de la matriz del sistema tiene rango 2 (si tuviera rango 3 el

    sistema sera incompatible). Por lo tanto el determinante de la matriz del sistema debe ser nulo:

    > Det(evalm(S))=0;

    Podemos desarrollar este determinante, sacando factor comn x,y,z, con el comando collect de MAPLE:

    > d:=det(S)=0:

    > collect(d,[x,y,z]);

    Podemos escribir un procedimiento que devuelva la ecuacin que define un plano dando como argumentos los vectores directores

    del plano y un punto del plano:

    > ecuplano:=proc(v,w,m::list)

    > local X,M,Ind,S;

    > X:=matrix([[x,y,z]]):M:=matrix([m]):Ind:=evalm(X-M);

    > with(linalg):

    > S:=concat(transpose(matrix([v,w])),transpose(Ind)); #concat une matrices del mismo n de filas, una a la derecha de otra

    > det(S)=0

    > end:

    > ec:=ecuplano([1,2,3],[2,0,1],[0,1,1]);

    FUNCIONES

    MAPLE permite dibujar funciones en el plano y en el espacio, para ello utiliza los comandos plot y plot3d, respectivamente.

    FUNCIONES EN EL PLANO

    DEFINICIN

    A PRIORI

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 59/99

    Para definir una funcin a priori se utiliza el operador ->

    > f:=x->x^2-2*x+1;

    > g:=t->1/2*9.8*t^2;

    En el caso de haber varias variables se escriben todas entre parntesis:

    > h:=(x,y,z)->x^2+y*z-1;

    Es posible especificar el tipo de variable independiente, por ejemplo:

    > f:=(x::integer)->x;

    FUNCIONES DEFINIDAS A TROZOS

    Para definir funciones a trozos utilizamos en comando piecewise, inidcando el primer intervalo, la primera funcin, el seguninervalor, la segunda funcin, etc:

    > f:=x->piecewise(x plot(f(x),x=-4..6,y=-1..3);

    FUNCIONES CON VALORES ABSOLUTOS

    El comando abs calcula el valor absoluto de una expresin.

    > g:=x->abs((x-1)*(x+1));plot(g(x),x=-3..3);

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 60/99

    A POSTERIORI

    Podemos tomar el resultado de un clculo anterior y convertirlo en funcin con el comando unapply, que tiene como primerargumento la candidata a funcin y como segundo argumento la candidata a variable independiente.

    > a:=expand(2*(x-1)^2+3);

    > f:=unapply(a,x);

    IMGENES

    Para obtener la imagen de un cierto valor se hace:

    > f:=x->3*x-1;

    > f(2);

    > g:=(ci,r,t)->ci*(1+r/100)^t;

    > g(3000,5,3);

    Podemos obligar a que se evale la salida obtenida con evalf:

    > evalf(%);

    OPERACIONES CON FUNCIONES

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 61/99

    SUMA Y RESTA DE FUNCIONES

    A partir de dos o ms funciones podemos definir la funcin suma y resta:

    > f:=x->2*x-4:g:=x->x^2-4:

    > suma:=x->f(x)+g(x);resta:=x->f(x)-g(x);

    > with(plots):

    > p:=plot({f(x),g(x),suma(x),resta(x)},x=-2..4,color=[yellow,red,green,blue]):

    > t:=textplot([[4,f(4),'f(x)'],[4,g(4),'g(x)'],[4,suma(4),'f+g'],[4,resta(4),'f-g']]):

    > display(p,t,title=`Suma y resta de funciones`);

    > restart:

    PRODUCTO Y DIVISIN DE FUNCIONES

    Para definr el producto o divisin de dos funciones hacemos:

    > f:=x->x-1 : g:=x->x^2-4:

    > m1:=x->2*f(x); m2:=x->f(x)*g(x); m3:=x->f(x)^2 ; d1:=x->f(x)/g(x);

    > plot(m3(x),x=-4..4);

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 62/99

    COMPOSICIN DE FUNCIONES

    Para componer dos funciones podemos hacer:

    > f:=x->x-1 : g:=x->x^2+1:

    > h:=x->g(f(x));

    > with(plots):

    > p:=plot({f(x),g(x),h(x)},x=-3..3,color=[red,green,blue]):

    > t:=textplot([[-3,f(-3),'f(x)'],[-3,g(-3),'g(x)'],[-3,h(-3),'g(f(x))']]):

    > display(p,t,title=`Composicin de funciones`);

    > restart:

    TRASLACIN DE FUNCIONES

    Vamos a tratar aqu cmo podemos trasladar matemticamente una determinada funcin horizontal y verticalmente.

    TRASLACIN VERTICAL

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.html 63/99

    Para trasladar una funcin verticalmente basta con sumar, o restar, un valor a la funcin: g(x)=f(x)+k

    Vamos a ver cmo se traslada verticalmene la funcin f(x)=x^ 2-3:

    > f:=x->x^2-3:

    > with(plots):

    > animate(f(x)+t,x=-3..3,t=-3..3);

    > restart:

    Como podemos ver, el comando animate (que est en el paquete plots) permite ver la secuencia de movimientos. Como

    parmetros tiene la funcin (con dos variables: la x y el paso de tiempo), el rango del eje x y el rango de tiempo. Si hacemos click

    sobre la figura aparecer un men con las opciones clsicas de un video. nicamene tenemos que probar.

    TRASLACIN HORIZONTAL

    Para trasladar una funcin horizontalmente basta con sumar, o restar, un valor al argumento de la funcin: g(x)=f(x+k)

    Vamos ver cmo se traslada horizontalmente la funcin f(x)x^ 2-3:

    > f:=x->x^3:

    > with(plots):

    > animate(f(x+t),x=-6..6,t=-3..3);

    > restart:

  • 30/07/13 Tutorial de MAPLE V

    www.dmdelrio.es/Maple/MAPLE1.h