[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

8. Gráficos


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

8.1 Funciones y variables para gráficos

Función: contour_plot (expr, x_range, y_range, options, ...)

Dibuja las curvas de nivel expr en el rectángulo x_range por y_range. Cualesquiera otros argumentos adicionales se tratan como en plot3d.

contour_plot sólo trabaja cuando se utilizan gnuplot o gnuplot_pipes.

Véase también implicit_plot.

Ejemplos:

(%i1) contour_plot (x^2 + y^2, [x, -4, 4], [y, -4, 4]);
(%o1) 
(%i2) contour_plot (sin(y) * cos(x)^2, [x, -4, 4], [y, -4, 4]);
(%o2) 
(%i3) F(x, y) := x^3 + y^2;
                                   3    2
(%o3)                  F(x, y) := x  + y
(%i4) contour_plot (F, [u, -4, 4], [v, -4, 4]);
(%o4) 
(%i5) contour_plot (F, [u, -4, 4], [v, -4, 4],
         [gnuplot_preamble, "set size ratio -1"]);
(%o5) 
(%i6) set_plot_option ([gnuplot_preamble,
                        "set cntrparam levels 12"])$
(%i7) contour_plot (F, [u, -4, 4], [v, -4, 4]);
Variable opcional: in_netmath

Valor por defecto: false

Si in_netmath vale true, plot3d imprime salida de OpenMath en la consola si plot_format vale openmath, en caso contrario, in_netmath (incluso si vale true) deja de tener efecto alguno.

La variable in_netmath no afecta a plot2d.

Función: plot2d (expr, x_range, ..., options, ...)
Función: plot2d ([expr_1, ..., expr_n], ..., options, ...)
Función: plot2d ([expr_1, ..., expr_n], x_range,..., options, ...)

Donde expr, expr_1, ..., expr_n pueden ser expresiones, funciones u operadores de Maxima o Lisp, o una lista de cualquiera de las siguientes formas: [discrete, [x1, ..., xn], [y1, ..., yn]], [discrete, [[x1, y1], ..., [xn, ..., yn]] o [parametric, x_expr, y_expr, t_range].

Muestra un gráfico de una o más expresiones como función de una variable.

La función plot2d representa gráficamente la expresión expr o expresiones [name_1, ..., name_n]. Las expresiones que no sean de tipo paramétrico o discreto deben depender todas ellas de una única variable var, siendo obligatorio utilizar x_range para nombrar la variable y darle sus valores mínimo y máximo usando la siguiente sintaxis: [variable, min, max]. El gráfico mostrará el eje horizontal acotado por los valores min y max.

La expresión a ser representada puede ser dada en la forma discreta o paramétrica, esto es, como una lista que comienza con las palabras discrete o parametric. La clave discrete debe seguirse de dos listas de valores, ambas de igual longitud, conteniendo las coordenadas horizontales y verticales del conjunto de puntos; alternativamente, las coordenadas de cada punto pueden darse como listas de dos valores, todas ellas formando a su vez una lista. La clave parametric debe seguirse de dos expresiones, x_expr y y_expr, junto con un rango de la forma [var, min, max]; ambas expresiones deben depender únicamente de la variable cuyo nombre aparece en el rango. El gráfico mostrará los pares [x_expr, y_expr] según var varía de min a max.

El rango del eje vertical no es necesario especificarlo. Es una más de las opciones de la función, siendo su sintaxis [y, min, max], mostrando entonces la gráfica el rango completo, incluso si la función no alcanza estos valores. En caso de no especificarse el rango vertical en set_plot_option, se establecerá de forma automática como aquel rango en el que la función toma sus valores.

Cualesquiera otras opciones deben ser listas, comenzando con el nombre de la opción.

La opción xlabel puede utilizarse para darle una etiqueta al eje horizontal; si no se usa esta opción, el eje horizontal será etiquetado con el nombre de la variable especificada en x_range.

Del mismo modo se puede asignar una etiqueta al eje vertical con la opción ylabel. Si sólo hay una expresión a ser representada y no se ha hecho uso de la opción ylabel, el eje vertical será etiquetado con la expresión a ser representada, a menos que sea muy larga, o con el texto "discrete data", en caso de gráficos de puntos. Si la expresión es de tipo paramétrico, las dos expresiones que dan las coordenadas horizontal y vertical serán utilizadas para etiquetar ambos ejes.

Las opciones [logx] y [logy] no necesitan parámetros, permitiendo que los ejes horizontal y vertical se dibujen en la escala logarítmica.

Si hay varias expresiones para ser dibujadas, se mostrará una leyenda que identifique a cada una de ellas. Las etiquetas a utilizar pueden especificarse con la opción legend. Si no se utiliza esta opción, Maxima creará etiquetas a partir de las expresiones.

Por defecto, las funciones se dibujarán como un conjunto de segmentos lineales uniendo los puntos que bien se dan en formato discrete, o que se calculan automáticamente a partir de la expresión dada, de acuerdo con el tamaño muestral indicado por la opción nticks. Asimismo, la opción style puede utilizarse para mostrar los puntos aislados, o éstos junto con los segmentos que los unen.

Hay varias opciones globales almacenadas en la lista plot_options, las cuales se pueden modificar con la función set_plot_option; cualquiera de estas opciones puede ignorarse con las opciones que se utilicen desde el comando plot2d.

Las funciones a ser representadas pueden especificarse con el nombre de una función u operador de Maxima o de Lisp, con una expresión lambda de MAxima, o con una expresión válida de maxima. En caso de especificarse con un nombre o expresión lambda, la función debe ser tal que dependa de un solo argumento.

Ejemplos:

Gráficos de funciones ordinarias.

(%i1) plot2d (sin(x), [x, -5, 5])$

(%i2) plot2d (sec(x), [x, -2, 2], [y, -20, 20], [nticks, 200])$

../figures/plotting2
../figures/plotting3

Especificación de funciones por su nombre.

(%i3) F(x) := x^2 $

(%i4) :lisp (defun |$g| (x) (m* x x x))

$g
(%i5) H(x) := if x < 0 then x^4 - 1 else 1 - x^5 $

(%i6) plot2d (F, [u, -1, 1])$

(%i7) plot2d ([F, G, H], [u, -1, 1], [y, -1.5, 1.5])$

../figures/plotting4
../figures/plotting5

Se puede representar una circunferencia como una función paramétrica de parámetro t. No es necesario especificar el rango del eje horizontal, pues el propio rango de t determina el dominio. No obstante, ya que las longitudes de los ejes horizontal y vertical están en una proporción de 4 a 3, se utilizará la opción xrange para conseguir la misma escala en ambos ejes:

(%i8) plot2d ([parametric, cos(t), sin(t), [t,-%pi,%pi],
             [nticks,80]], [x, -4/3, 4/3])$

../figures/plotting6

Si se repite el mismo gráfico con solo 8 puntos y se extiende el rango del parámetro para que dé dos vueltas, se tiene el dibujo de una estrella:

(%i9) plot2d ([parametric, cos(t), sin(t), [t, -%pi*2, %pi*2],
        [nticks, 8]], [x, -2, 2], [y, -1.5, 1.5])$

../figures/plotting7

Combinación del gráfico de un polinomio cúbico y de una circunferencia paramétrica:

(%i10) plot2d ([x^3+2, [parametric, cos(t), sin(t), [t, -5, 5],
        [nticks, 80]]], [x, -3, 3])$

../figures/plotting8

Ejemplo de gráfico logarítmico:

(%i11) plot2d (exp(3*s), [s, -2, 2], [logy])$

../figures/plotting9

Ejemplos de gráficos de puntos, empezando por la definición de las coordenadas de cinco puntos en los dos formatos admisibles:

(%i12) xx:[10, 20, 30, 40, 50]$
(%i13) yy:[.6, .9, 1.1, 1.3, 1.4]$
(%i14) xy:[[10,.6], [20,.9], [30,1.1], [40,1.3], [50,1.4]]$

Representación de los puntos unidos por segmentos:

(%i15) plot2d([discrete,xx,yy])$

../figures/plotting10

Representación de los puntos aislados, ilustrando también la segunda forma de especificar las coordenadas:

(%i16) plot2d([discrete, xy], [style, points])$

../figures/plotting11

El gráfico de los puntos se puede mostrar conjuntamente con el de la función ter'ica que los predice:

(%i17) plot2d([[discrete,xy], 2*%pi*sqrt(l/980)], [l,0,50],
        [style, [points,5,2,6], [lines,1,1]],
        [legend,"experiment","theory"],
        [xlabel,"pendulum's length (cm)"], [ylabel,"period (s)"])$

../figures/plotting12

El significado de los tres números después de la opción "points" es el siguiente: 5, radio de los puntos; 2, índice del color (rojo); 6, tipo de objeto utilizado (cuadrados sólidos). Los dos números después de la opción "lines" hacen referencia al ancho de la línea (1 punto) y al color (1 para el azul).

Véase también plot_options, que describe las opciones gráficas, junto con más ejemplos.

Función: xgraph_curves (list)

Dibuja el conjunto de puntos de la lista del argumento list con el programa xgraph. Si el programa xgraph no está instalado, este comando producirá un error.

El conjunto de puntos puede ser de la forma

[x0, y0, x1, y1, x2, y2, ...]

o

[[x0, y0], [x1, y1], ...]

Un conjunto de puntos también puede contener símbolos con etiquetas u otra información.

xgraph_curves ([pt_set1, pt_set2, pt_set3]);

dibuja los tres conjuntos de puntos como tres curvas.

pt_set: append (["NoLines: True", "LargePixels: true"],
                          [x0, y0, x1, y1, ...]);

construye el conjunto de puntos, declara que no haya segmentos rectilíneos entre ellos y que se utilicen píxeles grandes. Véase el manual de xgraph para más opciones.

pt_set: append ([concat ("\"", "x^2+y")], [x0, y0, x1, y1, ...]);

construye una etiqueta con el contenido "x^2+y" para este conjunto particular de puntos. Las comillas dobles " al comienzo son las que le indican a xgraph que se trata de una etiqueta.

pt_set: append ([concat ("TitleText: Datos muestrales")], [x0, ...])$

establece el título principal del gráfico como "Datos muestrales" en lugar de "Maxima Plot".

Para hacer un gráfico de barras con columnas de 0.2 unidades de ancho y para dibujar dos diagramas diferentes de este tipo:

(%i1) xgraph_curves ([append (["BarGraph: true", "NoLines: true",
      "BarWidth: .2"], create_list ([i - .2, i^2], i, 1, 3)),
      append (["BarGraph: true", "NoLines: true", "BarWidth: .2"],
      create_list ([i + .2, .7*i^2], i, 1, 3))]);

../figures/plotting13

Se utiliza un fichero temporal `xgraph-out'.

Variable del sistema: plot_options

Los elementos de esta lista establecen las opciones por defecto para los gráficos. Si una opción está presente en una llamada a plot2d o a plot3d, este valor adquiere prevalencia sobre las opciones por defecto. En otro caso se utilizará el valor que tenga en plot_options. Las opciones por defecto se asignan mediante la función set_plot_option.

Cada elemento de plot_options es una lista de dos o más elementos, el primero de los cuales es el nombre de la opción, siendo los siguientes los valores de aquélla. En algunos casos el valor asignado es a su vez una lista, que puede contener varios elementos.

Las opciones gráficas que reconocen plot2d y plot3d son:

Opciones de Gnuplot:

Hay varias opciones gráficas que son específicas de gnuplot. Algunas de ellas son comandos propios de gnuplot que se especifican como cadenas alfanuméricas. Consúltese la documentación de Gnuplot para más detalles.

Ejemplos:

(%i1) plot2d (sin(x), [x, 0, 2*%pi], [gnuplot_term, ps],
                        [gnuplot_out_file, "sin.eps"])$
(%i2) plot2d ([gamma(x), 1/gamma(x)], [x, -4.5, 5], [y, -10, 10],
                     [gnuplot_preamble, "set key bottom"])$

../figures/plotting14

(%i3) my_preamble: "set xzeroaxis; set xtics ('-2pi' -6.283, \
'-3pi/2' -4.712, '-pi' -3.1415, '-pi/2' -1.5708, '0' 0, \
'pi/2' 1.5708, 'pi' 3.1415,'3pi/2' 4.712, '2pi' 6.283)"$

(%i4) plot2d([cos(x), sin(x), tan(x), cot(x)],
       [x, -2*%pi, 2.1*%pi], [y, -2, 2],
       [gnuplot_preamble, my_preamble]);

../figures/plotting15

(%i5) my_preamble: "set xzeroaxis; set xtics ('-2{/Symbol p}' \
-6.283, '-3{/Symbol p}/2' -4.712, '-{/Symbol p}' -3.1415, \
'-{/Symbol p}/2' -1.5708, '0' 0,'{/Symbol p}/2' 1.5708, \
'{/Symbol p}' 3.1415,'3{/Symbol p}/2' 4.712, '2{/Symbol p}' \
6.283)"$

(%i6) plot2d ([cos(x), sin(x), tan(x)], [x, -2*%pi, 2*%pi],
    [y, -2, 2], [gnuplot_preamble, my_preamble],
    [gnuplot_term, ps], [gnuplot_out_file, "trig.eps"]);
(%i7) plot3d (atan (-x^2 + y^3/4), [x, -4, 4], [y, -4, 4],
        [grid, 50, 50], [gnuplot_pm3d, true])$

../figures/plotting16

(%i8) my_preamble: "set pm3d at s;unset surface;set contour;\
set cntrparam levels 20;unset key"$
(%i9) plot3d(atan(-x^2 + y^3/4), [x, -4, 4], [y, -4, 4],
    [grid, 50, 50], [gnuplot_pm3d, true],
    [gnuplot_preamble, my_preamble])$

../figures/plotting17

(%i10) plot3d (cos (-x^2 + y^3/4), [x, -4, 4], [y, -4, 4],
    [gnuplot_preamble, "set view map; unset surface"],
    [gnuplot_pm3d, true], [grid, 150, 150])$

../figures/plotting18

Function: plot3d ([expr_1, expr_2, expr_3], x_range, y_range, ..., options, ...)
Función: plot3d (expr, x_range, y_range, ..., options, ...)
Función: plot3d (name, x_range, y_range, ..., options, ...)
Función: plot3d ([expr_1, expr_2, expr_3], x_rge, y_rge)
Función: plot3d ([name_1, name_2, name_3], x_range, y_range, ..., options, ...)

Representa gráficamente una o tres expresiones como funciones de dos variables.

(%i1) plot3d (2^(-u^2 + v^2), [u, -3, 3], [v, -2, 2]);

../figures/plotting19

dibuja z = 2^(-u^2+v^2) con u y v variando en [-3,3] y [-2,2] respectivamente, y con u sobre el eje x, y con v sobre el eje y.

El mismo gráfico se puede dibujar usando openmath (si Xmaxima fué instalado):

(%i2)  plot3d (2^(-u^2 + v^2), [u, -3, 3], [v, -2, 2],
               [plot_format, openmath]);

../figures/plotting25

en este caso el ratón se puede usar para rotar el gráfico y ver la superficie desde diferentes lados.

Un ejemplo del tercer patrón de argumentos es

(%i3) plot3d ([cos(x)*(3 + y*cos(x/2)), sin(x)*(3 + y*cos(x/2)),
   y*sin(x/2)], [x, -%pi, %pi], [y, -1, 1], ['grid, 50, 15]);

../figures/plotting20

que dibuja una banda de Moebius, parametrizada por las tres expresiones dadas como primer argumento a plot3d. Un argumento opcional ['grid, 50, 15] da el número de intervalos en las direcciones x e y, respectivamente.

Cuando la función a representar ha sido definida en Maxima mediante := o define, o en Lisp por DEFUN o DEFMFUN, entonces se podrá especificar por su nombre. Las funciones definidas a nivel de LISP por DEFMSPEC, las funciones de simplificación, junto con muchas otras funciones, no pueden especificarse directamente por su nombre.

Este ejemplo muestra un gráfico de la parte real de z^1/3.

(%i4) plot3d (r^.33*cos(th/3), [r, 0, 1], [th, 0, 6*%pi],
      ['grid, 12, 80], ['transform_xy, polar_to_xy]);

../figures/plotting21

Otros ejemplos son la botella de Klein:

(%i5) expr_1: 5*cos(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)
      + 3.0) - 10.0$
(%i6) expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)
      + 3.0)$
(%i7) expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y))$

(%i8) plot3d ([expr_1, expr_2, expr_3], [x, -%pi, %pi],
      [y, -%pi, %pi], ['grid, 40, 40]);

../figures/plotting22

y un toro:

(%i9) expr_1: cos(y)*(10.0+6*cos(x))$
(%i10) expr_2: sin(y)*(10.0+6*cos(x))$
(%i11) expr_3: -6*sin(x)$
(%i12) plot3d ([expr_1, expr_2, expr_3], [x, 0, 2*%pi],
       [y, 0, 2*%pi], ['grid, 40, 40]);

../figures/plotting23

En ocasiones puede ser necesario definir una función para representarla. Todos los argumentos de plot3d se evalúan, de manera que puede ser difícil escribir una expresión que haga lo que el usuario realmente quiere; en tales casos facilita las cosas definir previamente la función.

(%i13) M: matrix([1, 2, 3, 4], [1, 2, 3, 2], [1, 2, 3, 4],
       [1, 2, 3, 3])$
(%i14) f(x, y) := float (M [?round(x), ?round(y)])$
(%i15) plot3d (f, [x, 1, 4], [y, 1, 4], ['grid, 4, 4])$

../figures/plotting24

Véase plot_options para más ejemplos.

Función: make_transform (vars, fx, fy, fz)

Devuelve una función apropiada para la función de transformación de plot3d. Debe usarse con la opción gráfica transform_xy.

make_transform ([r, th, z], r*cos(th), r*sin(th), z)$

es una transformación para pasar a coordenadas polares.

Función: set_plot_option (option)

Asigna un valor a una de las variables globales que controlan los gráficos. El argumento option se especifica como una lista de dos o más elementos, en la que el primero es el nombre de una de las opciones de la lista plot_options.

La función set_plot_option evalúa sus argumentos y devuelve plot_options tal como queda después de la actualización.

Véanse también plot_options, plot2d y plot3d.

Ejemplos:

Se modifican los valores de grid y x. Si a un nombre de opción de plot_options tiene ya un valor asignado, hacerlo preceder de un apóstrofo para evitar su evaluación.

(%i1) set_plot_option ([grid, 30, 40]);
(%o1) [[x, - 1.755559702014E+305, 1.755559702014E+305], 
[y, - 1.755559702014E+305, 1.755559702014E+305], [t, - 3, 3], 
[grid, 30, 40], [transform_xy, false], [run_viewer, true], 
[plot_format, gnuplot], [gnuplot_term, default], 
[gnuplot_out_file, false], [nticks, 10], [adapt_depth, 10], 
[gnuplot_pm3d, false], [gnuplot_preamble, ], 
[gnuplot_curve_titles, [default]], 
[gnuplot_curve_styles, [with lines 3, with lines 1, 
with lines 2, with lines 5, with lines 4, with lines 6, 
with lines 7]], [gnuplot_default_term_command, ], 
[gnuplot_dumb_term_command, set term dumb 79 22], 
[gnuplot_ps_term_command, set size 1.5, 1.5;set term postscript #
eps enhanced color solid 24]]
(%i2) x: 42;
(%o2)                          42
(%i3) set_plot_option (['x, -100, 100]);
(%o3) [[x, - 100.0, 100.0], [y, - 1.755559702014E+305, 
1.755559702014E+305], [t, - 3, 3], [grid, 30, 40], 
[transform_xy, false], [run_viewer, true], 
[plot_format, gnuplot], [gnuplot_term, default], 
[gnuplot_out_file, false], [nticks, 10], [adapt_depth, 10], 
[gnuplot_pm3d, false], [gnuplot_preamble, ], 
[gnuplot_curve_titles, [default]], 
[gnuplot_curve_styles, [with lines 3, with lines 1, 
with lines 2, with lines 5, with lines 4, with lines 6, 
with lines 7]], [gnuplot_default_term_command, ], 
[gnuplot_dumb_term_command, set term dumb 79 22], 
[gnuplot_ps_term_command, set size 1.5, 1.5;set term postscript #
eps enhanced color solid 24]]

Funciones para trabajar con el formato gnuplot_pipes:

Función: gnuplot_start ()

Inicializa una tubería hacia Gnuplot, con el fin de ser utilizada para utilizar el formato gnuplot_pipes. No es necesario inicializarla manualmente antes de hacer gráficos.

Función: gnuplot_close ()

Cierra la tubería hacia Gnuplot que haya sido utilizada para hacer gráficos.

Función: gnuplot_restart ()

Cierra la tubería hacia Gnuplot que haya sido utilizada para hacer gráficos e inicializa una nueva.

Función: gnuplot_replot ()
Función: gnuplot_replot (s)

Actualiza la ventana de Gnuplot. Si gnuplot_replot es invocada con un comando de Gnuplot en la cadena s, entonces s es enviada a Gnuplot antes de redibujar la ventana.

Función: gnuplot_reset ()

Resetea Gnuplot cuando se utiliza el formato gnuplot_pipes. Para actualizar la ventana de Gnuplot invóquese a gnuplot_replot después de gnuplot_reset.


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Robert Dodier on diciembre, 22 2007 using texi2html 1.76.