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

8. Gráficos


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

8.1 Definiciones para Gráficos

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: openplot_curves (list, rest_options)

Toma una lista de curvas como

 
[[x1, y1, x2, y2, ...], [u1, v1, u2, v2, ...], ..]

o

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

y las dibuja. Es similar a xgraph_curves, pero utiliza las rutinas de "open plot". Se le puede dar argumentos adicionales como "{xrange -3 4}" El siguiente ejemplo dibuja dos curvas con puntos grandes, etiquetando el primero con jim y el segundo con jane.

 
openplot_curves ([["{plotpoints 1} {pointsize 6} {label jim}
      {xaxislabel {joe is nice}}"], [1, 2, 3, 4, 5, 6, 7, 8],
      ["{label jane} {color pink }"], [3, 1, 4, 2, 5, 7]]);

Otros símbolos de elementos importantes son xfun, color, plotpoints, linecolors, pointsize, nolines, bargraph, labelposition, xaxislabel y yaxislabel.

Función: plot2d (expr, range, ..., options, ...)
Función: plot2d (parametric_expr)
Función: plot2d (discrete_expr)
Función: plot2d ([expr_1, ..., expr_n], x_range, y_range)
Función: plot2d ([expr_1, ..., expr_n], x_range)
Función: plot2d (expr, x_range, y_range)
Función: plot2d (expr, x_range)
Función: plot2d ([name_1, ..., name_n], x_range, y_range)
Función: plot2d ([name_1, ..., name_n], x_range)
Función: plot2d (name, x_range, y_range)
Función: plot2d (name, x_range)

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

En todos los casos, expr es una expresión a ser representada en el eje vertical como función de una variable. El argumento x_range, que es el rango del eje horizontal, es una lista de la forma [variable, min, max], donde variable es una variable que aparece en expr. También y_range, el rango del eje vertical, es otra lista de la forma [y, min, max].

La llamada plot2d (expr, x_range) dibuja plots expr como función de la variable nombrada en x_range, en el rango especificado por x_range. Si el rango vertical no se especifica explícitamente por medio de set_plot_option, se escogerá automáticamente. Todas las opciones toman sus valores por defecto a menos que se especifiquen de otra manera con set_plot_option.

La llamada plot2d (expr, x_range, y_range) dibuja expr como función de la variable nombrada en x_range, en el rango especificado por x_range. El rango vertical se ajusta a y_range. Todas las opciones toman sus valores por defecto a menos que se especifiquen de otra manera con set_plot_option.

La llamada plot2d ([expr_1, ..., expr_n], x_range) dibuja expr_1, ..., expr_n como función de la variable nombrada en x_range, en el rango especificado por x_range. Si el rango vertical no se especifica explícitamente por medio de set_plot_option, se escogerá automáticamente. Todas las opciones toman sus valores por defecto a menos que se especifiquen de otra manera con set_plot_option.

La llamada plot2d ([expr_1, ..., expr_n], x_range, y_range) dibuja expr_1, ..., expr_n como función de la variable nombrada en x_range, en el rango especificado por x_range. El rango vertical se ajusta a y_range. Todas las opciones toman sus valores por defecto a menos que se especifiquen de otra manera con set_plot_option.

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.

Ejemplos:

Gráfico de una expresión y especificación de algunos parámetros de uso común.

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

Representando funciones por nombre.

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

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

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

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

(%i4) plot2d ([F, G, H], [u, -1, 1])$

Allá donde vaya una expresión ordinaria, también puede ir una expresión paramétrica en su lugar: parametric_expr es una lista de la forma [parametric, x_expr, y_expr, t_range, options]. Aquí x_expr y y_expr son expresiones de una variable var que a su vez es el primer elemento del rango trange. El dibujo que se obtiene es el lugar geométrico de los pares [x_expr, y_expr] cuando var varía según trange.

En el siguiente ejemplo se dibuja un círculo, luego se repite lo mismo con pocos puntos, con lo que se obtiene una estrella, para finalmente dibujar todo junto con una función ordinaria en x.

Ejemplos:

También se pueden utilizar expresiones discretas en lugar de ordinarias o paramétricas: discrete_expr es una lista de la forma [discrete, x_list, y_list] o [discrete, xy_list], siendo xy_list una lista de pares [x,y].

Ejemplos:

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

Función: xgraph_curves (list)

Dibuja el conjunto de puntos de la lista del argumento list con el programa xgraph.

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:

 
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))]);

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:

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

Ejemplos:

 
plot2d (sin(x), [x, 0, 2*%pi], [gnuplot_term, ps], [gnuplot_out_file, "sin.eps"])$
 
plot2d ([gamma(x), 1/gamma(x)], [x, -4.5, 5], [y, -10, 10], [gnuplot_preamble, "set key bottom"])$
 
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)"$
plot2d ([cos(x), sin(x), tan(x), cot(x)], [x, -2*%pi, 2*%pi],
    [y, -2, 2], [gnuplot_preamble, my_preamble]);
 
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)"$
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"]);
 
plot3d (atan (-x^2 + y^3/4), [x, -4, 4], [y, -4, 4], [grid, 50, 50], [gnuplot_pm3d, true])$
 
my_preamble: "set pm3d at s;unset surface;set contour;set cntrparam levels 20;unset key"$
plot3d (atan (-x^2 + y^3/4), [x, -4, 4], [y, -4, 4], [grid, 50, 50],
    [gnuplot_pm3d, true], [gnuplot_preamble, my_preamble])$
 
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])$
Función: plot3d (expr, x_range, y_range, ..., options, ...)
Función: plot3d ([expr_1, expr_2, expr_3], x_range, y_range, ..., options, ...)
Function: plot3d ([expr_1, expr_2, expr_3], x_rge, y_rge)
Function: plot3d ([name_1, name_2, name_3], x_range, y_range, ..., options, ...)

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

 
plot3d (2^(-u^2 + v^2), [u, -5, 5], [v, -7, 7]);

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

Un ejemplo del tercer patrón de argumentos es

 
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]);

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.

 
 plot3d (r^.33*cos(th/3), [r, 0, 1], [th, 0, 6*%pi],
     ['grid, 12, 80], ['plot_format, ps],
     ['transform_xy, polar_to_xy], ['view_direction, 1, 1, 1.4],
     ['colour_z, true]);

Aquí la opción view_direction indica la dirección desde la que se hace la proyección. Se hace esto desde una posición infinita pero paralela a la línea que va desde view_direction hasta el origen. Esto sólo se utiliza cuando plot_format está en ps, puesto que los otros visores permiten la rotación interactiva del objeto.

Otro ejemplo es la botella de Klein:

 
expr_1: 5*cos(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y) + 3.0) - 10.0;
expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y) + 3.0);
expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y));

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

o un toro

 
expr_1: cos(y)*(10.0+6*cos(x));
expr_2: sin(y)*(10.0+6*cos(x));
expr_3: -6*sin(x);

plot3d ([expr_1, expr_2, expr_3], [x, 0, 2*%pi], [y, 0, 2*%pi], ['grid, 40, 40]);

También se puede hacer con gnuplot:

 
plot3d (2^(x^2 - y^2), [x, -1, 1], [y, -2, 2], [plot_format, gnuplot]);

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.

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

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: plot2d_ps (expr, range)

Escribe en el pstream una secuencia de comandos PostScript que dibujan expr sobre range.

El argumento expr es una expresión y range es una lista de la forma [x, min, max] en la cual x es una variable que aparece en expr.

Véase también closeps.

Función: closeps ()

Esta función debería invocarse al final de una secuencia de comandos gráficos. Cierra el pstream y le asigna nil. También puede ser invocado antes de empezar un dibujo, para asegurar que se cierre el pstream si estaba abierto. Todas las instrucciones que se envían al pstream lo abren si es necesario. La función closeps es independiente de otras instrucciones gráficas, ya que si se quiere dibujar dos rangos o sobreponer varios gráficos, pstream debe permanecer abierto.

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], [view_direction, 1, 1, 1], [colour_z, false], 
[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], 
[view_direction, 1, 1, 1], [colour_z, false], 
[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]]
Función: psdraw_curve (ptlist)

Dibuja una curva uniendo los puntos de ptlist, que puede ser de la forma [x0, y0, x1, y1, ...] o [[x0, y0], [x1, y1], ...]

La función join se puede utilizar para tomar una lista con las x y otra con las y para luego formar pares.

La función psdraw_curve tan sólo llama a la función pscurve. Esta es su definición:

 
(defun $psdraw_curve (lis)
  (p "newpath")
  ($pscurve lis)
  (p "stroke"))

Función: pscom (cmd)

El argumento cmd se añade al fichero PostScript. Ejemplo:

 
pscom ("4.5 72 mul 5.5 72 mul translate 14 14 scale");

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

This document was generated by root on octubre, 3 2006 using texi2html 1.76.