Manaul de Maple 13

8
Tutorial para usar maple Aquí se explican las herramientas más importantes que pueden usar en este excelente programa de matemáticas: Asignación a variables: := , unassign , restore, assume var := comando maple; Se evalua el comando maple y la expresión que resulta es asignada a la variable var assume(x>a); assume(n,integer); assume(z,real) Son ejemplos de assume. Para mayor información ejecute ?assume; unassign('var'); "borra" todo lo que se conoce acerca de la variable var, incluyendo las restricciones impuestas con el comando assume. De este modo, ella puede ser usada sin restricciones más adelante. Las comillas ' ' son fundamentales. restore; reinicializa todas las variables que se hayan ocupado "borrando" todo lo que se conoce sobre ellas. Es equivalente a aplicar unassign('var') a cada variable var que se haya ocupado. Aproximaciones decimales: evalf Digits:= N; Define que de ahora en adelante se ocupa aritmética decimal con N dígitos significativos. Al iniciar Maple Digits vale 10 evalf( expr) Evalúa la expresión en artimética decimal con N dígitos sgniticativos, donde N es el valor que tiene la variable Digits. evalf(expr,N) Evalua la expresión expr en aritmética decimal con N dígitos significativos. Algebra: los comandos expand, combine, simplify, factor, normal, coeff, quo, rem.

Transcript of Manaul de Maple 13

Page 1: Manaul de Maple 13

Tutorial para usar maple

Aquí se explican las herramientas más importantes que pueden usar en este excelente programa de matemáticas:

Asignación a variables: := , unassign , restore, assume

var := comando maple; Se evalua el comando maple y la expresión que resulta es asignada a la variable var

assume(x>a); assume(n,integer); assume(z,real) Son ejemplos de assume. Para mayor información ejecute ?assume;

unassign('var'); "borra" todo lo que se conoce acerca de la variable var, incluyendo las restricciones impuestas con el comando assume. De este modo, ella puede ser usada sin restricciones más adelante. Las comillas ' ' son fundamentales.

restore; reinicializa todas las variables que se hayan ocupado "borrando" todo lo que se conoce sobre ellas. Es equivalente a aplicar unassign('var') a cada variable var que se haya ocupado.

Aproximaciones decimales: evalf

Digits:= N; Define que de ahora en adelante se ocupa aritmética decimal con N dígitos significativos. Al iniciar Maple Digits vale 10

evalf( expr) Evalúa la expresión en artimética decimal con N dígitos sgniticativos, donde N es el valor que tiene la variable Digits.

evalf(expr,N) Evalua la expresión expr en aritmética decimal con N dígitos significativos.

Algebra: los comandos expand, combine, simplify, factor, normal, coeff, quo, rem.

expand( expresion); Expande la expresión desarrollando potencias de binomios, distribuyendo productos con sumas, o expandiendo fórmulas trigonométricas, etc..

combine( expresion); aplicado a ciertas expresiones realiza la operación inversa de expand

simplify(expresion); aplica las reglas de simplificación que cumplen las funciones típicas trigonométricas, exponenciación, logaritmos, polinomios, etc.. La noción que Maple tiene de una expresión simplificada es con toda probabilidad diferente de la que Ud. tiene, la que es a su vez diferente de la de su vecino.

Page 2: Manaul de Maple 13

factor(polinomio); factoriza el polinomio en factores con coeficientes enteros , racionales.

factor(polinomio,real); factoriza el polinomio en factores con coeficeintes reales usando aritmética de punto flotante.

factor(polinomio,complex); factoriza el polinomio en factores lineales complejos usando aritmética de punto flotante.

normal(expresion); obtiene una expresión en la forma denominador/numerador, con términos comunes simplificados.

coeff( expresion ,x^k); obtiene el coeficiente de x^k en la expresion, siempre que ésta sea una suma de pontencias de x.

q:= rem(a,b,x); r:= rem(a,b,x);

Si a,b son polinomios, q es el cuociente de a dividido por b y r es el resto de a dividido por b. El resto y el couciente satisfacen a= b*q+r, donde grado(r) < grado (b)

Expresiones versus procedimientos: ->, proc(), subs(), unapply()

Las funciones matemáticas pueden representarse en Maple mediante expresiones y/o procedimientos.

f:= x -> expr define un procedimiento que asigna a cada x (input) su valor f(x) (output) que se obtiene al reemplazar el valor de x en la expresión expr

r:= expr asigna a la variable r la expresión dada.

subs( {x=a},expr) retorna la expresión expr donde x es reemplazado por el valor de a.

subs( {x=a,y=b},expr) retorna la expresión expr donde x es reemplazado por el valor de a, y es reemplazado por el valor de b

subs( {eq1,eq2,.., eqk}, expresion); donde eq1, eq2, ... eqk, son reglas de substitución.

unapply(expr,x) retorna el procedimiento x->expr

func:= proc(x) ...... end proc define un procedimiento que asigna a cada x(input) el resultado func(x) (output) (es alternativo a usar el operador -> )

Ejemplos:

Podemos definir el procedimiento maple f:= x-> x^2;

Page 3: Manaul de Maple 13

Para evaluar f en x=2 hacemos: f(2); Si tenemos una expresión r:= x^2; e intentamos r(2) resulta un sin sentido r(2); Para reemplazar x por x=2 en una expresión usamos el comando subs (por substitute) subs({x=2},r); r; El comando subs(), permite entonces reemplazar variables por valores sin alterar el valor de la expresión original. Podemos reemplazar más de una variable el mismo tiempo, subs({x=2,y=1},x^2+y^2);

Una alternativa a substituir es construir un procedimiento con unapply y luego usar el procedimiento: g:= unapply(r,x); g(2);

Si el procedimiento que define a una función es muy complicado es preferible definirlo usando proc().

La siguiente función determina los valores de y tal que x*exp(y)=y para un valor de x dado. func:= proc(z) local eq1; eq1:=subs(x=z,x*exp(y)=y); solve(eq1,y); evalf(%); end proc;

func(0.367879441); exp(-1.0);

Gráfico de funciones y curvas en el plano plot( f(x), x=a..b); Grafica a y=f(x) en el intervalo [a,b]. El rango y escala del eje Y se ajusta automáticamente

plot ( f(x) , x=a..b, scaling=constrained); Idem que el anterior pero las escalas en los ejes X a Y están en relación 1:1.

plot ( f(x) , x=a..b, y=c..d); Muestra la porción del gráfico de y=f(x) que yace en el rectángulo a <= x <= b, c<= y <= d.

plot( f(x), x=a..b, view=[x1..x2,y1..y2]) Muestra la porción del gráfico de y=f(x) para a <= x <= b pero enmarcado en una ventana con x1 < x < x2, y1 < y < y2.

plot ( f(x) , x=a..b, y=c..d, discont=true); Idem que el anterior, pero se usa cuando f es discontínua (y f no toma valores complejos)

plot( f(x), x=a..b, y=c..d, discont=true, color=COLOR); Idem que el anterior donde y=f(x) se grafica con color COLOR, donde COLOR puede ser red, blue, green, cyan, magenta, etc...

plot( [f(x),g(x), h(x)] , x=a..b, y=c..d,discont=true, color=[red,blue,cyan]);

Page 4: Manaul de Maple 13

Idem que en el anterior pero se grafican las tres funciones f,g,h al mismo tiempo en colores red,blue, cyan respectivamente.

plot( [x(t), y(t) , t=a..b], color=red ); grafica los puntos (x(t),y(t)) en el plano XY cuando t varía desde a hasta b.

plot( [x(t), y(t) , t=a..b], color=red, scaling=constrained) ); Idem que el anterior, pero las escalas en los ejes X,Y están en relación 1:1. (equivalente a presionar el botón 1:1 en la barra de menú del gráfico).

Más Gráficos: with(plots), implicitplot, animate, animatecurve, display.

with(plots)Activa al paquete plots donde se encuentran las rutinas, display, implicitplot, textplot, etc....

implicitplot( f(x,y)=g(x,y), x=a..b,y=a..b,numpoints=N) Grafica la porción de la curva definida implicitamente por la ecuación f(x,y)=g(x,y) que yace en el rectángulo a<=x <=b, c<=y<=d.. N es el número de veces que resuelve la ecuación implícita para construir el gráfio.

animate( { f(x), g(x,h)}, x=a..b, h=h1..h2, nframes); Crea una animación donde en cada cuadro se grafica a las funciones f(x), g(x,h) en el intervalo [a,b], con h variando desde h1 hasta h2 con un incremento de h2 - h1 ----------- nframes - 1 . En total hay nframes cuadros.

animatecurve( [x(t), y(t),t=t1 .. t2], view=[a..b , c..d], color=red); Crea una animación que genera una curva a partir de una parametrización x(t), y(t) de ella cuando el parámetro t varía desde t1 hasta t2.

p1:= plot( f(x), x=a..b): Guarda en la variable p1 el gráfico de y=f(x), el cual puede ser desplegado mediante el comando display(p1). Note que la única manera en que el gráfico puede ser desplegado es mediante el comando display. Es conveniente terminar el comando con : en vez de ; para evitar ouput indeseable.

display(p1,p2,p3); Grafica los gráficos guardados en las variables p1,p2,p3

display( sucesión o lista de de variables con gráficos); Muestra en un mismo gráfico los gráficos guardados en las variables.

display( sucesión o lista de de variables con gráficos, insequence=true); Muestra cuadro a cuadro los gráficos en la lista creando una animación.

Gráficos 3D Comandos genéricos para curvas y superficies

with(plots); Inicializa el paquete plots que permite ocupar varias rutinas para despliegue de gráficos.

spacecurve( [x(t), y(t), z(t)], t=a..b); Grafica la trayectoria o curva que siguen los puntos [x(t),y(t),z(t)] cuando t varía desde t=a hasta t=b (requiere el paquete plots)

Page 5: Manaul de Maple 13

plot3d( [x(u,v), y(u,v) , z(u,v) ], u=a..b, v=c..d ); Grafica la superficie que generan los puntos de la forma [x(u,v), y(u,v) , z(u,v) ] cuando u varía en el intervalo [a,b] y v en el intervalo [c,d].

Solución de ecuaciones, sistemas de ecuaciones: fsolve,solve

fsolve( f(x)=g(x), x=a..b); Calcula por métodos numéricos UNA solución de f(x)=g(x) en el intervalo [a,b], CON LA EXCEPCION del caso en que f(x), g(x) sean polinomios, donde encuentra TODAS las raices reales en el intervalo [a,b]

fsolve( f(x)=g(x), x=a) busca por métodos numéricos UNA solución de f(x) = g(x) comenzando la búsqueda en x=a. No necesariamente encuentra la solución más cercana a x=a.

fsolve( p(x),x); Determina aproximaciones decimales a todas las raices reales del polinomio p(x).

fsolve( p(x),x,complex); Determina aproximaciones decimales a todas las raices, incluyendo las complejas, del polinomio p(x)

solve( f(x)=g(x), x). Si f, g son polinomios, encuentra todas las raices, en otros casos intenta encontrar tantas soluciones como pueda mediante reducciones algebraicas. Si no encuentra soluciones ya sea por que no hay o por que no pudo encontrar, retorna NULL, es decir "nada".

solve( f(x)< g(x), x) Intenta resolver la inecuación mediante reducciones algebraicas (cálculo simbólico).

solve( conjunto de ecuaciones, conjunto de variables) intenta resolver mediante manipulaciones algebraicas el sistema de ecuaciones con respecto a las variables indicadas. Cuando tiene éxito, retorna una sucesión de reglas de substitución (para ser ocupadas con el comando subs) . CUIDADO: solve puede no encontrar todas las soluciones existentes de un sistema de ecuaciones no lineales.

Ejemplos

regla:=solve({y=x+2,y=2*x-4},{x,y}); Podemos ocupar la solución con el comando subs x0:=subs(regla,x); y0:= subs(regla,y); subs(regla, (x^2+y^2+1)/ (x+y)); Podemos determinar los puntos de intersección de la recta y=x+2, con la circunferencia x^2+y^2=4 suc_reglas:=solve( {y=x+2,x^2+y^2=4},{x,y}); La primera solución es x1:=subs(suc_regla[1],x); y1:= subs(suc_regla[1],y); Podemos evaluar expresiones que involucaran a cualquiera de las soluciones directamente subs(suc_regla[2],x^2-y^2);

Page 6: Manaul de Maple 13

Para resolver un sistema de 3 ecuaciones con 3 incongnitascomo este x+y+z=1, x-y-z=2, 2*x+3*y-2*z=3 hacemos: regla3:=solve({x+y+z=1, x-y-z=2, 2*x+3*y-2*z=3},{x,y,z}); Podemos reemplazar estos valores en cualquiera expresión subs( regla3,x^2-y+z);

Estructuras de datos, (expresión) sucesión, lista, conjunto, tabla: [ s], {s}, nops(s) , op(s) , seq(s) , s[n] , map(f,s)

Para agrupar varios datos en una misma variable, se puede usar una de las siguientes estructuras de datos: (expresión) sucesión, lista, conjunto, tabla.

exp1, exp2, ... , expn Es la sucesión formada por las expresiones exp1, exp2, etc. En general, expresiones separadas por comas definen a un sucesión. Las expresiones pueden ser de distintos tipos.

[s] Es la lista formada por los elementos de la sucesión s. En general, si s es una sucesión entonces [s] es una lista.

{s} Es el conjunto formado por los elementos de la sucesión s. En general, si s es una sucesión. entonces {s} es un conjunto. En maple un conjunto emula al concepto matemático de conjunto: elementos repetidos se eliminan y el orden de los elementos no importa. .

T[algo]:=valor; Si T no es una lista , crea la tabla T con una entrada. Con asignaciones adicionales del tipo T[indice]=valor se agregan elementos a la tabla T.

s[k] el elemento k-ésimo de la lista o conjunto s,

T[algo] Si T es una tabla, valor asociado a "algo" en la tabla.

nops(s) el número de elementos de la lista o conjunto s.

op(s) la sucesión con los elementos del conjunto o lista s (le quita los paréntesis a s)

seq( a(n), n=n1..n2 ) la sucesión a(n1), a(n1+1), a(n1+2), .... a(n2).

[ seq ( (a(n), n=n1..n2 ) ] la lista con los elementos a(n1), a(n1+1), ... , a(n2)

{ seq ( (a(n), n=n1..n2 ) } el conjunto con los elementos a(n1), a(n1+1), ... , a(n2). Elementos repetidos se eliminan.

map(f,s) la lista o conjunto que se obtiene de aplicar una función f a cada elemento de la lista o conjunto s

Ejemplos:

sucesion:=1,4,2,10,9,1,-4; lista:= [sucesion]; conjunto:= {sucesion}; op(conjunto); op(lista); nops(lista) , nops(conjunto);

Page 7: Manaul de Maple 13

f:= x-> x^2; map(f,lista);map(f,conjunto); seq( k^2,k=1..5); datos:= [ [1,2], [3,4], [5,6]]; datos[2]; datos[2][1];

Una tabla consiste en una asociación entre valores de un índice y expresiones. Las tablas se definen en forma dinámica. T[1]:= 3; T[4]:= 2; T[cabeza_de_pescado]:= cola_de_pescado; op(T);