calculodif maple

66
Universidad Autónoma de Nayarit Unidad Académica de Ciencias e Ingenierías Introducción Maple: Cálculo Diferencial y Integral 0. Introducción o 1. ¿Qué es el Maple? o 2. Instrucciones y comandos básicos del Maple 1.Primera parte - Introducción con los principales comandos o 1. Manipulando números o 2. Solución de ecuaciones o 3. Como usar el HELP 2. Segunda parte - Nociones de cálculo diferencial y integral o 1. Calculando Límites o 2. Calculando Algunas Derivadas o 3. Un problema de Cálculo Interesante. o 4. Series de Taylor o 5. Calculando Integrales o 6. Ecuaciones Diferenciales 3.Tercera parte - Graficando 0. Introducción 1. ¿Qué es el Maple? Maple es un sistema de cálculo simbólico o algebraico. Ambas expresiones hacen referencia a la habilidad que posee Maple para trabajar con la información de la misma manera que lo haríamos nosotros cuando llevamos a cabo cálculos matemáticos analíticos. Mientras que los programas matemáticos tradicionales requieren valores numéricos para todas las variables, Maple mantiene y manipula los símbolos y las expresiones. Estas capacidades simbólicas permiten obtener soluciones analíticas exactas de los problemas matemáticos: por ejemplo se pueden calcular límites, derivadas e integrales de funciones, resolver sistemas de ecuaciones de forma exacta, encontrar soluciones de ecuaciones diferenciales, etc. Como complemento a las operaciones simbólicas existe un amplio conjunto de rutinas gráficas que permiten visualizar información matemática compleja, algoritmos numéricos que dan soluciones en precisión arbitraria de problemas cuya solución exacta no es calculable y un lenguaje de programación completo y comprensible que permite al usuario crear sus propias funciones y aplicaciones. Internamente Maple se estructura en tres partes. En primer lugar está el núcleo, formado por rutinas escritas y compiladas en lenguaje C, donde se realizan la mayor parte de los cálculos básicos hechos por el sistema. La segunda parte es un conjunto de librerías, donde se encuentra la mayoría de los comandos de Maple, y que están escritas en su propio lenguaje de programación (interpretado no compilado), lenguaje que permite al usuario crear sus propios comandos y añadirlos a la librería estándar (es por tanto un sistema extensible). Y finalmente la interfaz del programa a través de la cual es posible comunicarse con el sistema. Esta interfaz de Maple tiene un aspecto muy similar a la de otros programas usados en sistemas operativos con entorno gráfico y permite el acceso a todas las M. en C. Héctor Martínez Rubin Celis 1 / 66

Upload: domador1624

Post on 22-Oct-2015

66 views

Category:

Documents


1 download

TRANSCRIPT

Universidad Autónoma de Nayarit Unidad Académica de Ciencias e Ingenierías

Introducción Maple: Cálculo Diferencial y Integral

• 0. Introducción

o 1. ¿Qué es el Maple? o 2. Instrucciones y comandos básicos del Maple

• 1.Primera parte - Introducción con los principales comandos o 1. Manipulando números o 2. Solución de ecuaciones o 3. Como usar el HELP

• 2. Segunda parte - Nociones de cálculo diferencial y integral o 1. Calculando Límites o 2. Calculando Algunas Derivadas o 3. Un problema de Cálculo Interesante. o 4. Series de Taylor o 5. Calculando Integrales o 6. Ecuaciones Diferenciales

• 3.Tercera parte - Graficando 0. Introducción 1. ¿Qué es el Maple? Maple es un sistema de cálculo simbólico o algebraico. Ambas expresiones hacen referencia a la habilidad que posee Maple para trabajar con la información de la misma manera que lo haríamos nosotros cuando llevamos a cabo cálculos matemáticos analíticos. Mientras que los programas matemáticos tradicionales requieren valores numéricos para todas las variables, Maple mantiene y manipula los símbolos y las expresiones. Estas capacidades simbólicas permiten obtener soluciones analíticas exactas de los problemas matemáticos: por ejemplo se pueden calcular límites, derivadas e integrales de funciones, resolver sistemas de ecuaciones de forma exacta, encontrar soluciones de ecuaciones diferenciales, etc. Como complemento a las operaciones simbólicas existe un amplio conjunto de rutinas gráficas que permiten visualizar información matemática compleja, algoritmos numéricos que dan soluciones en precisión arbitraria de problemas cuya solución exacta no es calculable y un lenguaje de programación completo y comprensible que permite al usuario crear sus propias funciones y aplicaciones.

Internamente Maple se estructura en tres partes. En primer lugar está el núcleo, formado por rutinas escritas y compiladas en lenguaje C, donde se realizan la mayor parte de los cálculos básicos hechos por el sistema. La segunda parte es un conjunto de librerías, donde se encuentra la mayoría de los comandos de Maple, y que están escritas en su propio lenguaje de programación (interpretado no compilado), lenguaje que permite al usuario crear sus propios comandos y añadirlos a la librería estándar (es por tanto un sistema extensible). Y finalmente la interfaz del programa a través de la cual es posible comunicarse con el sistema.

Esta interfaz de Maple tiene un aspecto muy similar a la de otros programas usados en sistemas operativos con entorno gráfico y permite el acceso a todas las

M. en C. Héctor Martínez Rubin Celis 1 / 66

funciones y capacidades del manipulador. Básicamente lo que aparece al invocar el programa Maple (haciendo doble clic en su icono, por ejemplo) es una ventana más o menos convencional en la que se encuentra integrado lo que en inglés se denomina “worksheet” y que nosotros traduciremos como “hoja de trabajo”. La flexibilidad de la hoja de trabajo permite tanto la investigación en ideas matemáticas como la creación de artículos técnicos sofisticados. De esta manera Maple presenta grandes posibilidades de aplicación y uso tanto en la investigación como en el trabajo profesional y por supuesto en la enseñanza de las Matemáticas.

2. Instrucciones y comandos básicos del Maple Instrucciones Básicas 1) Una vez ingresado a Maple se encontrará con una hoja de trabajo en blanco en la que aparecerá un puntero seguido de una barra vertical. 2) Cada vez que finalice una frase deberá escribir punto y coma (si desea que su resultado aparezca explícitamente) ó dos puntos (si desea que no aparezca el resultado). 3) Puede abandonar Maple por dos vías: eligiendo Exit del menú File o bien escribiendo el comando quit. Si usa Exit, Maple le preguntará si desea respaldar su trabajo (usted deberá decidir entre Si, No ó Cancelar). Si usa el comando quit, Maple no le hará consulta alguna. Después de haber ingresado dicho comando, simplemente deberá presionar la tecla enter. Con ésta acción usted abandona su hoja de trabajo y el programa Maple, perdiendo la información que tenía en la hoja de trabajo. 4) Maple le ofrece ayuda en línea mediante los comandos ?, ?? y ??? . El comando ? seguido de algún tópico, hará que Maple le dé una explicación detallada de ése tópico, de sus secuencias de llamada y de algunos ejemplos. Si usa ?? seguido de algún tópico, Maple sólo le indicará qué y cómo escribir adecuadamente el comando relacionado con el tópico en cuestión. Si usa ??? seguido de algún tópico, Maple le ofrecerá solamente ejemplos relacionados con el tópico consultado, omitiendo toda explicación. Para salir de cualquiera de éstas ayudas en línea oprima las teclas Alt y F4 simultáneamente. 5) Usted puede detener un cálculo que considere que es demasiado largo y demoroso para Maple. Para ello puede usar el icono Stop que aparece en el menú de Maple y que se enciende cada vez que Maple está procesando un cálculo. El proceso se detiene haciendo un click con el mouse sobre dicho icono. 6) Al ingresar comandos y frases en su hoja de trabajo tome en consideración que los errores más comunes son los siguientes:

(1) Olvidar al final de cada frase el punto y coma (2) No escribir los paréntesis necesarios

(3) Escribir una coma para números decimales en lugar de un punto (4) Olvidar de escribir el símbolo de multiplicación (5) Dos operaciones en la misma fila no requieren paréntesis.

M. en C. Héctor Martínez Rubin Celis 2 / 66

7) Antes de intentar realizar las tareas, le sugerimos que desarrolle previamente todos los ejemplos que aparecen en los Laboratorios.

8) El comando restart, reinicia la página de trabajo, reinicia los valores de las variables asignadas, dejándolas libres.

COMANDOS DE MAPLE

COMANDOS BASICOS PARA ARITMETICA Y ALGEBRA x + y ; suma x e y x - y; resta x e y x * y ; multiplica x e y x / y ; divide x por y x ^ y; eleva x a y abs(x); valor absoluto de x x :=2 ; asigna a x el valor 2 x = ‘x’; suprime un valor asignado a x, quedando x libre subs(x=a, f); sustituye la variable x en f por a evalf(expr); evalúa una expresión usando decimales evalf(expr,n); evalúa hasta n dígitos evalc(imagin, expr); evalúa números complejos evalm(matr,expres); evalúa una expresión matricial collect(expression,x); agrupa expresiones según la potencia de x collect(f,[p,q]); en f, agrupa todos los términos con p, y todos

los términos con q expand(expr); desarrolla una expresión algebraicamente factor(expr); factoriza un polinomio fsolve(f(x)=0, x); soluciona numéricamente la ecuación en x, f(x) =0 fsolve(f(x)=0, x, a..b) soluciona numéricamente en x, f(x)=0, entre a y b fsolve(f(x)=0, x ,complex); halla numéricamente todas las raíces de una ecuación polinomial en x, f(x) = 0 Pi ; π (debe escribirse con mayúscula) simplify(expresión); reduce expresiones , más o menos solve(f(x)=0, x); resuelve simbólicamente la ecuación en x, f(x)=0 solve({f(x,y)=0, g(x,y)=0},{x,y}); resuelve simbólicamente sistemas de ecuaciones sqrt(x); raíz cuadrada de x I; número complejo i (%); da el resultado obtenido en el paso anterior coeff(expression,x,2); coeficiente de en la expresión 2xwith(student); carga la librería student

completesquare(expr,[x,y]); completa cuadrados de binomio en x e y en la expresión expr

completesquare(quad,[x,y,z]); completa cuadrados de binomio en x,y,z

M. en C. Héctor Martínez Rubin Celis 3 / 66

COMANDOS RELACIONADOS CON FUNCIONES Y GRAFICAS EN 2D 1) En Maple, al igual que en Matemáticas, existe una diferencia entre una expresión y una función. Una función toma argumentos y retorna valores. Una expresión es un objeto. Una función es activa y una expresión es pasiva. La sintaxis básica para definir una función es: nombre:= variable -> expresión Para escribir la flecha con el teclado se usa primero la tecla - y después la tecla > sin dejar espacio entre ambas. 2) El comando para realizar gráficas es plot. Hay varios tipos de sintaxis para éste comando, dependiendo si se trata de funciones o expresiones: (I) plot(f(x), x= a..b); sintaxis tanto para funciones como expresiones (II) plot(f, x=a..b); sintaxis sólo para expresiones (III) plot(f, a..b); sintaxis sólo para funciones 3) Una vez que Maple está en la ventana de gráficas, el mouse maneja un cursor en forma de flecha que sirve para determinar las coordenadas de cualquier punto de la gráfica. Para ello se conduce la punta de la flecha hacia el punto cuyas coordenadas se desea determinar, se hace un click y aparecerá en la parte inferior de la ventana las coordenadas del punto que se está apuntando. 4) La sintaxis para graficar varios gráficos simultáneamente y controlar además la escala del eje vertical es: (IV) plot({f(x), g(x)} , x = a..b, c..d); sintaxis para funciones y expresiones (V) plot({ f, g }, x = a..b, c..d); sintaxis sólo para expresiones (VI) plot({f , g}, a..b, c..d); sintaxis sólo para funciones 5) Para representar una función a trozos, o sea una función que presenta un dominio dividido en diferentes partes pudiendo ser diferente el proceso que se aplica en cada una de ellas se usa la estructura if - then - else. Hay dos alternativas: a) Si tan sólo se trata de una condición la sintaxis es: s:= proc(x) if (condición) then (expresión) else (expresión) fi end: (El comando proc(x) quiere decir “procedure” (procedimiento para x)) b) Si hay varias condiciones la sintaxis es: s:=proc(x)

M. en C. Héctor Martínez Rubin Celis 4 / 66

if (condición) then (expresión) elif (condición) and (condición) then (expresión) elif (condición) then (expresión) elif (depende si hay más condiciones) fi end: (El comando elif es una abreviatura para else if que significa “de otra manera si...”) 6) Dos funciones a trozos importantes para los que no se requiere el procedimiento anterior son la función valor absoluto para la cual se usa el comando abs (y que se vio en el laboratorio anterior) y la función parte entera (que da el mayor de los números enteros menores que un número dado) para la cual se usa el comando floor (número). 7) Para hacer en Maple una tabla de valores se puede usar dos vías: a) usando el comando seq que se aplica a una función f ya definida mediante la sintaxis: seq(f(i), i = a..b) (Produce una secuencia de valores horizontal) b) usando el comando array que se aplica a una función ya definida mediante la sintaxis: array( [seq( [i, evalf(f(i))], i = a..b) ] ) (Produce una secuencia de valores verticales) 8) Una de las características de Maple son sus librerías (paquetes especiales) “packages”. Los packages son librerías de programas dentro de Maple con comandos especiales que se llaman sólo cuando se necesitan. Así se logra tener en la memoria Ram del computador sólo lo que se necesita y no se recarga dicha memoria “consciente” inútilmente. Es así como Maple contiene librerías de geometría, de álgebra lineal, de series de potencia, de estadística, de geometría tridimensional, etc. Todos éstos programas se ingresan con el comando with. En éste laboratorio hay interés por graficar; en particular por graficar funciones que vienen definidas implícitamente. Este tipo de gráfica se obtiene ingresando el package plots. El ingreso se hará entonces con la sintaxis: with(plots): implicitplot( f(x,y)=0, x = a..b, y = c..d); 9) Para transformar una expresión en una función se usa el comando unapply mediante la sintaxis: g:= unapply(nombre de la expresión, x); 10) Para transformar una función en una expresión se usa la sintaxis:

M. en C. Héctor Martínez Rubin Celis 5 / 66

y := f(x) 11) Para graficar los puntos en dos dimensiones: )f,e(,)d,c(,)b,a(

pointplot ({ [a , b ] , [c , d ] , [e , f ] }); 12) piecewise(x < a , f(x) , x >= b , g(x) , u(x)); define una función a trozos COMANDOS PARA FUNCIONES LOGARITMICAS, EXPONENCIALES Y TRIGONOMETRICAS Y GRAFICOS CON ANIMACION exp(x); función exponencial ex

ln(x); logaritmo natural de x log[a](x); logaritmo de x en base a sin(x); seno de x radianes cos(x); coseno de x radianes tan(x); tangente de x radianes cot(x); cotangente de x radianes sec(x); secante de x radianes csc(x); cosecante de x radianes arcsin(x); arcoseno de x ; función inversa de sen(x) arccos(x); arcocoseno de x; función inversa de cos(x) arctan(x); arcotangente de x; función inversa de tan(x) arcsec(x); arcosecante de x; función inversa de sec(x) arccsc(x); arcocosecante de x; función inversa de cosec(x) arccot(x); arcocotangente de x; función inversa de cot(x) convert(α*degrees, radians); convierte α grados sexagesimales a radianes convert(β, degrees); convierte b radianes a grados sexagesimales combine(expresión, trig); transforma fórmulas trigonométricas animate(F(x,t),x =a..b,t=c..d);produce gráficos con animación 2) Para usar las funciones trigonométricas tome en cuenta que todos los argumentos

deben estar en radianes (1 radian = 180Pi

grados sex. ; 1 grado sex. = Pi180

radianes)

3) Usted puede simplificar o desarrollar identidades trigonométricas y Maple tiene rutinas que le permitirán convertir expresiones trigonométricas a otras formas. Por ejemplo, usted puede convertir cualquier expresión trigonométrica en una expresión que contenga sólo términos en seno y coseno. Para lograr esas transformaciones tendrá que usar tanto algunos comandos y operadores estudiados en guías anteriores como expand, factor y simplify , como algunos nuevos tales como combine[trig], simplify[trig], y convert. 4) Debe observarse que para convertir grados sexagesimales a radianes, Maple usa “degrees” (grados) como una unidad que se nombra explícitamente y por la cual hay que

M. en C. Héctor Martínez Rubin Celis 6 / 66

multiplicar el ángulo α. En cambio para convertir radianes a grados Maple exige no escribir “radians”, ni tampoco especificar una multiplicación por radianes. 5) Para producir gráficos con animación se requiere introducir primero el package de gráficas. Luego la sintaxis para producir animación es: > with(plots): > animate( F(x,t), x = a..b, t = c..d); donde F es una función real en x y en t y en donde a..b especifica el rango real horizontal (abscisas) en el cual se grafica F, mientras que c..d especifica de qué manera se desea que varíe el cuadro coordenado de un cuadro al siguiente. 6) Descripción de la ventana de gráficos con animación: Una vez que se ha obtenido la ventana de Maple para gráficos con animación es posible notar que aparecen dos filas de iconos en lugar de la clásica fila en las ventanas de Maple para gráficas sin animación. Al usar el mouse en la segunda fila sobre el segundo icono de izquierda a derecha (el que se parece a “Play” en un tocacintas), y hacer un click la gráfica comenzará a “moverse desde abajo hacia arriba”. Al poner la flecha del mouse sobre el segundo icono de derecha a izquierda en un icono que exhibe una flecha y hacer un click, la flecha del icono cambiará de sentido, de “izquierda a derecha” a “derecha a izquierda”. Esto significará que la curva comenzará a moverse de principio a fin pero en sentido contrario. Si, en lugar de hacer un click sobre el “Play”, se hace un click sobre el tercer icono que aparece de izquierda a derecha, que exhibe una flecha con una raya vertical en su punta, se logrará que la curva se mueva un cuadro por vez: uno por cada click. Si se realiza éste acto lentamente se descubrirá que la curva “bajará” de comienzo a fin después de haber presionado 15 veces el mouse,o sea con un total de 15 clicks. Esto significa que Maple ofrece, por defecto, un total de 16 cuadros de principio a fin. Se puede variar la cantidad de 16 cuadros que Maple ofrece por defecto usando la siguiente sintaxis: animate(F(x,t), x=a..b, t= c..d, frames = n); Si se hace un click sobre el primer icono de la derecha de la segunda fila se observará que dicho icono cambia de una figura de dos “semiflechas” a una figura “cerrada”. Si se hace un click ahora sobre el “Play” (segundo icono de izquierda a derecha), la figura se moverá ininterrumpidamente un sin fin de veces. Para detener el movimiento de la figura se hace un click sobre el primer icono de la izquierda (similar al “stop” de un tocacintas). Quedan aun dos iconos: son los que se parecen al “retroceso” y “avance” rápido en los tocacintas. Aquí hacen las veces de disminución o aumento de cuadros por segundo. Observe que al hacer un click sobre uno de ellos aparece en la parte inferior de la pantalla una indicación con un valor de “fms”, que significa “frames per second” (“cuadros por segundo”). A medida que se continúa haciendo clicks sobre el mismo icono se verá que variará la cantidad de “fms” (aumentará o disminuirá según el icono que se esté ocupando). 7) Una opción interesante que posee el comando plot es el que permite poner título a una gráfica. Para ello se usa la siguiente sintaxis:

M. en C. Héctor Martínez Rubin Celis 7 / 66

> animate( F(x,t), x = a..b, t = c..d, frames = n, title = ‘nombre’); 8) Otra opción interesante del comando plot es la posibilidad en algunos casos de eliminar las asíntotas de la gráfica. Se usa la sintaxis: >plot( f(x), x= a..b, y=c..d, discont=true); Lamentablemente en la versión 3 de Maple esto no da siempre el resultado esperado. 9) Para calcular logaritmos en base 10 en Maple es necesario primero introducir el package readlib(log10) COMANDOS RELACIONADOS CON LIMITES DE SUCESIONES seq(a(n), n = a..b); sucesión de números a(n) para n de a hasta b limit(a(n), n = infinity); calcula el límite de la sucesión Limit(a(n), n = infinity); da la notación del límite de la sucesión seq([n, a(n)], n = a..b]; sucesión de pares ordenados de la sucesión style = point; da el tipo de punto usado en gráfica COMANDOS RELACIONADOS CON LÍMITES DE FUNCIONES

for k from a to b do...od; procedimiento que repite un proceso un determinado número de veces

limit(f(x), x=c); límite de f(x), cuando x tiende al valor c limit(f(x), x=c, right); límite de f(x), cuando x tiende a c por la

derecha

limit(f(x), x=c, left); límite de f(x), cuando x tiende a c por la izquierda

limit(f(x), x=infinity); límite de f(x), cuando x tiende a infinito piecewise(x < a , f(x) , x >= b , g(x) , u(x)); define una función a trozos COMANDOS PARA DERIVADAS diff(expr,x); derivada de la expresión con respecto a x diff(f(x),x); derivada de f(x) con respecto a x D(f); derivada de la función f, retorna una función showtangent(f(x), x=c,a..b); grafica f(x) y una recta tangente en x = c

M. en C. Héctor Martínez Rubin Celis 8 / 66

COMANDOS PARA FUNCIONES POLINOMICAS Y RACIONALES normal forma básica para simplificar funciones racionales numer elige el numerador de una función racional después de haber usado el comando norm denom elige el denominador de una función racional después de haber usado el comando norm quo retorna el cuociente del numerador dividido por el denominador rem retorna el resto del numerador dividido por el denominador COMANDOS PARA INTEGRACION int(f(x),x); integral indefinida (antiderivada de f(x)) int(f(x),x=a..b); integral definida de f(x) entre a y b Int(f(x),x); integral inerte, no evaluada sum(k, k=1..3); retorna 1 + 2 + 3 Sum(k, k=1..3); retorna el signo sumatoria para la suma de

1+2+3 with(student); carga la librería student integrand(Int(f,x)); retorna el integrado de ∫ dxf leftbox(f(x), x=a..b,n); da el gráfico de f(x) en [a,b], dibujando n

rectángulos bajo f(x) con puntos iniciales para aproximar el área

leftsum(f(x),x=a..b,n); suma exacta de áreas de rectángulos de leftbox rightbox(f(x),x=a..b,n); da el gráfico de f(x) en [a,b], dibujando n

rectángulos bajo f(x) con puntos terminales para aproximar área

rightsum(f(x), x=a..b,n); suma exacta de áreas de rectángulos de rightbox

convert(f,parfrac,x); descomposición en fracciones parciales de una finción racional f(x)

normal(expression); suma fracciones vía comun denominador simplify(expression, symbolic); fuerza a Maple a usar la transformación

xx 2 >− with(student); carga la librería student changevar(eqn,Int,t); realiza un cambio de variable definido por

eqnen la integral inerte Int,resultando en una integral con una n ueva variable t

M. en C. Héctor Martínez Rubin Celis 9 / 66

intparts(Int,u); da ∫− duvuv para la integral inerte

∫= dvuInt simpson(f,x=a..b,n); aproximación por Regla de Simpson con n

paneles trapezoid(f,x=a..b,n); aproximación por la Regla del Trapezoide con

n paneles int(f,x=a..b, Cauchy Principal Value); da el Valor Principal de Cauchy de las

integrales impropias COMANDOS PARA SERIES taylor(f,x=a,n); polinomio de Taylor de orden n-1, en x=a, para

f mtaylor(f(x,y),[x=a,y=b],n); calcula un polinomio de Taylor multivariable

de grado n , en el punto (x,y)=(a,b) convert(taylor(f,x=a,n),polynom); convierte resultados del comando taylor en

polinomios COMANDOS PARA COORDENADAS POLARES Y ECUACIONES PARAMETRICAS plot([x(t),y(t),t=a..b]); grafica la curva paramétrica x = x(t) , y = y(t) plot( [r(t), t , t = a..b], coords=polar ); gráfico polar de r = r(t) plot( [r(t), t , t = a..b], c..d , e..f, coords=polar ); grafica polares y regula el tamaño de los

ejes horizontal y vertical, donde “c..d” son para eje horizontal y “e..f ” para eje vertical

COMANDOS PARA VECTORES Y GRAFICOS EN ESPACIO 3D plot3d(f(x,y),x=a..b, y=c..d; grafica en 3D la superficie z=f(x,y) with(linalg); carga la librería de álgebra lineal crossprod(v1,v2); calcula el prodicto cruz de los vectores

v1 y v2 det(A); calcula el determinante de la matriz A dotprod(v1,v2); calcula el producto punto de los

vectores v1 y v2 normalize(v); da el vector unitario v/(longitud de v) stack(v1,v2); forma matrices cuyas filas son vectores

v1, v2 matrix(2,3,[a,b,c,d,e,f]) crea una matriz 2 x 3 cuyos entradas

son las filas a,b,c; y; d,e,f vector([a,b,c]); crea el vexctor ai+bj+ck

M. en C. Héctor Martínez Rubin Celis 10 / 66

with(plots); carga la librería plots plot3d(f(x,y),x=a..b, y=c..d; grafica en 3D la superficie z=f(x,y) implicitplot3d(f(x,y,z),x=a..b,y=c..d,z=p..q); grafica la superficie z=z(x,y)definida

implícitamente por f(x,y,z) spacecurve([x(t),y(t),z(t)],t=a..b); grafica la curva 3D x=x(t), y=y(t),

z=z(t) display3d({l1,l2}); grafica simultáneamente dos entes 3D

definidos previamente por l1:=plot3d(etc...): y l2:=plot3d(etc...):

pointplot3d({[a,b,c],[d,e,f],[p,q,r]}); grafica puntos en 3D cylinderplot(r(t,z),t=a..b,z=c..d); grafica r(t,z) en coordenadas cilíndricas sphereplot(r(t,f),t=a..b,f=c..d); grafica la superficie 3D r(t,f) en

coordenadas esféricas contourplot(f(x,y), x=a..b,y=c..d); genera una colección de curvas de nivel contourplot(f(x,y), x=a..b,y=c..d,contours=[p,q,r]); genera curvas de nivel para

constantes z=p,q,r with(linalg); carga la librería de álgebra lineal evalm(v/c); evalúa una matriz aritmética, dividiendo el

vector v por el escalar c norm(v,2); calcula la norma euclidiana (longitud) del

vector v

M. en C. Héctor Martínez Rubin Celis 11 / 66

1. Primera parte – Introducción a los principales comandos En esta sección de trabajo veremos los principales recursos del Maple V para operaciones algébricas (numéricamente y simbólicamente). Al final de una instrucción teclear "punto y coma" o "dos puntos". Descubra la diferencia entre ellas. > > # Este es un símbolo de comentario. El Maple ignora todo lo que sigue a #. Símbolos de operaciones +,*, -,/,**=^ 1. Manipulando Números

Teclea la siguiente cuenta . > 32*12^13; # teclee [enter]

> # Calcular el fatorial de 20 > 20!;

> # Decomponer un número en factores primos > ifactor(%);

> # Expandir un número > expand(%);

Trabajando con aritmética EXACTA. > (2^30/3^20)*sqrt(3);

No aparece ningún redondeo. El valor es excato. Para ver una aproximacion en decimales ejecutamos evalf (evaluation with floating point) > evalf(%);

Otro ejemplo: > sin(sqrt(2/3)*Pi);

> evalf(%); >

M. en C. Héctor Martínez Rubin Celis 12 / 66

Otro ejemplo: > 20*root[5](Pi);

> # Cuantos dígitos usados? > Digits;

Si quiere una respuesta con mas dígitos. > Digits:= 30: evalf(sin(sqrt(2/3)*Pi));

Cambiando a 10 digitos. > Digits:= 10: Haciendo sumatorias. Descubra a diferencia entre los comandos Sum y sum > Sum((1+i)/(1+i^4), i=1..10);

> value(%);

> Sum(1/n^2,n=1..40);

> value(%);

> evalf(%);

Productos, como una sumatoria, descubra la diferencia entre los comandos Product y product > Product(((i^2+3*i-11)/(i+3)), i=0..10);

> value(%);

M. en C. Héctor Martínez Rubin Celis 13 / 66

> evalf(%,50);

Repita los comandos de somatoria y produtos, iniciando con letra minúscula para ver un que ocorre . > sum((1+i)/(1+i^4), i=1..10);

> product(((i^2+3*i-11)/(i+3)), i=0..10);

Números Complejos: > (3+5*I)/(7+4*I); # dividiendo ...

> (2-4*I)*(1+I);

> sqrt(4*I);

> (sqrt(4*I))^2;

> evalc(%);

Funciones famosas y constantes famosas: > evalf(exp(1),40); #constante con 40 decimales

> evalf(Pi,50); #constante Pi con 50 decimales

Un Maple más poderoso con cálculos simbólicos. Operaciones Simbólicas: > (x+y)^3*(x+y)^2;

> expand(%);

Factorizar un polinomio > factor(%);

> simplify(cos(x)^5 + sin(x)^4 + 2*cos(x)^2 - 2*sin(x)^2 - cos(2*x));

Normalizar formas racionales > normal((x^3-y^3)/(x^2+x-y-y^2));

M. en C. Héctor Martínez Rubin Celis 14 / 66

2.Trabajando con nombres: > A:= (41*x^2+x+1)^2;

> B:= expand(A);

> C:= 32*x^3-4;

> # Dividir A entre C > A/C;

Escribir A/C como fracciones parciales. > convert(A/C, parfrac,x);

Escribir la función cot en términos de exponenciales. > convert(cot(x) , exp);

Más cosas importantes, raíz de polinomio con la multiplicidad. > solve(a*x^2+b*x+c,x);

> polinomio:=9*x^3-37*x^2+47*x-19;

> solve(polinomio,x);

Derivando un polinomio > p:=x->9*x^3-37*x^2+47*x-19;

M. en C. Héctor Martínez Rubin Celis 15 / 66

> D(p);

> D(p)(1);

Para determinar mas raices (reales o complejas) numericamente de un polinomio > fsolve(p(x)=0,x);

Resolviendo un sistema > eqns := {7*x-14*y=1.111, -14*x+140*y=-0.642};

> sols := solve( eqns );

2. Solución de Ecuaciones:

Solucionar una ecuación es encontran los valores para los cuales dicha ecuación es verdadera. Las soluciones más usadas son aquellas que buscan las raices de una expresión polinómica. Para tal efecto usaremos el comando: fsolve( expresión ) Orden ........: solve Sintáxis ......: solve( expresión , x , a..b) Propósito ...: Calcula la solución de expresión . Las raices del polinomio. Sobre la variable x en el intervalo a..b .

> restart; f1:=x^2+1; solve(f1,x); f2:=a*x^2+b*x+c; solve(f2,x);

Lo que nos arroja, incluso, una expresión algebráica para la solución de una función cuadrática.

M. en C. Héctor Martínez Rubin Celis 16 / 66

Cuando la función la definimos nosotros mismos, podemos usar el comando fsolve. Vamos a solucionar una expresión definida por nosotros y ubica los puntos de la solución en un gráfico.

> with(plots): f3:=x^4+2*x^2+x; raices:=fsolve(f3,x,-2..2); puntos:=([raices[1],0],[raices[2],0]); p1:=plot(f3,x=-1..1): p2:=plot([puntos],x=-1..1,style=point,color=blue,thickness=3,symbol=circle): display({p1,p2});

Warning, the name changecoords has been redefined

Supongamos ahora que deseamos calcular los puntos de intersección de una recta y una cuadrática:

> Linea:=2*x+4; Cuadratica:=x^2+2*x+3; Sol:=fsolve(Linea=Cuadratica,x); #subs( x=2, x^2+x+1 ); digits:=2;

M. en C. Héctor Martínez Rubin Celis 17 / 66

Puntos:=([Sol[1],subs(x=Sol[1],Linea)],[Sol[2],subs(x=Sol[2],Linea)]); plot({Linea,Cuadratica,[Puntos]},x=-5..5,style=[point,line,line],color=[red,blue,black]);

Hemos usado la opción de remplazar o sustituir una variable en una ecuación. La sintáxis es la siguiente: Orden ........: subs Sintáxis ......: subs( x=a,expresión) Propósito ...: Remplaza el valor de la variable x en la expresión .

> subs(x=a,x^2+3*x+4);

Como usar el HELP Usted puede ver cuales son los paquetes del Maple V y sus comandos consultando el help.

M. en C. Héctor Martínez Rubin Celis 18 / 66

El help del Maple es muy amigable. Es interesante saber usárlo. El help tiene tres níveles de ayuda con una ? interrogación o con dos ?? interrogaciones o con tres ??? interrogaciones. Descubra la diferencia entre ellas. Para ver los paquetes del Maple teclee ?index[package]; > ?index[package]; Cada paquete es acompañado con un comando with. > #with(student); #ejemplo > #?index[functions]; #ejemplo > #with(linalg); #ejemplo 2. Segunda parte - Nociones de cálculo diferencial y integral 1 . Calculando Límites Límites: El límite de una suceción o de una función se calcula en Maple con la orden limit Orden ........: limit Sintaxis ......: limit (expresion, variable= a , opción) Propósito ...: Calcular el límite de la expresión , cuando variable tiende a..: a . Veamos algunos ejemplos: Definiendo una expresión > restart: f1:=(n^2)/(n+1); limit(f1,n=infinity);

> f2:=(x^2-sqrt(x))/(sqrt(x)-1); limit(f2,x=1);

M. en C. Héctor Martínez Rubin Celis 19 / 66

> f3:=(cos(x))/(sqrt(1-sin(x))); limite:=limit(f3,x=0);

> f4:=(x+2)/(x^2-4*x+3); limit(f4,x=3,left); limit(f4,x=3,right); limit(f4,x=3); limit(f4,x=2); limit(f4,x=4);

Como se puede observar, los límites laterales de la función no son iguales, por tanto el límite no existe. Intentemos ver estos resultados en un gráfico

> with(plots): plot(f4,x=0..6,y=-100..100,title=`Limite x-->3`);

Warning, the name changecoords has been redefined

M. en C. Héctor Martínez Rubin Celis 20 / 66

> # Funciones por Tramos Podemos definir también una función cuya expresión muda con las condiciones sin argumento. Por ejemplo: > f:=x ->piecewise(1<=x and x<2, x^2,2*x+10);

> f(x);

> f:=piecewise(x<-1,7*x,x<4,x^2-2,4*x-2);

:= f⎧

⎪⎪⎪⎪⎪⎨

7 x < x -1 − x2 2 < x 4 − 4 x 2 otherwise

> f:=x->piecewise(x<-1,7*x,x<4,x^2-2,4*x-2); := f → x ( )piecewise , , , , < x -1 7 x < x 4 − x2 2 − 4 x 2

> plot(f(x),x=-4..6,discont=true,color=red);

M. en C. Héctor Martínez Rubin Celis 21 / 66

> f:=piecewise(x<4,3*x+244,(x^3-64)/(sqrt(x)-2));

:= f⎧

⎪⎪⎪⎪⎪⎨

+ 3 x 244 < x 4 − x3 64 − x 2

otherwise

> f:=x->piecewise(x<4,3*x+244,(x^3-64)/(sqrt(x)-2));

:= f → x ⎛

⎝⎜⎜⎜

⎠⎟⎟⎟piecewise , , < x 4 + 3 x 244

− x3 64 − x 2

> plot(f(x),x=3..5,discont=true);

> # Funciones Discontinuas

> f:=x->x-floor(x); := f → x − x ( )floor x

> plot(f(x),x=-3..4,y=-1..5,discont=true);

M. en C. Héctor Martínez Rubin Celis 22 / 66

> g:=x->x*floor(x);

:= g → x x ( )floor x

> plot(g(x),x=-3..4,discont=true);

> Limit(x*cos(1/x^2), x=0, left); #un limite dificil??

> value(%); 0 Definindo una función. > f1:=(x,y) -> (x^2-5*y)/(x^3+2*x);

> limit(f1(x,y),x=1);

M. en C. Héctor Martínez Rubin Celis 23 / 66

Vamos ver un gráfico de una función. Tomemos como ejemplo la función2

3

52

xx x

−+

, en el

intervalo [-2,2]. > plot((x^2-5)/(x^2+1),x=-2..2);

Haga otros gráficos. Experimente funciones conocidas por usted tal como seno, coseno, etc... Otra forma de definir una función es por medio del llamado procedimiento. Un procedimiento tiene la forma: P : = proc(argumentos) local (variables locales) instrucciones a ser ejecutadas end; Vamos a ver un ejemplo, mas tarde volveremos a este punto. En este ejemplo, definimos una función salto > salto:=proc(x); > if 1<=x then x^2+1 else cos(x) fi; > end;

> salto(-1);

> salto(2);

Otro ejemplo. > pp:=proc(x); > x^3; > end;

> pp(sqrt(2));

M. en C. Héctor Martínez Rubin Celis 24 / 66

> pp((2)^(1/3));

Ahora vamos cambiar los limites y escribir Limit en lugar de limit . > Limit(f1(x,2), x=1);

> value(%);

Si un comando comienza con letra mayúscula, entonces el es "inerte". Esto es, se escribe mas no calcula . > A:=sin(2*x)/x;

Observar que A no es del tipo A:=x -> sin(2*x)/x, función. Por lo tanto, A no es función (es una expresión). > Limit(A, x=0);

> value(%);

> Limit(A, x=infinity);

> value(%);

Ahora veamos dos limites infinitos. > Limit(1/x, x=0, left);

> value(%);

Siguiente, usamos "limit" con minúscula. > limit(1/x, x=0, right);

> limit(1/x, x=0, left);

> f4:=(x+2)/(x^2-4*x+3); limit(f4,x=3,left);

M. en C. Héctor Martínez Rubin Celis 25 / 66

limit(f4,x=3,right); limit(f4,x=3); limit(f4,x=2); limit(f4,x=4);

El Maple puede calcular límites para funciones de más de una variable. Vamos ver ejemplos. > limit(x^2-y^3+z^4,{x=1,y=2,z=3});

> limit(x^2/(x^2+y^2+z^2+1),{x=1,y=2});

> limit(limit(x/(x^2+y^2),{x=y^2}),y=0);

Veamos algunos ejemplos en que el Maple no consigue dar una respuesta satisfactoria y en ejemplos donde un limite es calculado en vários puntos. > F2:=(x,y,z)-> (x^2+y^2+z^2)/ (x^2+y^2+z^2+1);

> limit(F2(x,y,z),{x=1,y=2,z=3});### observe, un punto está entre llaves.

> limit((x^2-y^2)/(x^2+y^2), {x=0,y=0});

> limit(sin(x^2+y^2)/(x^2+y^2),{x=0,y=0});

M. en C. Héctor Martínez Rubin Celis 26 / 66

2 . Calculando Algunas Derivadas Tal ves uno de los conceptos más importantes del Cálculo, en todos los niveles, inicialmente trataremos de calcular algunas derivadas y luego intentaremos estudiar el concepto de Derivada de una función desde el punto de vista gráfico: Orden ........: diff Sintaxis ......: diff (expresión, variable) Propósito ...: Calcular la derivada de expresión en términos de variable . > f2:=x -> sin(2*x);

Derivando una vez, > diff(f2(x),x);

Derivando 3 veces, > diff(f2(x),x,x,x);

Observe que para derivar 3 veces podemos usar x, x, x, o x$3. > diff(f2(x),x$3);

Calculando derivadas con operador diferencial "D". Una salida (output) es siempre una función > h:=x -> x^2;

> h(x);

> D(h); # Va a salir una Función !

> D(h)(x);# aquí calculamos a derivada en un punto x

> D(h)(1);# aqui calculamos a derivada en un punto x=1

> diff(R(x)*S(x),x); # derivada del producto

> f1:=sin(x); diff(f1,x); f2:=3*x^2+5*x+5; diff(f2,x);

M. en C. Héctor Martínez Rubin Celis 27 / 66

> f3:=(sin(x))/(1+cos(x)); df3:=diff(f3,x); simplify(%);

> f4:=(x^2+3*x)*(2*sin(2*x)); diff(f4,x); simplify(%);

También podemos calcular derivadas de funciones de más de una variable, es decir, derivadas parciales:

> diff(T(x,y(x)),x); # derivada total de T(x,y(x))

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

M. en C. Héctor Martínez Rubin Celis 28 / 66

diff(f1,y); diff(f1,x,y),diff(f1,x,x),diff(f1,y,y);

Los anteriores ejemplos calculan: - Derivada de f ( x , y ) respecto a x. - Derivada de f ( x , y ) respecto a y. - Derivada de f ( x , y ) respecto a y respecto a y. - Derivada de f ( x , y ) respecto a x respecto a x - Derivada de f ( x , y ) respecto a y respecto a y.

Podemos calcular derivadas parciales de orden superior, para lo cual usamos el operador $ en la variable.

> f1:=x^4-y^5; diff(f1,x$3); diff(f1,y$3);

> f2:=x^2*sin(x); diff(f2,x$10);

Podemos derivar parcialmente en orden superior, es decir:

> f4:=exp((x/y)); diff(f4,x$3,y$2); simplify(%);

M. en C. Héctor Martínez Rubin Celis 29 / 66

Hemos calculado: fx y

⎛ ⎞∂ ∂⎜ ⎟∂ ∂⎝ ⎠

Ahora, el operador de diferenciación D, se usa para que al calcular la derivada de una función, Maple interprete este resultado como otra función y no como una expresión.

> f:=8*sin(3*x); df:=diff(f,x); evalf(subs(x=2,df));

> f:=x->8*sin(3*x); D(f); evalf(D(f)(2));

Podemos utilizar el operador D[](f) , para calcular derivadas parciales de orden superior. Orden ........: D Sintaxis ......: D [ índices ] (expresión)

M. en C. Héctor Martínez Rubin Celis 30 / 66

Propósito ...: Calcular la derivada parcial de expresión, de acuerdo a los índices, los cuales representan el orden de las variables tal como aparecen en la definición.

> f:=(x,y)->x^3+y^3; D[1](f); # Dx(f) D[2](f); # Dy(f) D[1,1,1](f); # Dxxx(f)

> f:=sin(2*x); g:=diff(f,x); plot({f,g},x=-Pi..Pi,title=`Una Función y su derivada`);

Ahora vamos a presentar gráficamente el concepto de Derivada. Trazaremos varias rectas tangentes a un conjunto de puntos de una función y formaremos con las derivadas, la gráfica de dicha función.

M. en C. Héctor Martínez Rubin Celis 31 / 66

De la librería student usamos la opción showtangent, que nos permite ubicar la derivada de una función en un punto.

Orden ........: showtangent

Sintaxis ......: showtangent ( función, variable = a)

Propósito: Presenta la recta tangente a la curva función , en el punto correspondiente a la ordenada x = a

> with(student):with(plots): f1 := 15*x^2+3*x; lista := seq(showtangent(f1, x = i),i=-8..8): display(lista,title=`Derivadas de la Cuadrática`);

Warning, the name changecoords has been redefined

Ahora una animación de la recta tangente alrededor de la curva.

> display(lista,insequence=true,title=`Derivadas en un punto`);

M. en C. Héctor Martínez Rubin Celis 32 / 66

Podríamos hacer un programa para presentar las rectas tangentes del tamaño que deseemos de tal forma que estas generen la curva. Las siguientes órdenes generan un número de rectas tangentes a una curva.

1- Un cantidad de rectas tangentes que forman la curva.

2- Una recta tangente que se desplaza por la curva.

3- Un segmento de recta tangente a la curva que se desplaza por la misma en una animación.

Las órdenes calculan:

1- Un conjunto de valores para x e y de acuerdo a la definición de la función. 2- Un conjunto de rectas tangentes a la curva, teniendo en cuenta:

y = mx+b

b = y-mx

> restart: with(plots): F := x^2; #sin(.6*x); #-.5*x^2+2*x+2; pF :=plot(F,x=-10..10): m := diff(F,x); cantidad :=40: X := [seq(-10+i/2,i=0..cantidad)]: Y := [seq(eval(F,x=X[i]),i=1..nops(X))]: Pendientes := [seq(eval(m,x=i),i=X)]: Cortes := [seq((Y[i]-Pendientes[i]*X[i]),i=1..nops(X))]:

M. en C. Héctor Martínez Rubin Celis 33 / 66

Rectas := [seq((Pendientes[i]*x+Cortes[i]),i=1..nops(X))]: Tangentes :=seq((plot(Rectas[i], x=-10..10)), i=1..nops(X)): display(Tangentes, insequence=true); display(Tangentes); largo :=.8; Segmentos :=seq((plot([[(X[i]-largo), eval(Rectas[i], x=(X[i]-largo))], [(X[i]+largo), eval(Rectas[i], x=(X[i]+largo))]], x=-10..10,color=magenta)), i=1..nops(X)): display(Segmentos,insequence=true);

Warning, the name changecoords has been redefined

M. en C. Héctor Martínez Rubin Celis 34 / 66

3. Un problema de Cálulo Interesante. Dado un punto P=(a,b) y un gráfico de una función f, calcular a distancia de P al gráfico de f. Al comenzar un nuevo problema acostúmbrese a "liberar" la memoria. Hacemos esto con un comando siguiente. > restart: Por definición, la distancia de P al gráfico de f es la menor distancia entre los puntos Q del gráfico y un punto P. Vamos entonces a definir: Distancia =|| P-Q || A este ejemplo tomamos ( ) ( )f x Cos x= y P= (2,3). Un punto del gráfico de f es de forma (x, cos(x)), así mismo a distancia del punto P a un punto del gráfico es dada por > dist:=sqrt( (2-x)^2 + (3-cos(x))^2 );

Queremos a menor distancia. De la fórmula anterior vemos que distancia es una función de x. Por lo tanto, del Cálculo, concluimos que la menor distancia debe ser dada por una x que anula a derivada de dist. Vamos ver un gráfico de Función dist. > plot( sqrt( (2-x)^2 + (3-cos(x))^2),x=0..2);

M. en C. Héctor Martínez Rubin Celis 35 / 66

> derivada:=diff(dist,x);

Resolviendo la ecuación derivada =0 para "x" en [0,2]. Dá un gráfico. > x[min]:=fsolve(derivada, x ,0..2 );

> evalf(%);

Escribiendo la respuesta utilizando un comando subs. (Sustituir un valor de x por minX la expresión dist) . > menor[dist]:=subs(x=x[min], dist);

> respuesta:=evalf(%);

> # Descubra lo que ha hecho (siguiente) > L:=[ [2,3], [x[min] , cos(x[min]) ]];

> plot({cos(x), L }, x=0..3 , scaling=constrained);

M. en C. Héctor Martínez Rubin Celis 36 / 66

4 - Series de Taylor La función "series" describe la serie de Taylor de funciones analíticas. En general, la respuesta es dada en términos de una expansión de orden 6. > S:=exp(x)*x^2;

> S1:=series( S, x=0 ); # En torno de x=0.

Queremos ahora una expansión de orden 10. > S2:=series( S , x=0, 10 );

Convertir la série en un polinomio. > S3:=convert(S2, polynom );

> S3(2); # inútil

> value(%); #inútil

M. en C. Héctor Martínez Rubin Celis 37 / 66

Vamos a transformar la expresión S3 en una función de verdad. > P:=unapply( S3 , x );

> evalf( P(1) );

> evalf( subs(x=1, S) );

Otro ejemplo > f := x -> arctan(x); c := 0;

:= f arctan := c 0

> series( D(f)(x), x = c, 3); convert(int(%, x), polynom); g := unapply( %,x); − + 1 x2 ( )O x4

− x13 x3

:= g → x − x13 x3

> series( D(f)(x), x = c, 15); convert(int(%, x), polynom); h := unapply( %,x); − + − + − + − + 1 x2 x4 x6 x8 x10 x12 x14 ( )O x16

− + − + − + − x13 x3 1

5 x5 17 x7 1

9 x9 111 x11 1

13 x13 115 x15

:= h → x − + − + − + − x13 x3 1

5 x5 17 x7 1

9 x9 111 x11 1

13 x13 115 x15

> plot( [f(x),g(x), h(x) ], x = -5..5, y = -4..4, color = [red, blue, green], thickness = [3,1,2] );

M. en C. Héctor Martínez Rubin Celis 38 / 66

Graficando series de diferente orden > plot({exp(x),convert(series(exp(x), x=0, 2 ),polynom),convert(series(exp(x), x=0, 3 ),polynom),convert(series(exp(x), x=0, 4 ),polynom),convert(series(exp(x), x=0, 5 ),polynom),convert(series(exp(x), x=0, 6 ),polynom),convert(series(exp(x), x=0, 7),polynom),convert(series(exp(x), x=0, 8 ),polynom)},x=-5..5);

M. en C. Héctor Martínez Rubin Celis 39 / 66

5. Calculando Integrales Indefinidas: La integral está definida como la antiderivada, como un límite de una sumatoria ó como el área bajo la curva de una función en un intervalo [a , b] . Inicialmente trabajaremos el concepto de Antiderivada, es decir, Sí F( x ) es una función cuya derivada es f ( x ) entonces:

Orden ........: int Sintaxis ......: int (expresión, variable) Propósito ...: Calcular la integran (antiderivada) de la expresión en términos de la variable > Int(ln(x),x); # Con I maiúscula

> int(ln(x),x); # Con i minúscula

> int(tan(x),x); # Con i minúscula

> Int(1/ sqrt(1-x^2),x); # Con i minúscula

> value(%);

> diff(%,x);

> restart; F:=x^2; f:=diff(F,x); int(f,x);

M. en C. Héctor Martínez Rubin Celis 40 / 66

> F:=sin(x^2)*cos(x); f:=diff(F,x); int(f,x); expand(%);

> f:=(x^4+1)/(x^4-1); F:=int(f,x);

> int(1/(x^5+1),x); # Un Poco complicado !!

M. en C. Héctor Martínez Rubin Celis 41 / 66

Definidas: Cuando interpretamos la integral como el área bajo la curva de una función en un intervalo [ a ,b] entonces necesitamos calcular la integran definida. Orden ........: int Sintaxis ......: int (expresión, variable=a..b) Propósito ...: Calcular la integran definida de la expresión en términos de la variable , que varia desde a hasta b . > restart; f:=x; Int(f,x=0..2);

d⌠⌡⎮⎮0

2

x x

> int(f,x=0..2);

> f1:=sin(x);

> Int(f1,x=0..Pi);

d⌠⌡⎮⎮0

π

( )sin x x

> int(f1,x=0..Pi);

> AA:=Int(x^2*exp(x^2),x=0..1);

M. en C. Héctor Martínez Rubin Celis 42 / 66

> resp:=value(AA);

Maple utilizó la Función error "erf" que es definida por el mismo: erf(x) = 2 / sqrt(Pi) * int( exp(-t^2), t=0..x ). Así mismo podemos tener una aproximación de integral utilizando evalf(AA ). > evalf(AA);

Observe que el resultado de una integral indefinida es un número, que representa el área. Los ejemplos anteriores nos han permitido calcular el área bajo la curva de las funciones x+2, y sin ( x ), en los intervalos específicos. Vamos a observar la gráfica de la función f ( x ) = x+2, en el intervalo [0,2], intente evaluar el area por debajo de esta curva.

> plot(x,x=0..2,title=`Función x`);

Ahora, vamos a calcular el área comprendida entre dos curvas que se intersectan.

M. en C. Héctor Martínez Rubin Celis 43 / 66

> f1:=x+2; f2:=x^2; cortes:=solve(f1=f2); area:=int(f1-f2,x=-1..2); X := [seq( i, i=-1..2)]; Y1 := [seq( x+2, x=X)]; Y2 := [seq( x^2, x=X)]; Puntos1 := [seq([X[i],Y1[i]],i=1..nops(X) )]; Puntos2 := [seq([X[i],Y2[i]],i=1..nops(X) )]; plot({f1,f2,Puntos1,Puntos2},x=-1..2,style=[line,line,point,point],title=`Area entre las curvas`);

M. en C. Héctor Martínez Rubin Celis 44 / 66

Los próximos ejemplos son conocidos. Vamos a ver algo sobre Integrales múltiples. Podemos calcular integrales doble o triples usando el comando int tantas veces como sea necesario.

> f1:=x^3+x^2+x; df1:=diff(f1,x); df2:=diff(df1,x); int(int(df2,x),x);

> Int( Int(x^2+y^2, y=0..2 ),x=0..2 );

> value(%);

> Int( Int( Int( z*cos(x), x=0..2*y ), y=0..2 ), z=1..2 );

> value(%);

> evalf(%);

Veremos algunos ejemplos de Integrales impropias. > f8:= exp(-u*x)*ln(x)*sqrt(x);

> int(f8,x=0..infinity):

M. en C. Héctor Martínez Rubin Celis 45 / 66

Definite integration: Can't determine if the integral is convergent. Need to know the sign of --> u Will now try indefinite integration and then take limits. Como nada es conocido sobre u, Maple no puede determinar una respuesta. Podemos usar el comando ASSUME para informar al Maple sobre u. > assume(u<0); int(f8,x=0..infinity);

Esta integral diverge. Por otro lado, se u>0 tenemos convergencia y una respuesta simbólica. > assume(u>0);int(f8,x=0..infinity);

> Int(1/x^2 , x=1..infinity);

> value(%);

Otro ejemplo. > int(1/x, x=0..1);

Otro ejemplo simple (???). > int(1/(x^3), x=a..b);

> subs(a=-1, b=4, %);

Uno mas: > int(1/(x^3), x=-1..4, 'CauchyPrincipalValue' );

Un ejemplo sobre transformada de Laplace. Vamos usar el paquete inttrans. > restart; with(inttrans): > laplace(t**3-cos(t)=y(t), t, s);

> laplace(t^(1/2)-exp(-t)+sinh(a*t), t, s);

M. en C. Héctor Martínez Rubin Celis 46 / 66

Existe un comando para aproximar graficamente el área bajo la curva de una función por rectángulos, el cual usa la librería student. Orden ........: middlebox, leftbox, rigthbox Sintáxis ......: middlebox (expresion, variable=a..b, n, shading, <options>) Propósito ...: Genera, n cantidad de rectángulos por debajo de la curva de expresion, Tomados en la distancia media, por la izquierda y por la derecha. El color de los rectangulos lo da la opción shading. Además la orden leftsum, calcula la sumatoria de las areas de dichos rectángulos.

> restart:with(student): f1 := sin(x)*x+sin(x); n:=8; leftsum(f1, x=0..2*Pi, n): # Sumatorias value(%): suma:=convert(evalf(%),name): leftbox(f1, x=0..2*Pi, n, shading=cyan,title=`Area..: `||suma);

Ahora intentaremos presentar una "película", aproximando el área bajo la curva de una función desde un intervalo a hasta b, y presentando el valor del área en la medida en que esta cambia.

M. en C. Héctor Martínez Rubin Celis 47 / 66

> with(plots): f1 := sin(x)+cos(x); suma:=seq((evalf(value(leftsum(f1, x=Pi/4..2*Pi, i)))),i=4..25): area:=seq((convert(suma[i],name)),i=1..22): lista:=seq((leftbox(f1, x=0..2*Pi, i, shading=cyan,title=`Area..: `)),i=8..25): display(lista,insequence=true,title=`Aproximaciones del Area`);

Warning, the name changecoords has been redefined

La función leftbox en el paquete student produce una aproximación a el área bajo la curva de una función f(x) en el intervalo a<x<b usando rectángulos. El rango de valores de x esta dividido en un número n de subintervalos. La altura de los rectángulos esta dada por el valor de f en el límite izquierdo de cada subintervalo. El llamado de la función es leftbox es: leftbox(f(x),x=a..b,n); Si no se da el valor de n, se usa el valor por omisión de n = 4. Por ejemplo: > leftbox(x^2,x=0..2);

M. en C. Héctor Martínez Rubin Celis 48 / 66

> leftbox(x^3+3*x^2-2*x+5,x=0..2,10);

El área de los rectángulos puede ser calculada usando la función leftsum. Por ejemplo: > leftsum(x^3+3*x^2-2*x+5,x=0..2,10);

15

⎝⎜⎜⎜

⎠⎟⎟⎟∑

= i 0

9⎛⎝⎜⎜

⎞⎠⎟⎟ + − +

1125 i3 3

25 i2 25 i 5

> evalf(%); 16.48000000

> # El valor exacto de la integral es: > int(x^3+3*x^2-2*x+5,x=0..2);

18

El paquete student también incluye las funciones middlebox, rightbox, middlesum, y rightsum para calcular aproximaciones a la integral usando rectángulos con la altura del rectángulo dada por f(x) evaluada en el punto medio o el lado derecho de los intervalos. Por ejemplo:

M. en C. Héctor Martínez Rubin Celis 49 / 66

> rightbox(exp(0.1*x),x=0..10,10);

> simpson(exp(0.1*x),x=0..10,10);evalf(%);

+ + 1.23942727643

⎝⎜⎜⎜

⎠⎟⎟⎟∑

= i 1

5

e( ) − 0.2 i 0.1 2

3⎛

⎝⎜⎜⎜

⎠⎟⎟⎟∑

= i 1

4

e( )0.2 i

17.18282782

> int(exp(0.1*x),x=0..10); 17.18281828

> middlebox(1/x,x=1..2,8);

M. en C. Héctor Martínez Rubin Celis 50 / 66

3.Tercera parte - Graficando GRÁFICANDO Vamos iniciar con gráficos simples. A veces no es necesario escribir el argumento x > plot(sin,-Pi..Pi);

Graficar con x en [0,2Pi] Es necesario escribir un argumento x > plot(sin(2*x), x=0..2*Pi);

Vamos a graficar con discontinuidades:

M. en C. Héctor Martínez Rubin Celis 51 / 66

> plot(1/(x-1), x=-3..3, -5..5, discont=true);

Añadiendo un titulo al segundo grafico. Usamos la opción "title" > plot(ln(x), x=0..3 , title=`Logaritmo Natural`);

Usando la opción "scaling=constrainded": escala 1-1. > plot(exp(-x^2), x=-2..2 , scaling=constrained);

M. en C. Héctor Martínez Rubin Celis 52 / 66

Podemos graficar dos o mas gráficos juntos. Este es un recurso muy útil. Juntando dos Gráficos: use llaves- plot({f(x),g(x)}, x=a..b) > plot({arctan, sqrt}, 0..5);

Graficando una curva parametrizada: use corchetes

con t en [0,2Pi] > plot( [cos(t), sin(2*t), t=0..2*Pi] );

M. en C. Héctor Martínez Rubin Celis 53 / 66

Un recurso del Maple es la animación de gráficos. Vamos a animar un gráfico? Parece un video-cassete. Después de hecho un gráfico, de click encima de la figura para iniciar a animación. > with(plots): animate( x^2*sin(x*t),x=-10..10,t=1..2,frames=50);

Los procedimientos en "plot" requieren bastantes recursos de la computadora. Es costumbre "cerrar la memoria" a 10 gráficas. > restart;

M. en C. Héctor Martínez Rubin Celis 54 / 66

Dos Problemas interesantes. PROBLEMA 1 Un cardióide es una curva parametrizada en coordenadas polares ( ),ρ θ . . Consulte el help del gráfico para r ióide . ealizar la grafica del card > plot([5*(1-cos(t)) ,t , t=0..2*Pi], coords=polar);

PROBLEMA 2 Un cierto algoritmo genera una lista de puntos x, y una lista de puntos y de la forma siguiente: > X:=[seq( .1*k , k=0..10 ) ]: > Y:=[seq( 5*( (.1*k)^2-(.1*k)^3 ) , k=0..10 ) ]:

> L:=[ seq( [ X[k], Y[k] ], k=1..11) ];

> plot(L, scaling=constrained, title=`Graficando dados`);

M. en C. Héctor Martínez Rubin Celis 55 / 66

Veremos ahora a gráficos mas complicados. Gráficos tridimensionales > restart; Para graficar en tres dimensiones precisamos llamar un paquete para gráficos, Hacemos esto tecleando "with(plots)".Un comando es plot3d. Clique sobre un gráfico y gírelo. Explore los recursos del Maple. > with(plots): > plot3d(sin(x^2+y^2)*cos(x^2+y^2),x=-1..1,y=-1..1);

M. en C. Héctor Martínez Rubin Celis 56 / 66

> plot3d(-3.6+0.3599*x-0.0027*x^2-0.00166*y,x=15..107,y=0..70,title=`akira`);

> plot3d(exp(-x^2-y^2),x=-2..2,y=-2..2);

> animate3d({cos(t*x)*sin(t*y),-cos(t*x)*sin(t*y)},x=-Pi..Pi, y=-Pi..Pi,t=1..2);

M. en C. Héctor Martínez Rubin Celis 57 / 66

> animate3d(x*cos(t*u),x=1..3,t=1..4,u=2..4,coords=spherical);

Más ejemplos > restart; > with(plots): > f:=(x,y) -> -(x^2+y^2);

M. en C. Héctor Martínez Rubin Celis 58 / 66

> plot3d(f(x,y), x=-2..2, y=-2..2, scaling=constrained);

Graficando algo más bonito > plot3d(sin(x)*cos(y), x=-Pi..Pi, y=-Pi..Pi );

Observe las funciones especiales que este paquete tiene. Para se saber sobre alguna de ellas ejecute ?nombre, o ??nombre o ???nombre. Veremos ejemplos de "gradplot",

M. en C. Héctor Martínez Rubin Celis 59 / 66

> f :=(x,y) -> x*exp(-x^2-y^2);

> plot3d( f(x,y), x=-2..2, y=-2..2);

Vamos ver un GRADIENTE DE CAMPO de f con "gradplot" y "countourplot" > contourplot(f(x,y),x=-2..2,y=-2..2);

M. en C. Héctor Martínez Rubin Celis 60 / 66

> plot3d(sin(x^2+y^2), x=-2..2, y=-2..2);

> contourplot(sin(x^2+y^2),x=-1..1,y=-1..1);

M. en C. Héctor Martínez Rubin Celis 61 / 66

> gradplot(f(x,y), x=-2..2, y=-2..2);

> gradplot3d(x^2+2*y^2+z+1,x=-1..1,y=-1..1,z=-1..1);

M. en C. Héctor Martínez Rubin Celis 62 / 66

Vamos diseñar la esfera, dada implícitamente. > implicitplot3d(x^2+y^2+z^2=4, x=-2..2, y=-2..2, z=-2..2 , scaling=constrained );

Coordenadas cilíndricas > cylinderplot(z+ 3*cos(2*theta),theta=0..Pi,z=0..3);

> f := (5*cos(y)^2 -1)/3;

M. en C. Héctor Martínez Rubin Celis 63 / 66

> cylinderplot(f, x=0..2*Pi,y=-Pi..Pi,style=PATCH, color = f);

Un ejemplo tubular con "tubeplot" > c:=[(t- 5*Pi)*sin(t)/3,(t-5*Pi)*cos(t)/3,(t-5*Pi)*.9, t=0..5*Pi]: > tubeplot( c, radius=(t-5*Pi)*.2, orientation=[-37,81],tubepoints=25, style=hidden);

Ejercicios > # Lea "?plots[spacecurve]" y diseñe una espiral. > # DIGA: use la opción "color=black" > # plot([5*(1-cos(t)) ,t , t=0..2*Pi], coords=polar); > # X:=[seq( .1*k , k=0..10 ) ]: > # Y:=[seq( 5*( (.1*k)^2-(.1*k)^3 ) , k=0..10 ) ]: > # L:=[ seq( [ X[k], Y[k] ], k=1..11) ]; > # plot(L, scaling=constrained,title=`Graficando datos`);

M. en C. Héctor Martínez Rubin Celis 64 / 66

6. Ecuaciones Diferenciales Una ecuación diferencial es de la forma...: Orden ........: dsolve Sintaxis ......: dsolve(expresión, variables) Propósito ...: Resuelve una ecuación diferencial, expresión , en termino de las variables, variables Aquí debemos tener en cuenta el orden de la derivada a la cual nos estamos refiriendo, por ejemplo: 1- diff ( f , x ) Se refiere a la primera derivada de f respecto a x. 2- diff ( f , x$n ) Se refiere a la n-esina derivada de f respecto a x.

Además al resolver una ecuación diferencial aparecerán distintas constantes que representan las familias de soluciones.

La ecuación: dy adx

=

Es una ecuación diferencial que podemos escribir dy adx= y solucionarla para y integrando, es decir:

esto es.. y ax c= + .:

Obsérvelo ahora, escrito a manera de la solución de una Ecuación Diferencial, para un valor inicial de y(0) = v .

> ecuacion:=D(y)(t)=a; dsolve(ecuacion,y(t)); dsolve({ecuacion,y(0)=v},y(t));

> ec:=diff(y(t),t$2)=-g; cond:=y(0)=3,D(y)(0)=5; dsolve(ec,y(t)); dsolve({ec,cond},y(t));

M. en C. Héctor Martínez Rubin Celis 65 / 66

M. en C. Héctor Martínez Rubin Celis 66 / 66