You are on page 1of 64

Un paseo por Maple

AVISO: ste es un documento interactivo, que el usuario puede modificar si lo desea. Adems, tras una lectura preliminar, puede ser aconsejable, para familiarizarse con el sistema, modificar ligeramente las instruciones Maple (que aparecen escritas en rojo) y volverlas a ejecutar, para tener nuevos ejemplos. Se recomienda, en todo caso, que las instrucciones se vayan ejecutando en modo secuencial, ya que de lo contrario, se pueden obtener resultados inesperados, si en alguna instruccin es necesaria una funcin o variable definida en otra anterior. >

1. Presentacin de Maple
El sistema Maple se caracteriza por realizar clculos con smbolos que representan objetos matemticos. Se trata de un sistema de clculo cientfico (simblico, numrico y grfico) interactivo, con una sintaxis prxima a la notacin matemtica, disponible para una amplia gama de sistemas operativos. Adems, cualquier hoja de trabajo Maple se puede abrir en diferentes sistemas. Algunas de sus capacidades son: Operaciones numricas en aritmtica racional exacta o decimal de precisin arbitraria. Manipulacin algebraica de variables y smbolos. Operaciones con polinomios, fracciones algebraicas y series. Clculo de lmites, derivadas parciales e integrales. Resolucin de ecuaciones y sistemas. Resolucin de ecuaciones diferenciales y en diferencias. Operaciones con vectores y matrices. Clculo vectorial con funciones de varias variables. Capacidades grficas en 2 y 3 dimensiones. Lenguaje de programacin de alto nivel.

2. Uso interactivo de Maple


2.1 La interfaz
La interfaz de usuario de Maple es muy similar a la de cualquier programa Windows. Dispone de mens despleglables, botones de maximizar, minimizar y cerrar, mens de archivo, edicin, opciones, ayuda, etc. y barras de herramientas. En un documento de trabajo Maple, como ste en el que estamos trabajando, se pueden introducir datos en tres modos de edicin: Regin de trabajo, regin de texto o comandos textuales. Se puede cambiar de un modo de edicin a otro con los botones siguientes: . En las regiones de trabajo se escriben las expresiones, programas o sentencias de Maple: > 3 + 5;

> (1/2+1)^2;

> En general, la instruccin introducida aparece escrita en rojo. Para ejecutar una instruccin se debe pulsar <Intro> con el cursor situado sobre ella. La salida que devuelve el sitema aparecer escrita en azul. Tras ejecutar una instruccin Maple, el sistema coloca el cursor en la siguiente regin de trabajo. Las entradas que aparecen en las regiones de trabajo se pueden modificar y volver a ejecutar. La nueva salida sustituir a la anterior. Las regiones de trabajo se distinguen porque aparece el smbolo [ >, inductor del sistema y se pueden insertar, en cualquier lugar del documento, pulsando el botn de la barra de herramientas, o bien con la opcin Execution Group del men de Insert. Las regiones de texto sirven para poner comentarios al trabajo, como la zona actual. Al situar el cursor sobre una regin de texto aparecen disponibles en la barra de herramientas las capacidades propias de un editor de texto, para modificar tipo o tamao de letra, las fuentes, la estructura del prrafo, etc. Se puede convertir una regin de trabajo en una regin de texto pulsando el botn

Cuando en una zona de texto se quiere introducir una frmula, como por ejemplo , se usa el botn o la opcin Standard Math del men Insert, con el cursor situado en la posicin en la que se quiera intercalar la frmula. La expresin introducida en la lnea de edicin aparecer en el lugar previsto escrita en formato matemtico. Hay que tener en cuenta que estas opciones son para "insertar". Si tras el lugar ocupado por la frmula no est creada la lnea de texto, no se podr seguir escribiendo en la misma lnea. Por ejemplo, en esta lnea no se puede escribir detrs de la frmula Tambin se puede transformar en frmula matemtica una expresin escrita en formato lineal (como x^2/5) sombrendola con el ratn y eligiendo la opcin Convert to // Standard Math, que aparece al pulsar el botn derecho del ratn. Maple incorpora un sistema de secciones y subsecciones: Esto es una seccin

Esto es una subseccin

Pulsando con el ratn sobre el cuadrado que se encuentra en la zona superior izquierda de las secciones stas se abren o se cierran a nuestra conveniencia. En todo momento, se pueden insertar nuevas secciones o subsecciones, con la opcin correspondiente del men de Insert. En el men View se encuentran las opciones Expand All Sections y Collapse All Sections, que permiten respectivamente abrir o cerrar a la vez todas las secciones de la hoja de trabajo. Los documentos con secciones cerradas, permiten una visin global. Sistema de ayuda y errores de sintaxis Maple dispone de un complejo sistema de ayuda. Para cada uno de sus comandos existe una pgina de ayuda con su descripcin, sintaxis, secuencia de llamada, parmetros, semntica y ejemplos de uso. Invocando la ayuda sobre el concepto en cuestin se abrir dicha pgina que, tras ser consultada, se puede cerrar por los procedimientos usuales de los programas de Windows. Por ejemplo, pulsando sobre la cruz que aparece en la esquina superior derecha de la pgina. El sistema de ayuda se puede invocar desde una regin de trabajo o de texto, o bien desde los mens de la aplicacin. En una regin de trabajo, el comando ?concepto genera la apertura de la pgina de ayuda correspondiente. Por ejemplo, al pulsar <Intro> sobre el siguiente comando se abrir la pgina de ayuda de solve:

> ?solve Tambin se abre la pgina de ayuda correspondiente a un concepto, escribiendo la palabra, marcndola con el ratn y pulsando la tecla F1. Desde los mens desplegables: En Help se puede hacer un recorrido sistemtico por el sistema de ayuda. Con la opcin Topic Search... se puede pedir ayuda sobre un concepto concreto, introduciendo su nombre en la ventana de dilogo que aparece. Cuando el sistema de ayuda no dispone de informacin sobre el concepto solicitado, proporciona en su lugar una pgina de ayuda con el conjunto de nombres conocidos por Maple cuyos caracteres empiecen con el dado: > ?so Al ejecutar la anterior instruccin aparece una pgina de ayuda en la que incluye enlaces a las pginas de ayuda de: solve, solvefor y sort. En caso de error al introducir una expresin, Maple responde con un mensaje que indica el tipo de error cometido. Las siguientes instrucciones contienen errores: > cos(2,3); Error, (in cos) expecting 1 argument, got 2 (El coseno espera un nico argumento.) > min(3,I); Error, complex argument to max/min (No se puede hallar el mnimo de esos dos nmeros porque I es la unidad imaginaria de los nmeros complejos.) > Hiperenlaces Un hiperenlace es una herramienta de navegacin. Cuando en una hoja de trabajo de Maple aparece una palabra en color verde y subrayada, por ejemplo diff , se puede, pulsando sobre ella con el botn izquierdo del ratn, o con la tecla de <Intro>, obtener informacin. Esta informacin puede ser una pgina de ayuda, otro archivo de Maple u otra parte de la sesin de trabajo actual.

Para insertar un hiperenlace en una regin de texto se elige la opcin Hyperlink del men de Insert. Aparecer una ventana de dilogo. En la casilla Link_Text se pone la palabra que se quiera como enlace y se puede elegir entre una una direccin URL, una hoja de trabajo o una pgina de ayuda. Operaciones bsicas de manipulacin de archivos File/New....................... Crear una hoja de trabajo nueva File/Open..................... Abrir una hoja de trabajo ya creada File/Save.................... Salvar la hoja actual. File/Print...................... Imprimir la hoja actual File/Exit...................... Salir del sistema Si hay varias hojas de trabajo abiertas, estarn en distintas ventanas, que pueden estar en mosaico o superpuestas, el men de Window permite la manipulacin de las ventanas. Si el usuario lo desea, puede abrir una hoja nueva, para experimentar. En la hoja creada, el cursor se situar sobre una regin de trabajo, preparada para introducir instrucciones Maple. Tras ejecutar una instruccin aparecer la salida y se crear una nueva regin de trabajo.

2.2 Trabajando con Maple


Operaciones bsicas: : = ................................Asignacin ; y : ............................. Separadores de instrucciones %.................................Resultados precedentes +, ,*, / , ...............Operadores aritmticos habituales

restart ......................... Reiniciar el sistema. Introduccin de expresiones Una vez situado en una regin de trabajo (se distingue porque aparece el smbolo [ > ), se escribe la sentencia que se quiere ejecutar, usando nmeros, operadores aritmticos, funciones, etc. El sistema ofrece dos posibilidades para la ejecucin: Ejecutarla y ver el resultado, para ello hay que finalizar con punto y coma (" ;") y pulsar <Intro>: > (3+5+8)*45/(3*5*8);

Ejecutarla, pero sin ver el resultado. Usando dos puntos (" : ") : > (3+5+8)*45: El smbolo % permite usar los resultados anteriores, sin necesidad de volver a teclearlos: > %;

Repitiendo dos o tres veces este smbolo se accede al penltimo y al antepenltimo resultado, respectivamente: > %%%;

Se puede introducir una secuencia de instrucciones separadas por comas y sern ejecutadas simultaneamente: > 280/35, 280*35;

Tambin se pueden intoducir varias instrucciones separadas por punto y coma y sern ejecutadas sucesivamente: > 2^3;%;

En Maple se distingue entre la entrada de instrucciones al sistema, que se realiza pulsando <Intro> y el salto de lnea, para el cul hay que pulsar las teclas: <Intro> + <Maysculas>. > 35*8+ 50*420*2;

Para las expresiones introducidas, Maple admite dos formatos: lineal y matemtico. Pulsando el botn de la barra de herramientas se pasa de uno a otro. En los archivos del CD se ha usado el formato

matemtico cuando hemos querido una mejor visualizacin de la expresin. Para ver cmo se han escrito basta pulsar el botn citado y ver el formato lineal. >

Tambin se puede introducir expresiones haciendo uso de las paletas que aparecen pulsando la opcin Palettes del men de View. > Detener un clculo El botn con la seal de Stop sirve para detener la ejecucin de una sentencia Maple. Cuando el , permitiendo con su pulsacin interrupir la

sistema est realizando clculos el botn se activa, ejecucin.

Clculos exactos con constantes y funciones matemticas elementales Maple se puede usar como una potente calculadora, con nmeros, operadores aritmticos y constantes matemticas. Puede operar con enteros y racionales de gran tamao y tiene definidas las funciones matemticas usuales: > 58!/7^45;

> ln(1);

> ifactor(3456789764350076548);

> expand(%);

La prioridad en las operaciones y uso de parntesis son los usales: > (1+1/2)^(1+2)*x;

> a/(b+c);

> a/b+c;

Maple tambin puede operar en aritmtica exacta con nmeros reales y complejos (la unidad imaginaria se representa con la letra I): > (1+I)*(1-3*I);

> (3 - 2*I)^5;

>

El nmero se escribe Pi (Maple conoce algunas de sus propiedades). Si se escribe pi, se pone el smbolo, pero no se evala. > sin(Pi/2);

> sin(pi/2);

Para escribir el nmero hay que poner exp(1). > exp(1);

> ln(exp(1));

> A continuacin presentamos la notacin para algunas de las funciones matemticas elementales disponibles: Trigonomtricas sin(x) cos(x) tan(x)

sec(x) csc(x) cot(x) Trigonomtricas inversas arcsin(x) arccos(x) arctan(x) Logartmicas ln(x) log(x), para el logaritmo neperiano log[b](x) log10(x) Exponencial : exp(x) Factorial de n : n! Valor absoluto de x : abs(x) Raz cuadrada de x : sqrt(x) Raz n-sima de x : root(x,n) (que devuelve la rama principal) o bien surd(x,n) . Ejemplo 2.2.1 a) Calcular el arco seno de 1/2. b) Calcular el seno, el coseno y la tangente de .

c) Calcular d) Calcular

. .

e) Calcular la raz cbica de Solucin a) Basta ejecutar: > arcsin(1/2);

b) Calculamos las tres razones trigonomtricas en una sola ejecucin: > sin(3*Pi/4), cos(3*Pi/4), tan(Pi/4);

c) Hay que tener en cuenta que la unidad imaginaria se escribe I: > exp(Pi*I);

d) Para calcular logaritmos en cualquier base, Maple los transforma en logaritmos neperianos. Para simplificar la expresin obtenida se puede usar simplify : > log[4](2);

> simplify(%);

e) Si se calcula con root la raz cbica de un nmero x, Maple devuelve la rama principal. Si se calcula con surd devuelve la rama con argmento ms prximo al de x. En caso de que x sea real, devolver el valor de la raz cbica real: > root(-8,3);

> simplify(%);

> surd(-8,3);

> Clculos en aritmtica aproximada Maple admite aritmtica aproximada de precisin arbitraria. Cuando todos los datos en una expresin son exactos, el sistema la evala de forma exacta, devolviendo en forma simblica aquellas subexpresiones que no puede simplificar ms. Sin embargo, cuando la expresin incluye un nmero expresado de forma decimal, la evala utilizando aritmtica aproximada: > 6+3/8*2, 6+3.1/8*2;

> (sqrt(5))^3;

> (sqrt(5.))^3;

Para especificar el nmero de decimales que se quieren usar se emplea la variable Digits , que tiene como valor por defecto 10, pero puede ser modificada: > Digits;

> 1/3.;

> Digits := 5: 1/3.;

Para obtener la aproximacin decimal de una expresin tambin se puede utilizar evalf , cuyos argumentos son: la expresin y el nmero de dgitos deseado.

> evalf(sin(10),10); evalf(sqrt(3), 20);

El segundo argumento es opcional, si no se pone, toma por defecto el valor actual de la variable Digits : > Digits:=200; evalf(Pi);

> Digits:=10: > evalf(exp(1));

> Variables Las variables se utilizan para asignar valores. > a:=2; 2*a;

Un nombre vlido es una cadena de caracteres (letras, nmeros y signos de puntuacin) empezando por una letra o un signo de subrayado ( _ ). Los nombres de otro tipo (por ejemplo, con espacios blancos intercalados) deben ponerse entre comillas graves: > `esto es un nombre`:=4;

Aviso importante: Si se abre una sesin de trabajo en la que hay variables asignadas, esta asignacin no est operativa si no se ejecuta la instruccin de asignacin. Una vez ejecutada Maple conserva en memoria el valor asignado, aunque se borre la instruccin. Si se quiere "limpiar" la variable es preciso desasignarla. Para desasignar el valor de una variable se le asigna su propio nombre:

> a^2 ; a:= 'a' ; a^2;

La instruccin restart reinicia el sistema, desasignando todas las variables: > a:=3; b:=2; c:=4; a^b+c;

> restart; a^b+c;

El sistema distingue entre maysculas y minsculas: > A:=5; a; A;

> Sin(Pi), sin(Pi);

> A:='A': > Funciones y expresiones Maple distingue entre expresiones y funciones. Por ejemplo, es una expresin. Se puede manejar como tal, pero no se puede evaluar, salvo sustituyendo x por otro valor con la funcin subs

> f:= x^2;

> f(3);

> subs(x=3,f);

Para definir funciones sencillas se usa el operador flecha (escrito con los signos '-' y '>'): > f:=x->x^2;

> f(2), f(x),f(y);

Se puede convertir una expresin en funcin con > x^2*sin(2*x): > f:=unapply(%,x);

unapply :

> f(1);

> f(y);

Funciones definidas a trozos La funcicin piecewise permite definir funciones que estn expresadas de forma distintas en distintos intervalos. Por ejemplo, para definir la funcin > f:=x->piecewise(x<0, x^2,2*x): basta ejecutar:

Podemos comprobar que est bien definida evalundola en algunos puntos: > f(-3);

> f(5);

> Definicin de funciones de varias variables y de variable vectorial Se pueden definir funciones de varias variables. Por ejemplo, la siguiente funcin va de > g:=(x,y)->x^2+y^2: > g(2,3); en R:

Una funcin de

en

> h:=(x,y,z)->[2*x-y,z^2];

> h(1,2,3);

Hay que tener en cuenta que la salida es un vector (se escribe entre corchetes). Se puede acceder a cada una de sus componentes poniendo entre corchetes el ndice correspondiente: > v:=h(x,y,z): > v[1];

> v[2];

> v:='v': Tambin se pueden definir con el operador flecha funciones de variable vectorial. En este caso, en la expresin que define la funcin ser necesario acceder a las componentes del vector. A continuacin, definimos las funciones g y h anteriores como funciones de variable vectorial: > g:=v-> v[1]^2+v[2]^2;

> h:=v->[2*v[1]-v[2], v[3]^2];

Ahora, para llamar a la funcin, el argumento debe ser un vector: > g([2,3]);

> h([1,2,3]);

Aviso: Al reiniciar la sesin, bien con restart o bien saliendo y volviendo a entrar, se pierden todas las asignaciones, por lo que si queremos tener las funciones definidas hay que volver a ejecutar las definiciones. > f:=x->x^2+2: > f(2);

> restart: > f(3);

Si se quiere volver a tener operativa la funcin hay que ejecutar la instruccin correspondiente a su definicin. >

3. Matemticas bsicas con Maple


3.1. Resolucin de ecuaciones y sistemas
La funcin solve resuelve "algunas" ecuaciones algebraicas: > solve(x^3+a*x^2-4*x=0,x);

En ecuaciones trigonomtricas devuelve una sola solucin: > solve(2*sin(x)=1);

Si a la variable _EnvAllSolutions le asignamos el valor true, Maple devolver el conjunto de todas las soluciones de una ecuacin transcendente. Usualmente este conjunto vendr expresado en funcin de algunos parmetros que aparecern denominados por las letras _Z para valores enteros, _NN para valores no negativos y _B para valores binarios (0 y 1). > _EnvAllSolutions := true: > solve(2*sin(x)=1);

A veces, el sistema devuelve las soluciones en funcin de las races de un polinomio: > p:=x^5+2*x^4-7*x+3: solve(p=0);

Se pueden obtener los valores aproximados de estas 5 soluciones: > evalf(%);

Tambin se puede obtener directamente soluciones aproximadas con fsolve : > fsolve(p=0);

Ntese que slo han salido soluciones reales. Con la opcin complex, se obtienen las races en el cuerpo C. > fsolve(p=0,x,complex);

Si la ecuacin no es polinmica fsolve slo devuelve una solucin. Se puede dar como argumento opcional un rango, para que devuelva la solucin que encuentre en ese intervalo: > fsolve(cos(x)=x^2);

> fsolve(cos(x)=x^2,x, -2..0);

Tambin la funcin solve sirve para resolver sistemas de ecuaciones. En este caso, el primer argumento es un conjunto formado por varias ecuaciones y el segundo un conjunto formdo por las incgnitas, que se puede omitir si no hay lugar a dudas. Ejemplo 3.1.1 Resolver el siguiente sistema: Solucin Definimos las ecuaciones y, como no hay lugar a duda sobre las incgnitas, ponemos como nico argumento el conjunto de ecuaciones: > e1:=x-2*y = 3: e2:=2*x+y = 6: solve({e1,e2});

Cuando, en un sistema de ecuaciones, Maple devuelve una solucin con RootOf , sta suele representar varios valores, que se pueden obtener con la funcin allvalues : > solve({x^2+y=0, 3*y+5=0},{x,y});

> allvalues(%);

> Ejemplo 3.1.2 a) Obtener todas las soluciones del sistema de ecuaciones

b) Obtener, con fsolve , el valor aproximado de todas las soluciones (reales o complejas) de la ecuacin: . Solucin a) Para resolver el sistema ponemos como primer argumento de solve el conjunto de ecuaciones y como segundo argumento el de incgnitas: > solve({2*x+3*y-4*z=1,6*y-a*z=2, a*z=10},{x,y,z});

Esta solucin no es vlida para

. En este caso el sistema es incompatible.

b) En principio, fsolve slo devuelve el valor aproximado de las races reales. Con la opcin complex devuelve reales y complejas: >

>

>

3.2. Manipulaciones algebraicas


La funcin simplify permite simplificar expresiones.

> simplify(sin(x)^2+cos(x)^2);

Cuando se desea simplificar una expresin bajo una cierta hiptesis en los datos se puede usar assume . Por ejemplo, la expresin > simplify(ln(exp(t))); slo se simplifica a t en el caso de que t sea nmero real:

> assume(t,real): %;

La tilde junto a la variable indica que hay alguna suposicin sobre ella. Para saber cul es esta suposicin se puede hacer: > about(t); Originally t, renamed t~: is assumed to be: real Para quitar la suposicin desasignamos la variable: > t:='t': > about(t); t: nothing known about this object La funcin factor de Maple, permite factorizar expresiones polinmicas en una o varias indeterminadas, en cambio expand proporciona en general una forma expandida de una expresin creada de un modo compacto. > factor(87*x^7-245*x^6+348*x^5-240*x^4-15*x^8+x^9+64*x^3);

> expand(%);

Nota: No confuncir la funcin factor, que factoriza polinomios con la funcin ifactor que sirve para factorizar nmeros enteros. La funcin convert transforma una expresin en otra de otro tipo. Por ejemplo, la instruccin: convert(f(x),parfrac,x) devuelve la descomposicin en fracciones simples de la expresin > convert((x+1)/(x^4-x^2), parfrac,x);

> Ejemplo 3.2.1

a) Simplificar

para obtener v.

b) Descomponer en fracciones simples la expresin Solucin

a) Si intentamos simplificar no se obtiene v porque la expresin anterior slo coincide con v cuando ste es positivo. Si asumimos esta hiptesis si se obtendr v en la simplificacin: > simplify(sqrt(v^2));

> assume(v>=0),simplify(sqrt(v^2));

Limpiamos la variable v para quitar la suposicin: > v:='v': >

b) Para descomponer en fracciones simples la expresin

, basta ejecutar:

> convert((a*x+b)/(x^3-9*x^2+23*x-15), parfrac,x);

>

3.3. Algunas operaciones del Anlisis Matemtico


Para calcular lmites con Maple se usa la funcin limit ; para derivar expresiones la funcin diff , y para calcular integrales la funcin int . Nota: La funcin diff se usa para derivar expresiones, mientras que el operador D se usa para derivar funciones, devolviendo como resultado otra funcin. > f:=x->x^2*sin(x);

> diff(f(x),x);

> D(f);

> Ntese que el primer argumento de diff es la expresin y como segundo argumento hay que especificar la variable de derivacin, mientras que para D el nico argumento es la funcin, que obviamente se debar haber definido como funcin de una nica variable. La funcin sum permite calcular sumas. Maple es capaz de simplificar bastantes sumas indefinidas y de obtener la suma de algunas series. Maple dispone de la funcin taylor que permite obtener desarrollos de Taylor. La instruccin taylor(f(x),x=a,k) devuelve el desarrollo de Taylor de en torno a con resto de orden k. Si se quiere el polinomio de Taylor habr que eliminar el resto convirtiendo en polinomio la expresin dada: > taylor(ln(x),x=1,4);

> convert(%, polynom);

El polinomio obtenido es de grado 3. Conviene recordar que el ltimo argumento de la funcin taylor hace alusin al orden del resto, no al orden del polinomio. Ejemplo 3.3.1

Calcular el lmite Solucin

, la derivada de

y la integral de

Para calcular el lmite basta copiar la expresin del enunciado y ejecutar: >

Ntese que el limite corresponde a la definicin de derivada de >

Al integrar cos(x) se debe obtener sin(x): > int(cos(x),x);

> Ejemplo 3.3.2

Calcular los lmites de la expresin derecha y por la izquierda.

cuando x tiende a

, a - , y cuando x tiende a 0 por la

Solucin Para calcular el primer lmite usaremos la paleta de expresiones. Al pulsar sobre el botn correspondiente, con el cursor situado en una regin de trabajo aparecer: >limit(%?, %?=%?); Hay que sustituir cada interrogacin por el valor adecuado. En la primera copiamos la expresin a la que le queremos calcular el lmite, en la segunda ponemos x y en la tercera ponemos infinity o cogemos el smbolo de la paleta de smbolos: > limit((2^x+3^x)^(1/x), x=infinity);

El segundo lmite es: >

Para calcular lmites por la derecha y por la izquierda se usan los argumentos opcionales left o right respectivamente. > limit((2^x+3^x)^(1/x), x=0, left);

>

> Ejemplo 3.3.3 Definir la funcin P dada por la derivada de . Evaluarla en D(P)(1). . Calcular . Usar la funcin diff de Maple para calcular . Comparar la funcin anterior con el resultado de ejecutar

Calcular tambin la derivada segunda de P(x). Solucin Definimos la funcin P: > P:=x->x^2-a*x+5: Para calcular P(1) basta ejecutar: > P(1);

Para calcular la derivada de la expresin P(x), se ejecuta: > derivada:=diff(P(x),x);

El resultado es una expresin, para evaluarla en > subs(x=1,derivada);

hay que usar la funcin subs :

Este mismo valor se debe obtener, si se calcula directamente P'(1) con el operador D : > D(P)(1);

Para calcular la derivada segunda de > diff(P(x), x$2);

, podemos hacer:

> Ejemplo 3.3.4

Calular

Solucin Basta introducir las expresiones del enunciado y ejecutar: > sum(k^2,k = 1 .. 2500);

>

>

> Ejemplo 3.3.5 Hallar una funcin polinmica de segundo grado, Comprobar la validez del resultado obtenido. Solucin Definimos el polinomio, como funcin, usando el operador flecha: > p:=x-> a*x^2+b*x+c: Planteamos un sistema de tres ecuaciones cuyas incgnitas son los coeficientes a,b y c, imponiendo las condiciones pedidas. Escribimos las derivadas con el operador D: > sistema:=simplify({p(1)=0, D(p)(1)=0,D(D(p))(1)=2}); , tal que p(1)=0, p'(1)=0, p''(1)=2.

> solve(sistema,{a,b,c});

La siguiente instruccin convierte las igualdades en asignaciones:

> assign(%); > p(x);

Luego el polinomio pedido es

A continuacin, comprobamos que verifica las condiciones: > p(1);

> D(p)(1);

> D(D(p))(0);

Desasignamos las variables para no tener problemas en posteriores ejemplos: > a:='a':b:='b':c:='c': > Ejemplo 3.3.6 Definir la funcin a . a) Usando la definicin. b) Usando la funcin taylor . Solucin Definicin de la funcin: > f:=x->sin(2*x)+cos(3*x): y calcular su polinomio de Taylor de orden 5 desarrollado en torno

a) Para calcular el polinomio de Taylor podemos usar la definicin de ste: e introducir esta expresin, expresando las derivadas con el operador D, para que la calucle Maple. Para escribir la derivada k-sima de f evaluada en 0 ponemos (D @@ k)(f)(0). El polinomio de Taylor es: >

b) Al usar la funcin taylor . hay que tener en cuenta que el ltimo argumento de esta funcin hace referencia al orden del resto de Taylor. Si queremos obtener el polinomio de grado 5 hay que poner 6 como tercer argumento > taylor(f(x), x=0,6);

y convertir en polinomio la expresin obtenida: > convert(%, polynom);

> Ejemplo 3.3.7

Calcular las siguientes integrales: Solucin Maple calcula tanto primitivas como integrales definidas:

>

> int(1/cos(x),x = 0..Pi/4);

>

4. Algunas estructuras de datos


4.1 Secuencias
Una secuencia es una coleccin arbitraria de elementos separados por comas: > secuencia:=2,4,566,-1;

La funcin seq genera secuencias: > potencias:=seq(x^n,n=1..5);

Para acceder a los operandos de una secuencia se usan los corchetes > secuencia[4],potencias[3];

> secuencia[1..3];

Para aadir elementos a una secuencia basta ponerlos a continuacin: > nuevasec:=potencias,17;

>

4.2 Listas
Una lista se representa encerrando entre corchetes una secuencia > lista:=[seq(i^2,i=1..5)];

La funcin nops permite determinar el nmero de operandos de una lista: > nops(lista);

Se puede acceder a los elementos de una lista igual que a los de una secuencia o bien usando op : > op(lista); op(3,lista); op(1..3,lista);

> lista[3]; lista[1..3];

Para aadir un elemento a una lista se crea una nueva lista con los operandos de la anterior ms el que se quiere aadir: > nuevalista:=[op(lista),34,16];

Las listas, al igual que las secuencias, conservan el orden y los elementos repetidos.

4.3 Conjuntos
Un conjunto se representa encerrando entre llaves una secuencia: > Conjunto:={seq(i^2,i=1..5)};

Se puede acceder a los elementos de un conjunto igual que a los de una secuencia o bien usando op. Pero hay que tener en cuenta que en un conjunto se eliminan los elementos repetidos y el orden no es significativo. > op(Conjunto); op(3,Conjunto); op(1..3,Conjunto);

> Conjunto[3]; Conjunto[1..3];

> AC:={3,2,1,3};

> AC[1];

Para aadir elementos a un conjunto se crea uno nuevo con los operandos del anterior ms los que se quiere aadir: > nuevoconjunto:={op(Conjunto),34,16};

Para suprimir un elemento se le puede sustituir por NULL : > subs(34=NULL,nuevoconjunto);

>

4.4 Tablas
Las tablas (estructuras tipo table) son una estructura bsica en Maple. Una tabla es un conjunto de registros de la forma ndice=valor clasificados por ndice. El acceso a sus elementos se hace por el ndice correspondiente. Se pueden aadir o modificar datos sin reconstruir la tabla. > tablapesos:=table([Pepe=50, Luis=60, Mara=55]);

> tablapesos[Mara];

> tablapesos[Carlos]:=70;

> eval(tablapesos);

> Los paquetes de la biblioteca de Maple son tablas. Los ndices son los nombres de las funciones que los forman y los registros los cdigos correspondientes.

4.5 Arrays
Un array es una tabla de dimensiones fijas, cada una de las cuales es un rango de enteros. Para definirlo se usa la funcin array . A continuacin se define un array con 3 filas y dos columnas: > a:=array(1..3, 1..2,[[1,2],[3,4],[5,6]]);

A los elementos de un array se accede con el nombre indexado. > a[1,2], a[3,1];

Los elementos de un array se pueden modificar por asignacin directa: > a[1,2]:=17;

> eval(a);

> a:='a': >

5. Grficos
Para obtener grficas planas, se usa la funcin plot . Para representar la curva se puede optar por una de las dos instrucciones siguientes plot(f(x),x=a..b,y=c..d,opciones) plot(f,a..b,c..d,opciones) La primera corresponde al trabajo con expresiones y la segunda al trabajo con funciones. Los argumentos tercero y cuarto son opcionales. Si f est definida como una funcin la instruccion plot(f) dibuja la grfica de la curva intervalo [10,10] en el

Para obtener la representacin grfica de varias curvas se sustituye el primer argumento por un conjunto o una lista de expresiones o funciones. Tambin se puede dibujar una lista de puntos unidos por segmentos (opcin por defecto): Una vez dibujada una grfica, situando el ratn sobre la figura, la barra de herramientas vara apareciendo el men de grficos. Un recorrido por los distintos botones permite explorar las opciones correspondientes.

Ejemplo 5.1

a) Obtener la grfica de la curva en el intervalo . b) Dibujar la grfica de la funcin tangente. Volverla a representar con la opcin discont=true para ver las discontinuidades. c) Obtener la grfica de las funciones seno y coseno, introducindolas como funciones y sin especificar el intervalo. Usar la opcin color=[blue,red], para que aparezca la grfica del seno en azul y la del coseno en rojo. d) Dibujar el cuadriltero de vrtices: (-2,2),(-1,0),(0,-1),(1,3). Solucin a) Para dibujar la curva pedida basta ejecutar: > plot(x*sin(1/x),x=0..1/2);

b) Si escribimos como argumento tan, el sistema lo reconoce como la funcin tangente. Pero la primera grfica que obtenemos, si no especificamos el rango, no es muy ilustrativa: > plot(tan);

El sistema intenta represetnar los valores de la funcin tangente, que son muy grandes cerca de los puntos de discontinuidad. Vamos a limitar tanto el rango en el eje OX como en el eje OY: > plot(tan, -5..5, -10..10);

Ahora va estando mejor; pero aparecen lneas verticales en los puntos de discontinuidad que se pueden evitar con la opcin discont: > plot(tan, -6..6, -10..10, discont=true);

c) Las funciones seno y coseno se escriben en Maple como sin y cos respectivamente. Si no se da el rango de la variable, el sistema dibuja la grfica en el intervalo [-10,10]: > plot([sin, cos],color=[blue,red]);

c) Para dibujar el cuadriltero basta introducir como argumento de la funcin plot una lista con las coordenadas de los puntos (entre corchetes). El sistema dibujar los segmentos que unen los puntos. Por lo tanto hay que repetir al final el primer punto para que el cuadriltero aparezca cerrado. > plot([[-2,2],[-1,0],[0,-1],[1,3],[-2,2]]);

> La consulta a la pgina de ayuda de la funcin plot permitir conocer algunas de las mltiples posibilidades. El documento GRAFICAS.mws est dedicado a presentar las capacidades de Maple en relacin con las grficas tridimensionales.

6. Biblioteca de Maple
El conocimiento matemtico de Maple est implementado en las funciones de su biblioteca.

6.1 Biblioteca estndar


La biblioteca estndar contiene las funciones bsicas, que se pueden usar sin cargarlas previamente. Por ejemplo, la funcin logaritmo, ln : > ln(1);

En Biblioteca se pueden encontrar, por orden alfabtico, un buen nmero de funciones de la biblioteca estndar.

6.2 Paquetes
Un paquete es un conjunto de funciones relacionadas entre s, agrupadas bajo un nombre comn. Para que las funciones del paquete estn operativas se debe cargar antes el paquete con la instruccin with(nombre_paquete). Si slo se desea usar una de las funciones del paquete, se puede cargar exclusivamente esa funcin con la instruccin with(nombre_paquete, funcin), o bien usar directamente la funcin con el nombre indexado paquete[funcin]. Ejemplos de paquetes: student , linalg , plots , ... La relacin alfabtica de paquetes disponibles en Maple se puede encontrar en paquetes . Ejemplo 6.2.1 El paquete geometry tiene funciones geomtricas. Cargar dicho paquete y consultar la pgina de ayuda de algunas de las funciones que contiene. Usar las funciones adecuadas para cada una de las siguientes tareas: a) Definir el tringulo de vrtices A = (0,0), B = (2,0) y C = (1,3). b) Calcular el rea del tringulo ABC definido en el apartado anterior. c) Estudiar si el tringulo ABC es equiltero. Solucin Para cargar el paquete se ejecuta la instruccin: > with(geometry);

Para consultar la pgina de ayuda de una cualquiera de estas funciones, basta sealarla con el ratn y pulsar la tecla <F1>. a) La funcin triangle permite definir un tringulo. Para definir el tringulo ABC, como ya est cargado el paquete, basta ejecutar: > triangle(ABC, [point(A,0,0), point(B,2,0), point(C,1,3)]);

b) Para calcular el rea del tringulo basta ejecutar: > area(ABC);

c) La funcin IsEquilateral permite saber automticamente si un tringulo es equiltero > IsEquilateral(ABC);

> Ejemplo 6.2.2 Usar la funcin showtangent , del paquete student (sin cargar previamente el paquete) para visualizar la tangente a la curva Solucin Usamos directamente la funcin sin cargar el paquete, con el nombre indexado: > student[showtangent](sin(x)/x, x=1); en el punto de abscisa .

> Ejemplo 6.2.3

Usar la funcin implicitplot del paquete plots para obtener la grfica de la elipse Solucin Vamos a cargar slo la funcin que necesitamos: > with(plots, implicitplot);

Vemos en la pgina de ayuda, que el primer argumento de la funcin es la ecuacin de la curva a dibujar, despus hay que dar el rango de cada una de las variables. Daremos el intervalo [-2,2] para el eje de abscisas y [-3,3] para el de ordenadas. Como argumento opcional pondremos scaling=constrained para tener la misma escala en los dos ejes: > implicitplot(x^2/4+y^2/9=1, x=-2..2, y=-3..3, scaling=constrained);

>

7. Operaciones con vectores y matrices


En los archivos relativos al clculo en varias variables, muchas veces hay incluidas operaciones con vectores y matrices. Maple dispone del paquete de lgebra lineal linalg que contiene 114 funciones que realizan operaciones con vectores y matrices. Para tener activas estas funciones basta ejecutar la instruccin: > with(linalg); Warning, the protected names norm and trace have been redefined and unprotected

En las recientes versiones de Maple, han incorporado el paquete LinearAlgebra que dispone de 108 funciones. Muchas de ellas son parecidas a las del paquete anterior, pero estn implementadas de modo ms eficiente. > with(LinearAlgebra); Warning, the assigned names CrossProduct and GramSchmidt now have a global binding

Nosotros usaremos el antiguo paquete linalg, que es ms conocido. Adems este paquete dispone de funciones propias del clculo diferencial vectorial, como las que permiten calcular la matriz jacobiana, el vector gradiente, el rotacional o la divergencia, que resultan muy tiles para nuestros objetivos. Los vectores de , con los que se trabaja en un curso de Clculo en varias variables, se pueden definir en Maple sin ms que dar la lista de sus coordenadas. Pero en este caso hay que tener en cuenta que el sistema los considerar como datos de tipo lista. Para realizar algunas operaciones, especficas de vectores, ser necesario usar la funcin evalm . Un vector Maple es un array unidimensional cuyos ndices empiezan en 1. Para definir un vector de modo que Maple le reconozca esta estructura, se puede usar la funcin array o bien la funcin vector del paquete linalg. Tambin se pueden definir vectores usando la paleta de vectores que se encuentra en el men de View, eligiendo el icono correspondiente a la dimensin adecuada y sustituyendo las interrogaciones por los datos.

Ejemplo 7.1
a) Definir los vectores y . Obtener el vector y el vector .

b) Calcular el producto escalar y el vectorial de u por v. c) Calcular la norma eucldea de ambos vectores. Solucin a) Introducimos los vectores dando la lista de sus coordenadas: > v:=[1,2,3]: > u:=[a,b,c]: El vector > z:=2*u+v; es:

Si intentamos obtener de la misma forma, vemos que Maple deja la operacin indicada. Si queremos completarla podemos usar evalm: > t*u+(1-t)*v;

> evalm(%);

Ahora los definimos usando la paleta: > v:=<1 | 2 | 3>;

> u:=<a | b | c>;

> 2*u+v;

> t*u+(1-t)*v;

> evalm(%);

b) El producto escalar en Maple se hace con la funcin dotprod y el producto vectorial con crossprod . > dotprod(u,v);

> crossprod(u,v);

c) La norma eucldea de un vector u se puede calcular con la instruccin norm(u,2): > norm(u,2);

> norm(v,2);

> > Para definir una matriz se puede usar la funcin matrix o bien usar la paleta que se encuentra en el men de View, eligiendo el icono correspondiente a la dimensin adecuada y sustituyendo las interrogaciones por los datos. Tambin se puede usar la funcin array .

Ejemplo 7.2

Definir las matrices determinante de la matriz producto. Solucin

. Calcular el producto de ambas y el

Definimos la matriz A con la funcin matrix y B con la paleta: > A:=matrix(3,3, [[1,-1,0],[4,0,1],[2,1,1]]);

> B:=<<a | b | c> , <1 | a | c> , <-a | x | y>>;

Para multiplicar las dos matrices podemos usar la funcin multiply : > multiply(A,B);

Hallamos el determinante de esta matriz, usando la funcin det : > det(%);

>

Ejemplo 7.3
Definir una matriz cuadrada de orden 4 de modo que el elemento que ocupa la fila i y columna j sea . Solucin Para definir la matriz vamos a usar matrix y vamos a dar como tercer argumento la siguiente funcin: > f:=(i,j)->i+j: > matrix(4,4,f);

>

8. Una introduccin a la programacin con Maple


Veremos las dos intrucciones bsicas de programacin en el lenguaje de Maple (bucles y seleccin) y a continuacin veremos cmo definir procedimientos.

8.1 Bucles y seleccin


Bucles Un bucle consiste en repetir algunas instrucciones para distintos valores de una variable. La sintaxis general del bucle de Maple es: for variable from inicio by paso to fin while condicin do cuerpo od; Existe adems otra posibilidad: for variable in expresin while condicin do cuerpo od; Con esta sintaxis el cuerpo se ejecuta sobre cada uno de los operandos de expresin mientras la condicin se cumpla. Observaciones: Todos las clasulas son opcionales salvo do y od. Los valores por defecto de inicio y paso son 1. La clasulas from, by, to y while pueden aparecer en cualquier orden. El cuerpo est formado por una cadena de instrucciones que se ejecutan una a una ordenadamente. El test de terminacin se realiza justo antes de la iteracin. Por ello despus de ejecutar el bucle la variable tiene asignado el valor siguiente al correspondiente a la ltima ejecucin. El cierre od se puede sustituir por end do.

Ejemplo 8.1.1 a) Escribir un bucle que calcule las cinco primeras derivadas de valor que le queda asignado tras su realizacin. . Quitar a la variable del bucle el

b) Escribir un bucle que acumule suma de nmeros de la lista [1,2,3,4,5] mientras dicha suma sea menor que 10. Solucin a) Calcularemos la derivada de orden n para n desde 1 hasta 5 > for n to 5 do diff(sin(x^2),x$n) od;

Podemos comprobar que la variable contador tiene asignado el valor 6 > n;

> n:='n': b) Bucle que acumula la suma de los elementos de la lista: > suma:=0; for z in [1,2,3,4,5,6] while suma < 10 do suma:=suma+z od;

Como el test impuesto por la condicin se realiza justo antes de la ejecucin, ya no se hacen ms iteraciones porque no se cumple la condicin de que la suma sea menor que 10. En este caso, el valor que le queda asignado a la variable es: > z;

> z:='z': > Seleccin Sintaxis general: if condicin1 then accin1 elif condicin2 then accin2 ........ elif condicinN then accinN else accin(N+1) fi Observaciones: Cada condicin es una expresin booleana evaluable a true o false. Cada accin es una secuencia de instrucciones Maple que se ejecutan una a una ordenadamente Las clasulas elif son opcionales y su nmero es arbitrario. El cierre fi se puede sustituir por end if.

8.2 Definicin de procedimientos


La sintaxis general de un procedimiento Maple es proc(x_1:: t_1, x_2:: t_2,..., x_n::t_n) local ,

global ; options ; description Cuerpo # Comentarios end Parmetros: x_j son los parmetros de entrada del procedimiento t_j indica el tipo de dato del parmetro x_j (no es necesario especificarlo) Variables: Se pueden declarar variables locales y globales Opciones: remember , operator, arrow trace builtin Cuerpo: Cadena de instrucciones, que se ejecutan ordenadamente. Observaciones: Todas las clasulas son opcionales salvo proc y end. El cierre end se puede sustituir por end proc. Los procedimientos Maple son datos de tipo procedure . Las funciones definidas con el operador flecha son procedimientos bsicos, con la opcin "operator, arrow", cuyo cuerpo tiene una nica instruccin. Por ello tambin son de tipo procedure. Al efectuar una llamada al procedimiento, la salida es el resultado de la ltima ejecucin. Si se asigna una variable a nombre_del _procedimiento(parmetros), se le est asignando el valor de la salida del procedimiento. Se pueden conseguir otros efectos del procedimiento, como sacar por pantalla mensajes, grficas, etc con las funciones: print , lprint , RETURN , ERROR , WARNING En general, las grficas se incluyen como otro efecto del procedimiento y no como su salida. Esto se hace poniendo print(plot(.......)) en una ejecucin intermedia. Ejemplo 8.2.1 Escribir un procedimiento que calcule y dibuje la recta tangente a una curva en un punto

Solucin El siguiente procedimiento recibe como parmetros una funcin, de tipo procedure, y una constante real a, de tipo realcons , y devuelve como salida la recta tangente a la curva en el punto , que calcula previamente. Como otro efecto del procedimiento, se consigue la grfica de la curva junto con su recta tangente.

> tangente:= proc(f:: procedure, a:: realcons) local x,y,recta; recta:= f(a)+D(f)(a)*(x-a); print(plot({f(x), recta},x=a-2..a+2)); print(`la recta tangente es:`); y=recta; end: Hacemos una pruebas del procedimiento: > tangente(sin,Pi);

> f:=x->x*sin(1/x): > tangente(f,1);

Si se hace una llamada al procedimiento con menos de dos argumentos, tendremos un mensaje de error. Si la hacemos con ms argumentos el sistema ignora los parmetros a partir del tercero. > tangente(f); Error, (in tangente) tangente uses a 2nd argument, a (of type realcons), which is missing > tangente(f,Pi,0);

Llamadas con tipos de datos incorrectos: > tangente(sin(x),0); Error, invalid input: tangente expects its 1st argument, f, to be of type procedure, but received sin(x) El primer argumento debe ser una funcin y hemos introducido una expresin. Deberamos haber puesto: > tangente(sin,0);

Si el segundo parmetro no es una constante real tambin dar error: > tangente(sin,x); Error, invalid input: tangente expects its 2nd argument, a, to be of type realcons, but received x Podemos tener tambin una salida con un mensaje de error cuando el sistema no pueda calcular la tangente porque la funcin no sea derivable en el punto:

> tangente(x->sin(1/x),0); Error, (in unknown) numeric exception: division by zero Resultados inesperados: Si pedimos la tangente a la funcin en , cabe esperar que nos dijera que -1 no est en el dominio de la funcin logartmica. Pero no es as, porque Maple trabaja con logaritmos complejos: > tangente(ln,-1);

Ejemplo 8.2.2 Escribir un procedimiento que a partir de una funcin real de variable real suficientemente derivable, f, y un valor a decida si la funcin tiene un punto crtico en y, en caso afirmativo, determine su naturaleza usando el criterio de la derivada segunda. En caso de que se anulen las dos primeras derivadas, el procedimiento deber devolver un mensaje indicando que el mtodo no decide si f tiene extremo en . Solucin Llamamos al procedimiento Extremo. Sus parmetros de entrada sern una funcin f (que supondremos de tipo procedure aunque no lo especifiquemos) y un valor a.

En el cuerpo del procedimiento se calcular f '(a). Si se obtiene un valor distinto de cero el procedimiento terminar con un mensaje indicando que no hay punto crtico en . En caso contrario se estudiar el signo de la derivada segunda. > Extremo:= proc(f,a) local dprimera, dsegunda; dprimera:=D(f)(a); if simplify(dprimera)<>0 then RETURN(`No hay punto crtico en x`=a); else dsegunda:=D(D(f))(a); if evalf(dsegunda)<0 then print(`Hay un mximo relativo en x`=a) elif evalf(dsegunda)>0 then print(`Hay un mnimo relativo en x`=a) else print(`El mtodo no decide si f tiene extremo en x`=a); fi; fi end: Nota: para la comparacin necesaria para saber si la derivada segunda es positiva o negativa hemos puesto un evalf porque al calcular la derivada puede salir un nmero algebraico y, sin aproximar, Maple puede no ser capaz de saber si es positivo o negativo. Pruebas del procedimiento: > f:=x->x^2+3: > plot(f);

> Extremo(f,0);

> Extremo(f,1);

> f:=x->x*exp(x): > plot(f,-2..1);

> Extremo(f,-1);

> Extremo(f,0);

> f:=x->3*x^4-16*x^3+8: > Extremo(f,0);

> Extremo(f,4);

> > plot(f,-2..2);

> Extremo(f, (1+sqrt(5))/2);

Como no hemos declarado los tipos de dato de los parmetros de entrada Maple admite datos de cualquier tipo y, si puede, trabaja con ellos. Pero si son incorrectos pueden dar lugar a resultados errneos: > Extremo(cos(x),0);

El mtodo intenta derivar la expresin > D(cos(x))(0);

como si fuera una funcin y lo que le sale no es 0:

Deberamos haber puesto: > Extremo(cos,0);

El procedimiento devuelve que a no es punto crtico si la derivada de f en a le sale cualquier cosa que no se identifique con 0. Por ejemplo si la funcin no es derivable en a: > Extremo(abs(x),0);

> Un procedimiento se puede definir sin argumentos. sta es la forma de hacer procedimientos que admitan argumentos opcionales. Si un procedimiento se define sin argumentos para hacer referencia en su interior a los parmetros de entrada se usarn las variables args y nargs . Ejemplo 8.2.3 Escribir un procedimiento denominado Primos tal que la llamada Primos(N), donde N es un nmero entero, devuelva el nmero de nmeros primos menores que N , mientras que la llamada con ms de un argumento devuelva el nmero anterior junto con una lista con todos los primos menores que N. Solucin Para chequear si un nmero es primo se puede usar la funcin isprime . Definiremos el procedimiento sin argumentos. En el interior definiremos una variable local N a la que asignaremos el primer argumento. Incluiremos un control que compruebe que N es un entero positivo. Con un bucle desde 1 hasta N construiremos la lista de primos. Si el nmero de argumentos es mayor que 1 se imprimir la lista y en otro caso slo saldr el nmero de elementos de dicha lista. Usaremos print para incluir algunos mensajes de salida. > Primos:=proc() local j,N,L; N:=args[1]: if is(N, posint)<>true then ERROR(`El parmetro debe ser un entero positivo`) fi; L:=[]; for j to N do if isprime(j)= true then L:=[op(L),j] fi od: if nargs>1 then print(`Lista de primos menores que `||N); print(L) fi; print(`Nmero de primos menores que `||N); nops(L); end:

Nota: El operador || que se ha usado en el interior de las instrucciones print es el operador de concatenacin. A continuacin, hacemos algunas pruebas del procedimiento: > Primos(-15); Error, (in Primos) El parmetro debe ser un entero positivo > Primos(57);

> Primos(57,0);

> Primos(543,a,b,c);

9. Algunos errores frecuentes


Un sistema tan complejo como Maple puede sorprender en ocasiones actuando de modo diferente al esperado. Casi siempre la causa es alguna accin anterior del usuario y que, en este momento no tiene bajo control. Para ayudar a detectar y, en la medida de lo posible, evitar estos errores incluimos aqu un pequeo catlogo de situaciones que, con mucha frecuencia, dan lugar a errores

Olvidar los separadores de sentencias


Las instrucciones en Maple se deben finalizar siempre en punto y coma o en dos puntos (segn se quiera ver o no por pantalla el resultado). Si pulsamos <Intro> sin haber escrito alguno de esots smbolos, Maple no relaizar el clculo correspondiente y dar un mensaje de aviso: > 23^48 > Warning, premature end of input Si ponemos dos instrucciones en la misma lnea sin poner un separador entre ellas, tambin obtendremos un mensaje de error > diff(x^2,x) int(x^2,x); Error, missing operator or `;` >

Intentar usar una funcin o un dato sin que estn definidos


Por ejemplo, si en la siguiente cadena de instrucciones se ejecuta la tercera, sin haber ejecutado antes alguna de las dos anteriores, no se obtendr el resultado deseado: > f:=x->x^2+5: > a:=3: > D(f)(a);

> (No hemos ejecutado la segunda instruccin y por eso sale en lugar de 6.)

Intentar usar una funcin de un paquete sin haberlo cargado

Si tras una ejecucin Maple nos devuelve una funcin sin evaluar, puede ser porque la funcin forme parte de un paquete que no est cargado. > restart: > A:=<<1 | 2> , <3| 4>>;

> det(A);

No se calcula el determinante porque la funcin det forma parte del paquete linalg que no est cargado. Para conseguir la evaluacin, basta cargar el paquete o bien usar la funcin con el nombre indexado: > linalg[det](A);

>

Usar una variable que tiene una asignacin previa


ste es uno de los errores ms frecuentes. Si en un momento notamos un resultado extrao en alguna instruccin en la que intervenga un parmeto, conviene mirar a ver si le tenemos algn valor asignado (incluso aunque se haya borrado la instruccin de asignacin, sta permanece en memoria en el sistema ). A veces el mensaje de error no es totalmente esclarecedor respecto a cul es el parmetro que tiene un valor asignado. Por ejemplo ante una situacin como la siguiente: > f:=x->A^x: > D(f)(1); Error, (in D/procedure) invalid input: ln expects its 1st argument, x, to be of type algebraic, but received Matrix(2, 2, [[...],[...]], datatype = anything, storage = rectangular, order = Fortran_order, shape = []) podemos pensar que la variable x o el parmetro A tengan algn valor asignado. Podemos identificar el problema pidiendo a Maple que evale ambas cosas: > x;

> A;

Vemos que el parmetro tiene asignada una matriz. A pesar de que el mensaje de error habla de x, se refiere a la variable de su procedimiento D.

Confundir expresiones y funciones


Para Maple una funcin es un procedimiento (que por tener una nica instruccin se puede definir con el operador flecha). Una expresin algebraica no se puede evaluar como si fuera una funcin: > f:=1/(x^2+1): > f(3);

Una funcin no se puede tratar como si fuera una expresin: > g:=x->x^2: > plot(g, x=-2..2); Error, (in plot) invalid plotting of procedures, perhaps you mean plot(g,-2 .. 2) > diff(g,x);

Olvidar que no es lo mismo mayscula que minscula


El sistema distingue entre maysculas y minsculas. Para muchas de sus funciones (diff, int, sum,...) Maple dispone de la que denomina funcin inerte que se escribe con la primera letra mayscula y que se limita a escribir la instruccin, sin hacer el clculo. > int(x^2,x);

> Int(x^2,x);

> Diff(x^2,x);

El nmero se debe escribir Pi. Si se pone la p minscula Maple lo tomar como un smbolo ( ) o como la funcin pi del paquete numtheory . > sin(pi),sin(Pi);

> > >

You might also like