Práctica 3. Funciones
1 Definición de funciones
En la práctica 1 vimos funciones elementales que vienen ya definidas en Maxima, para
definir una nueva función usamos dos puntos seguidos del signo igual.
(%i1) | f(x):=sqrt(x-3); |
(%i2) | f(3); |
(%i3) | g(x):=2*asin(x); |
(%i4) | g(1); |
(%i5) | g(1.001); |
En las siguientes prácticas consideraremos funciones reales de variable real, es decir,
sus dominios serán conjuntos de números reales. Si evaluamos una función fuera de su
dominio obtendremos un número complejo o un error.
(%i6) | f(2); |
(%i7) | g(1.0001); |
De forma similar al comando values que ya vimos, si queremos ver las funciones que hemos
definido, usamos el comando functions .
(%i8) | functions; |
Para ver la definición de una función concreta, usamos el comando fundef .
(%i9) | fundef(f); |
La instrucción kill(all) que ya hemos empleado anteriormente, borra todas las variables y
todas funciones que hayamos definido. Si solamente queremos borrar una función podemos
usar kill indicando sólo la función que queremos borrar, o kill(functions) para borrar
todas las funciones.
(%i10) | kill(g); |
(%i11) | functions; |
(%i12) | kill(functions); |
(%i13) | functions; |
Ejercicio.
i) Defina las funciones f(x)=sqrt(x^2+1), g(x)=log(abs(x)) , h(x)=1/x .
ii) Evalúe f(0), g(0) y h(0).
iii) Borre las funciones f y h.
iv) Compruebe la definición de g con el comando fundef .
v) Borre todas las funciones.
(Solución del apartado ii: 1, error, error)
2 Gráficas de funciones
Para representar una función podemos emplear el comando wxplot2d con la siguiente sintaxis
wxplot2d( expresiones, [variable, min, max] , opciones ). Por ejemplo:
(%i14) | f(x):=x+sin(x); |
(%i15) | wxplot2d(f(x), [x, -6, 6]); |
Podemos representar conjuntamente varias funciones si las escribimos en una lista.
(%i16) | wxplot2d([ sin(x), x-x^3/6+x^5/120 ], [x,-3,3]); |
En los ejemplos que hemos visto, Maxima ha representado la gráfica hallando de forma
automática el intervalo en el eje vertical, si queremos indicarle otro intervalo para la
variable dependiente, podemos indicarlo en las opciones, de la siguiente manera
wxplot2d( expresiones, [x, min_x, max_x], [y, min_y, max_y], opciones ) .
En el siguiente ejemplo vemos como el rango para la ordenada que calcula Maxima no permite
ver la forma de la función tangente. A continuación, indicando un rango [y, -20, 20] vemos
mejor la forma y las asíntotas. Como algunos valores de la función cerca de la asíntota
no se muestran, Maxima nos lo advierte con un mensaje.
(%i17) | wxplot2d(tan(x), [x,-6,6]); |
(%i18) | wxplot2d(tan(x), [x,-6,6], [y,-20,20]); |
Ejercicio. Represente la función sin(x)-exp(x^2)+9/10 para valores de x entre -8 y 8. A
continuación muestre sólo los valores (x,y) de esa gráfica para y entre -3 y 3. ¿Cuántas
veces corta la gráfica representada al eje OX?
(Sol. Dos veces)
Ejercicio. Represente la función r(x)=(x^2-4.41)/(x-2.1) en el intervalo [0,4]. Halle
r(2.1).
(Sol. Error de división por cero, aunque en la gráfica no se vea ningún 'hueco'.)
Ej. Defina las funciones g(x)=|x^2-2x-3|. Halle g(1) y g(3). Represente la función en el
intervalo [-3,4].
El comando plot2d tiene la misma sintaxis que el comando wxplot2d que hemos visto. La
diferencia es que la gráfica que genera plot2d aparece en una ventana distinta, que se
puede redimensionar y cerrar cuando se desee.
(%i19) | plot2d(sin(x),[x,0,%pi]); |
Ej. Defina la función f(x)=sin(x), g(x)=f(x-2), h(x)=f(x)/3. Represente conjuntamente las
gráficas de f(x), g(x) y h(x) en el intevalo [-5,5] usando el comando plot2d.
Ejercicio. Represente la función x*sin(1/x) primero en el intervalo [-1,1] y luego en el
intervalo [-0.01,0.01].
3 Inversa de una función
Dada una función f inyectiva, podemos con Maxima encontrar su inversa g de forma que si
y=f(x), entonces x=g(y). Para ello en primer lugar definimos la función f.
(%i20) | f(x):=(3*x+3)/(2*x+1); |
En segundo lugar, planteamos la ecuación y=f(x) para despejar x en función de y.
(%i21) | solve(y=f(x),x); |
Por último definimos la función g con la expresión obtenida, siguiendo el convenio
de llamar x a la variable.
(%i22) | g(x):=-(x-3)/(2*x-3); |
(%i23) | wxplot2d([f(x),g(x)],[x,0,1.3]); |
Comprobamos con la ayuda del comando ratsimp que una es la inversa de la otra, es decir,
que f(g(x))=x y que g(f(x))=x.
(%i24) | f(g(x)); |
(%i25) | ratsimp(f(g(x))); |
(%i26) | ratsimp(g(f(x))); |
Ejercicio. Halle la inversa de la función f(x)=(5x-1)/(3x+1).
(Sol. g(x)=-(x+1)/(3*x-5) .)
Ej. Represente conjuntamente las gráficas de x, x^2 y sqrt(x) en el intervalo [0,2]
usando la instrucción plot2d. Redimensione la ventana para que ambos ejes se muestren
en la misma escala. Observe la simetría respecto de la bisectriz del primer cuadrante y=x.
4 Funciones a trozos
En una función a trozos, o definida por partes, la regla de definición es distinta según
el conjunto al que pertenezca la variable independiente.
En Maxima las funciones a trozos se definen usando la estructura condicional if-then-else
(si-entonces-en caso contrario), como en el siguiente ejemplo.
(%i27) | f(x):=if x<2 then x^2 else x+2; |
En esta definición, si x<0, f(x) valdrá x^2, y en otro caso (si x>=0) f(x) valdrá x+2.
Vemos su gráfica.
(%i28) | wxplot2d(f(x),[x,0,5]); |
Estas funciones así definidas se pueden evaluar y dibujar en Maxima, pero como veremos más
adelante, no se pueden derivar e integrar en Maxima, sino que tendremos nosotros que
elegir en cada caso el 'trozo' o los 'trozos' necesarios.
Veamos otro ejemplo de función a trozos, para ver como representa Maxima los saltos en la
gráfica de una función.
(%i29) | g(x):=if x<2 then x^2 else x+4; |
(%i30) | wxplot2d(g(x),[x,0,5]); |
Esta función tiene un salto en x=2, sin embargo Maxima dibuja un segmento vertical en x=2
lo cual es erroneo ya que este segmento no forma parte de la gráfica de g, en particular
g(2)=6.
Para poder definir una función con tres o más trozos, debemos emplear una estructura
if-then-else dentro de una estructura if-then-else. Como ejemplo, definiremos la función
h(x) dada por
-x+2 si x<0,
x+2 si 0<=x<=2,
x^2 si x>2.
(%i31) | h(x):=if x<0 then -x+2 else ( if x<=2 then x+2 else x^2 ); |
(%i32) | wxplot2d(h(x),[x,-3,6]); |
Al definir h se han usado paréntesis para la parte de la función en x>0. Estos paréntesis
se han incluido para aclarar la definición de la función y no son necesarios.
Ejercicio. Defina la función g(x) dada por
-x+5 si x<4,
2 en otro caso.
Represente la función en el intervalo [-1,6].
Ejercicio. Defina la función h(x) dada por
1 si x<=pi/2,
sin(x) si pi/2
Halle h(3*pi/2) y h(3*pi).
Represente la funcion en el intervalo [0,3pi].
(Sol. -1, pi^2 ).
5 Ejercicios
Ej. En 1690 Jacob Bernouilli propuso el problema de hallar la forma de la catenaria, la
ecuación fue obtenida por Leibniz, Huygens y Johann Bernoulli en 1691.
Considere las funciones c(x)=a*cosh(x/a), y p(x)=a+x^2/(2*a) donde la función c(x)
representa un arco catenario y la función p(x) es una parábola que lo aproxima. Represente
conjuntamente ambas funciones para a=18 en el intevalo [-18,18].
Ej. Considere que d1 es el valor de la primera cifra de su DNI o pasaporte, y d2 el valor
de la segunda cifra. Dibuje conjuntamente la gráfica de y=x^2 - 4*d1*x + 2*(d1)^2, y la de
y=-x^2 + 2*d2*x - 2*d1*d2 en un intervalo que permita ver los cortes de las dos parábolas.
Ej. Considere la función f(x)=x^2+a*x+2. Halle el valor de a que hace que la gráfica de f
pase por el punto (1,6).
(Indicación: Use el comando solve)
(Sol. a=3).
Ej. En Maxima la función round(x) devuelve un entero más próximo a x.
Represente la función en el intervalo [-3,3].
¿Podría decir a la vista de la gráfica a qué valor redondea 0.5 y 1.5?
Halle round(0.5) y round(1.5).
(Sol. 0 y 2. La función presenta saltos en los puntos p+0.5, con p entero y redondea estos
puntos al entero par más próximo.)
Ej. Defina la función q(x) como un cociente cuyo numerador es x^2+x+1 y cuyo denominador
es x^2-x-1. Represente la función para x en el intervalo [-4,4], y para y en el intervalo
[-10,10].
Ej. Defina la función h(x)=|sin(x)|. Halle h(3pi/2). Represente la función en el intervalo
[-3pi,3pi].
(Sol. 1)
Matemáticas II. Grado en Edificación. (A. Palomares.)