miércoles, 16 de noviembre de 2011

Representación de funciones explícitas

La representación de funciones explícitas la vamos a hacer con el paquete draw. Como siempre que vayamos a utilizar esta librería, necesitamos cargarla previamente en memoria.

(%i1) load(draw) $


Construimos una escena paso a paso.

(%i2) draw2d(explicit(sin(x^2-x+1), x, -3,3)) $


Para facilitar la lectura del gráfico, podemos dibujar un retículo,



(%i3) draw2d(
        grid = true,
        explicit(sin(x^2-x+1), x, -3,3)) $




Ahora añadimos unas etiquetas a los ejes coordenadas y un título, además de redimensionar la ventana,


(%i4) draw2d(
        title = "Composicion seno y polinomio",
        xlabel = "x",
        ylabel = "y",
        dimensions = [600,300],
        grid = true,
        explicit(sin(x^2-x+1), x, -3,3)) $



Podemos incluir más de una función en la misma escena. Por ejemplo, vamos a añadirle a la gráfica su función derivada en color rojo; vemos también que podemos añadirle comentarios al código en cualquier sitio,


(%i5) draw2d(
        title = "Composicion seno y polinomio",
        xlabel = "x",
        ylabel = "y",
        dimensions = [600,300],
        grid = true,
        explicit(sin(x^2-x+1), x, -3,3),

        /* ahora va la derivada en rojo */
        color = red,
        explicit(diff(sin(x^2-x+1),x), x, -3,3)) $



La curva azul se ha reescalado automáticamente para acomodar la derivada dentro de la escena.


Representación gráfica de una función definida a trozos. Nos planteamos representar gráficamente la función


Damos por sentado que ya hemos cargado en memoria el paquete draw.

El asunto consiste en dibujar los tres trozos como funciones explícitas independientes,

(%i6) draw2d(
        grid = true,
        explicit(-1, x, -6,-4),
        explicit(x+2, x, -4,2),
        explicit(8/x, x, 2,6)) $



Vamos a mejorar la presentación añadiendo los ejes coordenados como líneas sólidas, al paso que hacemos el trazo algo más ancho y fijamos el rango del eje vertical,


(%i7) draw2d(
        grid = true,
        xaxis = true, xaxis_type = solid,
        yaxis = true, yaxis_type = solid,
        line_width = 3,
        yrange = [-4,5],

        /* ahora pintamos los tres trozos */
        explicit(-1, x, -10,-4),
        explicit(x+2, x, -4,2),
        explicit(8/x, x, 2,20)) $



Vemos que hay una discontinuidad de salto finito en = -4. Ahí la función toma el valor y = -2. Podemos hacer destacar este hecho si pintamos un círculo justo en ese lugar,


(%i8) draw2d(
        grid = true,
        xaxis = true, xaxis_type = solid,
        yaxis = true, yaxis_type = solid,
        line_width = 3,
        yrange = [-4,5],

        /* ahora pintamos los tres trozos */
        explicit(-1, x, -10,-4),
        explicit(x+2, x, -4,2),
        explicit(8/x, x, 2,20),

        /* añadimos el punto grueso en (-4,-2) */
        point_type = filled_circle,
        point_size = 4,
        points ([[-4,-2]]) ) $





No hay comentarios:

Publicar un comentario

Si tienes alguna pregunta sobre el contenido de esta entrada, puedes enviarme un comentario...