/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/ /* [ Created with wxMaxima version 12.01.0 ] */ /* [wxMaxima: title start ] Practica 3: Funciones. Representación gráfica. [wxMaxima: title end ] */ /* [wxMaxima: section start ] Funciones [wxMaxima: section end ] */ /* [wxMaxima: comment start ] Vamos a ver en primer lugar cómo definir funciones en Maxima. Maxima tiene definidas muchas de las funciones elementales. Veamos las más habituales: exp(x) Exponencial log(x) Logaritmo neperiano abs(x) Valor absoluto sin(x) Seno. x debe estar expresado en radianes. cos(x) Coseno. x debe estar expresado en radianes. tan(x) Tangente. x debe estar expresado en radianes. asin(x) Arcoseno acos(x) Arcocoseno atan(x) Arcotangente sinh(x) Seno hiperbólico cosh(x) Coseno hiperbólico tanh(x) Tangente hiperbólica asinh(x) Arcoseno hiperbólico acosh(x) Arcocoseno hiperbólico atanh(x) Arcotangente hiperbólica [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Para calcular el valor de una función en un punto x=a sólo tenemos que escribir f(a). Por ejemplo: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ log(%e^3); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sin(%pi/4); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ acos(-1/2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ log(20), numer; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ float(log(20)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ log(0); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Si queremos definir nosotros una función en Maxima debemos utilizar la sintaxis f(x):= expresión de la función. Podemos definir funciones de varias variables y también funciones vectoriales. Veamos algunos ejemplos: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ f(x):= (x^2+1)/(x^3+4*x^2+6*x+2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(1); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ g(x,y):=x^2+y^2; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ g(1,1); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ h(t):=[cos(t),sin(t)]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ h(0); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(x):= exp(x); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Es conveniente ir variando el nombre de las funciones si no Maxima se queda con la última que hemos definido con ese nombre. También podemos decirle a Maxima que se olvide de las definiciones anteriores con el comando remfunction (funcion1,funcion2,...). Para esta tarea también podemos usar el menú, Maxima->Borrar función. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ remfunction(g,h); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ g(0); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Si queremos definir una función utilizando otras funciones previamente definidas debemos usar el comando define. Veamos un ejemplo: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ define(j(x), f(x)^2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ j(1); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Como hemos visto en clase muchas veces tenemos que tratar con funciones definidas a trozos. Por ejemplo vamos a definir la función que vale x^3 si x es menor que 0 y x^2+1 si x es mayor o igual que 0. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ k(x):= if x<0 then x^3 else x^2+1; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] No sólo podemos definir funciones que estén definidas en dos trozos sino también funciones definidas por ejemplo en tres trozos. Veamos un ejemplo. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ l(x):=if x<=0 then x^2/(x-4) else if x<=1 then x*sin(%pi/x) else sqrt(x^2+2*x-3)/(x-1); /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Representación gráfica de funciones [wxMaxima: section end ] */ /* [wxMaxima: comment start ] Vamos a explorar las opciones que tiene Maxima para la representación gráfica de funciones. [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Para representar una función real de variable real podemos utilizar el comando wxplot2d, la sintaxis exacta sería wxplot2d(f(x),[x,xmin,xmax]). Como vemos hay que especificar el intervalo en el que queremos representar la función. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxplot2d(f(x),[x,-2,2]); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] También podemos dibujar varias gráficas al mismo tiempo. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxplot2d([sin(x),cos(x)], [x,-2*%pi,2*%pi])$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxplot2d([sin(x),cos(x),f(x)], [x,-2*%pi,2*%pi])$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Como con esta representación no podemos ver bien las dos primeras funciones, vamos a restringir el rango. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxplot2d([sin(x),cos(x),f(x)], [x,-2*%pi,2*%pi],[y,-2,12])$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxplot2d([sin(x),x], [x,-1,1])$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Observemos que Maxima dibuja cada gráfica de un color y añade una leyenda explicando cada color a qué función pertenece [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Otra opción es usar en el menú, la pestaña Gráficos y en esta gráficos 2d. Veremos que aparece una ventana en la que debemos ir rellenando los distintos datos de la función o funciones a representar. EXPRESIÓN:Escribimos la función o funciones que queremos representar. Por defecto el programa escribe %, es decir si no escribimos nada dibuja la gráfica de la función introducida en la salida anterior. Para escribir varias funciones sólo tenemos que separarlas por una coma. VARIABLE x: Escribimos el intervalo en el que queremos representar la función. VARIABLE y: Podemos acotar el intervalo del eje y que queremos que muestre el programa. GRADUACIONES: Nos permite elegir el número de puntos donde Maxima calcula la función para dibujarla. Cuantos más puntos mejor será la representación pero más tardará el programa en mostrar la gráfica. FORMATO: La opción por defecto es en línea. Maxima realiza la gráfica con el programa auxiliar wxMaxima y obtenemos la gráfica en una ventana a continuación de la salida. Hay dos opciones más y ambas abren una ventana externa para dibujar la gráfica: gnuplot y openmath. OPCIONES: Aquí podemos seleccionar algunas opciones para que dibuje los ejes de coordenadas con la misma proporción (set size ratio 1), dibuje una cuadrícula (set grid), o dibuje la gráfica en coordenadas polares (set polar). GRÁFICO AL ARCHIVO: Nos permite guardar la gráfica en formato Postcript. Veamos algunos ejemplos de utilización de estas opciones. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxplot2d([log(x)], [x,-2,2])$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Observemos que la gráfica anterior nos da un mensaje de error. Nos dice que en algunos puntos del intervalo que hemos introducido no está definida la función. Recordemos que la función logaritmo neperiano está sólo definida para los números positivos luego debíamos haber introducido: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxplot2d([log(x)], [x,0,2])$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxplot2d([log(x)], [x,0,2], [gnuplot_preamble, "set grid;"])$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxplot2d([sqrt(1-x^2),-sqrt(1-x^2)], [x,-1,1])$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Observemos que la gráfica anterior no es un círculo perfecto como debería de ser porque los ejes de coordenadas tienen diferentes escalas. Usemos ahora la opción set size ratio 1 y veamos qué ocurrre. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxplot2d([sqrt(1-x^2),-sqrt(1-x^2)], [x,-1,1], [gnuplot_preamble, "set size ratio 1; set zeroaxis;"])$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Como vemos ahora ya podemos ver el círculo perfecto. [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Podemos dibujar también funciones a trozos. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxplot2d([k(x)], [x,-5,5])$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Como no vemos bien si la función es continua o no en el 0 vamos a representar un intervalo más pequeño alrededor del 0. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxplot2d([k(x)], [x,-0.5,0.5])$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Ahora vemos claramente que la función no es continua en x=0 y que en este punto presenta una discontinuidad de salto. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxplot2d([l(x)], [x,-1,2])$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Vemos claramente que la función presenta una singularidad esencial en x=1. Para ver si la función es continua en x=0 representaremos un intervalo alrededor de 0. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxplot2d([l(x)], [x,-0.5,0.5])$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Vemos gráficamente que la función es continua en x=0. Más adelante lo probaremos analíticamente. [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Cuando la función tiene una asíntota vertical la dificultad que se encuentra en Maxima es escoger el rango adecuado para representarla, a veces tenemos que ayudar al programa restringiendo el rango donde se representa la función. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxplot2d(tan(x), [x,-5,5])$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxplot2d(tan(x),[x,-5,5],[y,-12,12]); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Veamos ahora cómo si no tomamos el número de graduaciones suficientemente grande podemos obtener una gráfica errónea. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxplot2d([x+sin(5*x)], [x,-4*%pi,4*%pi], [nticks,2])$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxplot2d([x+sin(5*x)], [x,-4*%pi,4*%pi], [nticks,3])$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxplot2d([x+sin(5*x)], [x,-4*%pi,4*%pi], [nticks,20])$ /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Cálculo diferencial. Límites. [wxMaxima: section end ] */ /* [wxMaxima: comment start ] Con Maxima podemos calcular límites. Veamos algunos ejemplos. La sintaxis es limit(f(x),x,a). Para escribir más infinito escribiremos inf y para menos infinito minf. La forma más cómoda de hacerlo es usar en el Menú la pestaña Análisis y aquí la opción Calcular límite. En este caso podemos elegir calcular el límite sólo por la derecha o la izquierda. Veamos algunos ejemplos: [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ limit((x^2-1)/(2*x^2-5*x+2), x, inf); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ limit((x^4-1)/(2*x^2-5*x+2), x, inf); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ limit((x-1)/(2*x^2-5*x+2), x, inf); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ limit(1/x, x, 0, minus); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ limit(1/x, x, 0, plus); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ limit(1/x, x, 0); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Observemos que en el último caso la respuesta es infinity, eso quiere decir que puede ser más infinito o menos infinito. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ limit(sin(x),x,inf); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Las funciones sen(x) y cos(x) no tienen límite cuando x tiende a infinito o menos infinito. Equivalentemente las funciones sen(1/x) y cos(1/x) no tienen límite cuando la x tiende a 0. Observemos como es la gráfica de una de ellas en un entorno de 0. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ wxplot2d([sin(1/x)], [x,-0.5,0.5])$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Maxima sabe aplicar la regla de l'Hôpital. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ limit(sin(x)/x,x,0); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Podemos utilizar lo anterior para comprobar si una función es continua. Por ejemplo la función l definida antes a trozos. Veamos que es continua en 0 cómo ya lo observamos representando la gráfica anteriormente. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ limit(x^2/(x-4), x, 0, minus); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ limit(x*sin(%pi/x), x, 0, plus); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Para acabar utilizaremos Maxima para calcular el siguiente límite que corresponde a una indeterminación 1 elevado a infinito. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ limit(((x^2+x-1)/(x^2-2))^(3*x+1), x, inf); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Estas notas están basadas en los apuntes "Prácticas de ordenador con wxMaxima" de Jerónimo Alaminos, Camilo Aparicio, José Extremera, Pilar Muñoz y Armando R. Villena. [wxMaxima: comment end ] */ /* Maxima can't load/batch files which end with a comment! */ "Created with wxMaxima"$