Operaciones básicas con MAPLE

Anuncio
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE
HUIXQUILUCAN
Sesion # 1
Funciones Básicas de MAPLE
Dr. Ildebrando Pérez Reyes
"Maple is a trademark of Waterloo Maple Inc."
"The computations in this paper were performed by using Maple(TM)."
Iniciando con MAPLE. Sintaxis del software
Se recomienda que siempre al inicar una Hoja de Trabajo (Worksheet) después del título se
introduzca el comando "restart".
Despues de cada comando u operación es necesario agregar ";" o ":". Los dos puntos ocultan el
resultado "output" de la operacion que es util cuando se trabaja con expresiones muy grandes. De
otra manera el software no ejecuta el comando u operación.
> restart;
El comando "restart" tiene limpia o borra de la memoria todas las asignaciones realizadas en
la hoja de trabajo.
La acción de asignar valores numéricos o expresiones algebraicas bajo un nombre, letra o
combinacion de ellas se hace a través de ":=".
El uso del signo "=" también es aceptado pero el valor numérico o expresión algebraica no queda
asignado ni registrado en la memoria. Como ejemplo vea lo siguiente
> a:= 4;#Los comentarios son tambien aceptados con la condición
de escribir # antes de cada uno.
(1.1)
> a;
4
(1.2)
en cambio cuando se usa "=" se tiene
> b=4;
(1.3)
> b;# Vease que no ocurrió asignación del valor 4 a b.
b
(1.4)
Notese ahora que después del comando "restart", todas las asignaciones son borradas
> restart;
> a;
a
(1.5)
Nótese que también es posible escribir varios comandos en un mismo apartado o "execution group"
siempre y cuando queden separados por sus respectivas ";" o ":". Véase el siguiente ejemplo:
> 1*2; 2*2;3*3;# Los comandos pueden estar separados por espacios
o no.
2
4
9
(1.6)
> 1*2;
2*2;
3*3;#Cada comando puede ser escrito en una diferente linea para
mejor visualización. Para ello use "SHIFT + ENTER"
2
4
9
(1.7)
Las operaciones básicas se realizan a traves de los signos comunes a diversos lenguajes de
programación como sigue
>
>
>
>
>
>
>
#SUMA
#RESTA
#MULTIPLICACION
#DIVISION
#POTENCIACION
#RAIZ CUADRADA
#RADICACION
"
"
"
"
"
"
"
+ "
- "
* "
/ "
^ " o bien "**"
sqrt() " o bien " ^(1/2) " o bien " **(1/2) "
^(1/2) " o bien " **(1/2) "
Otras operaciones que involucran funciones trigonométricas, hiperbolicas o te otro tipo tambien
están disponibles. Debe tenerse en cuenta que el software esta pensado para personas de habla
inglesa asi que los comandos deben introducirse en ingles. Ejemplos de ellos son:
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
#SENO
o SINE
" sin() "
#COSENO
o COSINE
" cos() "
#TANGENTE
o TANGENT
" tan() "
#SECANTE
o SECANT
" sec() "
#COTANGENTE o COTANGENT
" cot() "
#COSECANTE o COSECANT
" csc() "
################################
#SENO HIPERBOLICO
o HYPERBOLIC SINE
" sinh()
#COSENO HIPERBOLICO
o HYPERBOLIC COSINE
" cosh()
#TANGENTE HIPERBOLICA
o HYPERBOLIC TANGENT
" tanh()
#SECANTE HIPERBOLICA
o HYPERBOLIC SECANT
" sech()
#COTANGENTE HIPERBOLICA o HYPERBOLIC COTANGENT
" coth()
#COSECANTE HIPERBOLICA
o HYPERBOLIC COSECANT
" csch()
################################
#EXPONENCIAL
o EXPONENTIAL
" exp() "
#LOGARITMO NATURAL
o NATURAL LOGARITHM
" ln() "
#LOGARITMO DE BASE b o LOGARITHM OF BASE b
" log[b]() "
"
"
"
"
"
"
Es imortante señalar que las combinaciones de teclas o "shorcuts" para copiar, pegar y cortar son
los de softwares en ingles:
>
>
>
>
#
#
#
#
COPIAR
PEGAR
CORTAR
GUARDAR
"
"
"
"
CTRL
CTRL
CTRL
CTRL
+
+
+
+
c
v
x
s
"
"
"
"
Funciones definidas por el usuario
Es posible definir funciones en MAPLE como sigue:
> f:=x->x**2-1;
(2.1)
en donde se ha definido una función que tiene a x como variable independiente. En otras palabras la
función es equivalente a f(x) =
Que es como comúnmente se escribe en el papel.
De esta manera se pueden construir otras funciones como la siguiente
> g:=y->cos(y)+1;
(2.2)
La utilidad es que ayuda a realizar muchos otros cálculos, como el de evaluar directamente la
función en un valor dado. Tambiém será útil para cálculos de límites, derivadas, integrales,
ecuaciones diferenciales, etc.
Como primer ejemplo, evaluemos la función f(x) defnida arriba en x=8,5,0,
> f(8);
f(5);
f(0);
63
24
(2.3)
> g(Pi);
g(180.);
g(0);
0
0.4015399309
2
(2.4)
Operaciones básicas con MAPLE
MAPLE es un software capaz de realizar manejo algebraico de expresiones matemáticas y de
realizar muy diversos cálculos numéricos en corto tiempo. Por otro lado, dentro de sus funciones
tambien estan incluidas las graficas.
Operaciones básicas: suma, resta, multiplicacion y division
Consideremos primero los casos numéricos:
> 1+2;
2+8;
3+6+9;#Suma de números enteros
3
10
18
(3.1)
> 1/3+2/3;
1/9+8/3+4/5;#Suma de números fraccionarios
1
161
45
> 1/2 + 3 + 8/9+5;#Combinaciones de números enteros y
fraccionarios
169
18
(3.2)
(3.3)
> 1/2 - 1/2 + 1;#Suma y resta
1
(3.4)
> 1/2 - 1/2 - 1;#Suma y resta. MAPLE reconoce números negativos
(3.5)
> 2*1/2-1;#Incluyendo multiplicación
2*(1/2)-1;#El uso de los parentesis es opcional.
0
0
(3.6)
> 3*(1/2-4)+2;#Cuando se trata de 2 o mas términos es necesario
usar paréntesis
(3.7)
Consideremos ahora los casos algebraicos
> a+b;
a+b-c;
(3.8)
> a/b-c/d-4*a;
(3.9)
> 2*a/b + 8/3*a/b - 5*a/b;
(3.10)
> (a/b) / (a/b);
1
(3.11)
> 2*x/8-x**2/y+x*y/2;
(3.12)
> x/y*x/y + x/y;
(3.13)
Operaciones algebraicas
Como evaluar con eval, evalf, subs
Debe aceptarse por el usuario que los tres comandos eval, evalf y subs pueden hacer lo
mismo, cambiando únicamente su sintaxis y algunos detalles.
eval
Este comando es el que en el sentido estricto de la palabra, junto con evalf, debe ser usado
para evaluar. Este comando se deriva de la plabra EVALUATE y puede evaluar de manera
simbolica como si fuera una sustitución y ejecutar el valor dado. Consideremos la siguiente
expresión:
> Ra:= 720*(k^2+2*k)/Biot/k^3;
(3.1.1)
evalúese solo para Biot=2
> Ra00:= eval(Ra,Biot=2);
(3.1.2)
y en el caso de evaluar a k=5 también se puede agregar una lista como sigue
> Ra01:= eval(Ra,[Biot=2,k=5]);
(3.1.3)
Pero tómese en cuenta que a pesar de haber evaluado, si el usuario necesita un número decimal
en vez de una fracción, el comando falla y tendríamos que usar una calculadora. Para rodear este
obstáculo basta con agregar un punto decimal después del 2 o bien después del 5 para que
MAPLE lo considere como decimal en todo el algoritmo
> eval(Ra,Biot=2.);
(3.1.4)
> eval(Ra,[Biot=2,k=5.]);
eval(Ra,[Biot=2.,k=5]);
100.8000000
100.8000000
(3.1.5)
evalf
El objetivo de evalf es el mismo que el de agregar un punto decimal después de algún número;
pero cuando se trata de expresiones más grandes y de operaciones en donde el manejo del "error"
es importante, este comando es de gran ayuda. Su nombre deriva de EVALUATE FLOATING,
es decir usar punto flotante para evaluar o simplemente decimales. Compárese con el ejemplo
anterior de Ra
> evalf(eval(Ra,Biot=2));
(3.1.6)
> evalf(eval(Ra,[Biot=2,k=5]));
100.8000000
504
5
subs
(3.1.7)
Muchos usuarios emplean mal este comando. Su nombre proviene de SUBSTITUTION y su
sintaxis es como sigue subs(lista,expresión). Este comando está pensado para realizar
sustituciones de tipo algebraico o simbólico sin tomar en cuenta precisión decimal; aunque de
hecho puede hacer lo mismo que eval. Por ejemplo, consideremos
> Ra;
(3.1.8)
y que en vez de asignar un valor numérico a Biot, deseamos expresarlo en términos de k como
sigue
> Biot0:= 2/3*k;
(3.1.9)
Entonces, usando subs tenemos
> Ra02:= subs(Biot=Biot0, Ra);
Ra03:= subs(Biot=2/3*k, Ra);
(3.1.10)
Pero nótese que tambien sirve para evaluar numéricamente
> Ra04:= subs(Biot=2/3.*k, Ra);
Ra04:= subs(Biot=2./3*k, Ra);
(3.1.11)
Nótese la siguiente comparacion entre subs y eval
> subs(y=0, sin(y));
eval(sin(y), y=0);
0
(3.1.12)
0.
(3.1.13)
Lo idóneo sería
> evalf(subs(y=0, sin(y)));
Un caso en donde subs no funciona es el siguiente en donde se desea sustituir k^2 por K
> Nus:= 720*(k^2+2*k^4)/(Biot*k^6);
(3.1.14)
> subs(k^2=K, Nus);
(3.1.15)
El error está en que debió intercambiar k^4 por K^2 y k^6 por K^3. Para rodear este obstáculo
el usuario debe usar un poco de astucia
> subs(k=K^(1/2), Nus);
(3.1.16)
Factorización
Factorización
Consideremos un caso simple donde hay un factor comun como en la siguiente expresión
> ej00:= x^2/y^2+x/y;#La expresión quedo asignada a ej00
"ejemplo 00"
(3.2.1)
> ej00;#Esta dado de alta en la memoria
(3.2.2)
En la factorización el comando a usar es "factor()" que para expresiones mas complicadas
puede ser necesario agregar otras opciones (ver ayuda)
> factor(ej00);
(3.2.3)
Otro ejemplo:
> ej01:= x**2 + 4*x + 4;#Binomio al cuadrado
(3.2.4)
> factor(ej01);
(3.2.5)
Otro ejemplo:
> ej02:= x**2 + 5*x + 6;
(3.2.6)
> factor(ej02);#OJO Tomar en cuenta que este comando funciona
cuando las soluciones al polinomio son reales
(3.2.7)
Otro ejemplo:
> ej03:= x**2 + 2/3*x + 1/9;
(3.2.8)
> factor(ej03);#OJO Tomar en cuenta que este comando funciona
cuando las soluciones al polinomio son reales
(3.2.9)
Un caso de un polinomio cúbico:
> ej04:= x**3 + 2/3*x**2 + 1/9*x;
(3.2.10)
> factor(ej04);
(3.2.11)
Otro polinomio cúbico
> ej05:= 2*x**3 + 3*x**2 - 3*x - 2;
(3.2.12)
> factor(ej05);
(3.2.13)
Otro polinomio cúbico
> ej06:= x**3 + 2*x**2 - x - 2;
(3.2.14)
> factor(ej06);
(3.2.15)
En el caso de que se trate de una expresion que involucre funciones trigonométricas tambien
puede funcionar
> ej07:= sin(x)*cos(x) + 2*sin(x)**2*tan(2*y) - sin(x)**3*sinh
(5*x);
(3.2.16)
> factor(ej07);#Donde se factorizó el sin(x)
(3.2.17)
Solución a ecuaciones algebraicas
Solucion de ecuaciones algebraicas
MAPLE puede resolver cualquier tipo de expresiones para dar un resultado ya sea numerico o
algebraico. Considérese la expresion del ejemplo 00
> ej00;
(3.3.1)
> ej08:= ej00 = 0;#Donde se ha aignado a ej08 e igualado a 0
(3.3.2)
el comando usado para resolver o calcular las raices de la ecuacion cuadrática anterior es
"solve(expresión,incógnita)". En este caso consideraremos que "x" es la incógnita y
que "y" es una constante
> solve(ej08,x);
solve(x^2/y^2+x/y = 0,x);
solve(x^2/y^2+x/y,x);#Nótese que si no se escribe "=0" MAPLE
por default considera que la expresion está igualada a cero
siempre
(3.3.3)
Considérese ahora el ejemplo 01
> ej09:= ej01 = 0;
(3.3.4)
> solve(ej09,x);#Que es precisamente lo que se deduce de la
factorización
(3.3.5)
> solve(ej09);#Si solo hay una letra o variable, MAPLE la
considera la incógnita
(3.3.6)
Consideremos ahora una ecuación en donde el comando "factor" no funciona y cuyas raices
son imaginarias
> ej10:= x^2+4*x+5 = 0;
(3.3.7)
> factor(ej10);#El comando no pudo factorizar y devuelve la
misma expresion
(3.3.8)
> solve(ej10,x);#factor() no funciona porque las raices son
imaginarias
(3.3.9)
Consideremos la ecuación cúbica del ejemplo 05
> ej11:= ej05 = 0;
(3.3.10)
(3.3.10)
> solve(ej11,x);#Lo cual concuerda con la factorización
(3.3.11)
Consideremos una ecuación de grado 4 en donde el comando "solve" no funciona
> ej12:= x**4 - 2*x^3+3*x^2-3*x-2 = 0;
(3.3.12)
> solve(ej12);#El comando no puede hallar las raices de manera
algebraica. A partir de ecuaciones de grado 4 es muy dificil.
Para este tipo de caso se usa la versión numérica de solve
que usa tecnicas numéricas para calcular las raices
(3.3.13)
El comando es "fsolve(expresión,incógnita)" y en este caso es necesario que solo
admite una incógnita
> fsolve(ej12,x);#En este caso solo proporciona dos raices, que
son las reales. Las otras dos son complejas.
(3.3.14)
> fsolve(ej12,x,complex);#Para visualizar todas las raices
(incluyendo las complejas) se agrega la opción "complex"
(3.3.15)
Puede verificarse que las raices son correctas al sustituirlas en la ecuación original. Se usa el
comando "eval(expresión,valor a sustituir)" con la primera raiz
> eval(ej12,x=-.4245630329);
eval(x^4-2*x^3+3*x^2-3*x-2 = 0,x=-.4245630329);
(3.3.16)
Gráficas con MAPLE
Gráficas 2D
Gráficas 2D
MAPLE permite hacer graficas en 2D con el comando "plot(expresión,variable)".
Considérese el siguiente ejemplo basado enel ejemplo 00 que corresponde a una expresión
cuadrática
> y00 := ej01;#Aquí se considera la función y(x) aunque en el
programa se escribe y00
(4.1.1)
> plot(y00,x);#En donde no se la da restriccines a los valores
de x
140
120
100
80
60
40
20
0
5
x
10
Por otro lado tambien es posible dar un intervalo de graficacion para la funcion y(x) desde x=
-6 hasta x=4, por ejemplo
> plot(y00,x=-6..4);
30
20
10
0
2
x
4
tambien es posible escribir las etiquetas en los ejes x y y.Tambien se puede definir las
caracteristicas de los ejes como sigue
> plot(y00, x=-6..4, labels=[x,y(x)], axes=boxed);
30
20
y x
10
0
0
2
4
x
Considérese ahora otro ejemplo mas complicado
> y01:= x*cos(x) + 4*sin(2*x);
(4.1.2)
> plot(y01,x=-1..1, labels=[x,y(x)], axes=normal);
4
3
y x
2
1
0
1
x
Tambien se pueden graficar mas de una función en el mismo grafico. Por ejemplo graficaremos
y00 y y01 en el mismo gráfico y se les identificará
> plot([y00,y01],x=-1..1, labels=[x,y(x)], axes=normal, legend=
["y00", "y01"]);
8
6
y x
4
2
0
1
x
y00
y01
Además tambien se puede agregar un mallado que resulta muy util al tratar de dar un punto
coordenado
> plot([y00,y01],x=-1..1, labels=[x,y(x)], axes=boxed, legend=
["y00", "y01"], axis=[gridlines=[20, color=blue]]);
9
8
7
6
5
4
3
y x
2
1
0
0
x
y00
1
y01
Como graficar funciones implícitas
Obviamente se parte de una expresión implícita de dos variables. Para ello se usa el comando
"implicitplot(expresión,x=a..b,y=c..d,opciones)"; pero antes es necesario
cargar una paquetería como se muestra a continuación. Considérese entonces la siguiente
expresión implícita
> exprimpl00:= x^2+y^2=1;
(4.1.3)
> with(plots,implicitplot);
(4.1.4)
> implicitplot(exprimpl00,x=-1..1,y=-1..1);
y
0
x
> exprimpl01:= x^2-y^2=1;
(4.1.5)
> implicitplot(exprimpl01,x=-5..5,y=-5..5);
4
3
y
2
1
0
2
4
x
Se pueden consultar diversos otros ejemplos de gráficos en la Plotting Guide .
Gráficas 3D
Con MAPLE se pueden hacer gráficas 3D con el comando "plot3d(expresion, x=a..
b, y=c..d, opciones)" y se usa como sigue. Considérese la siguiente función de dos
variables
> W:= 2*x^2+4*y^2-5;#Las variables independientes son "x" y "y"
(4.2.1)
> plot3d(W,x=-1..1,y=-1..1);
Además, se pueden agregar los ejes coordenados como sigue
> plot3d(W,x=-1..1,y=-1..1,axes=boxed);#Además se pueden usar
las opciones: "frame" y "normal"
Manejo de expresiones complicadas: collect, combine,
rationalize, expand, simplify, etc.
Considérese una expresión grande y complicada, de la cual se desea obtener alguna información a
partir de los parámetros involucrados en esta
> RaG:= diff(sin(x)*cos(x)*x/tan(x),x,x,x);
(5.1)
(5.1)
Si bien es cierto, la expresión es tan grande que no permite inferir nada e incluso a primera vista
cualquier intento de simplificación con identidades trigonométricas no lleva a nada. Probemos con
el comando collect(expresión,[lista])para colectar funciones seno
> collect(RaG,[sin(x)]);
(5.2)
> collect(RaG,[sin]);
(5.3)
Probemos ahora colectando funciones coseno
> collect(RaG,[cos(x)]);
(5.4)
> collect(RaG,[cos]);
(5.5)
Nótese que no sirvió de nada. Tratemos ahora de desbaratar todas los binomios y hacer algunas
sumas y restas con expand(expresion)
> expand(collect(RaG,[cos]));
(5.6)
Por lo menos hubo un avance. Pero a veces es mejor dejar que MAPLE haga su trabajo. Usemos el
comando simplify(expresión)
> simplify(RaG);
(5.7)
UN SOLO COMANDO!!!!!!!!!
Consideremos ahora el caso de las fracciones parciales. Consideremos el siguiente caso
> yfrac00:= (s^2+6*s+9)/(s^3+s^2-10*s+8);
(5.8)
La experiencia nos dice que debemos factorizar el denominador para luego ver que caso de
fracciones parciales usar. Entonces,
> yfrac01:= factor(yfrac00);
(5.9)
Para ello MAPLE tiene el comando convert(expresión,parfrac,variable) que hace
todo el trabajo
> yfrac02:= convert(yfrac01,parfrac,s);
(5.10)
que obviamente pudo usarse desde el inicio
> yfrac03:= convert(yfrac00,parfrac,s);
(5.11)
y puede comprobarse que es equivalente a lo anterior al simplificar
> yfrac04:= simplify(yfrac03);
(5.12)
El comando convert tiene muchas otras opciones. Ver ayuda
Descargar