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