1
@c english version 1.27
3
* Definiciones para Gr@'aficos::
6
@node Definiciones para Gr@'aficos, , Gr@'aficos, Gr@'aficos
7
@section Definiciones para Gr@'aficos
9
@defvr {Variable opcional} in_netmath
10
Valor por defecto: @code{false}
12
Si @code{in_netmath} vale @code{true},
13
@code{plot3d} imprime salida de OpenMath en la consola si @code{plot_format} vale @code{openmath},
14
en caso contrario, @code{in_netmath} (incluso si vale @code{true}) deja de tener efecto alguno.
16
La variable @code{in_netmath} no afecta a @code{plot2d}.
20
@deffn {Funci@'on} openplot_curves (@var{list}, @var{rest_options})
21
Toma una lista de curvas como
23
[[x1, y1, x2, y2, ...], [u1, v1, u2, v2, ...], ..]
27
[[[x1, y1], [x2, y2], ...], ...]
29
y las dibuja. Es similar a xgraph_curves, pero utiliza las rutinas de "open plot".
30
Se le puede dar argumentos adicionales como
31
@code{"@{xrange -3 4@}"}
32
El siguiente ejemplo dibuja dos curvas con puntos grandes, etiquetando el primero con @code{jim} y el segundo con @code{jane}.
34
(%i1) openplot_curves ([["@{plotpoints 1@} @{pointsize 6@}
35
@{label jim@} @{xaxislabel @{joe is nice@}@}"],
36
[1, 2, 3, 4, 5, 6, 7, 8], ["@{label jane@} @{color pink @}"],
37
[3, -1, 4, 2, 5, 7]]);
41
@image{../figures/plotting1,8cm}
44
Otros s@'{@dotless{i}}mbolos de elementos importantes son @code{xfun},
45
@code{color}, @code{plotpoints}, @code{linecolors}, @code{pointsize},
46
@code{nolines}, @code{bargraph}, @code{labelposition}, @code{xaxislabel} y
51
@deffn {Funci@'on} plot2d (@var{expr}, @var{range}, ..., @var{options}, ...)
52
@deffnx {Funci@'on} plot2d (@var{parametric_expr})
53
@deffnx {Funci@'on} plot2d (@var{discrete_expr})
54
@deffnx {Funci@'on} plot2d ([@var{expr_1}, ..., @var{expr_n}], @var{x_range}, @var{y_range})
55
@deffnx {Funci@'on} plot2d ([@var{expr_1}, ..., @var{expr_n}], @var{x_range})
56
@deffnx {Funci@'on} plot2d (@var{expr}, @var{x_range}, @var{y_range})
57
@deffnx {Funci@'on} plot2d (@var{expr}, @var{x_range})
58
@deffnx {Funci@'on} plot2d ([@var{name_1}, ..., @var{name_n}], @var{x_range}, @var{y_range})
59
@deffnx {Funci@'on} plot2d ([@var{name_1}, ..., @var{name_n}], @var{x_range})
60
@deffnx {Funci@'on} plot2d (@var{name}, @var{x_range}, @var{y_range})
61
@deffnx {Funci@'on} plot2d (@var{name}, @var{x_range})
63
Muestra un gr@'afico de una o m@'as expresiones como funci@'on de una variable.
65
En todos los casos, @var{expr} es una expresi@'on a ser representada en el eje
66
vertical como funci@'on de una variable. El argumento @var{x_range}, que es el
67
rango del eje horizontal, es una lista de la forma @code{[@var{variable},
68
@var{min}, @var{max}]}, donde @var{variable} es una variable que aparece en
69
@var{expr}. Tambi@'en @var{y_range}, el rango del eje vertical, es otra lista
70
de la forma @code{[y, @var{min}, @var{max}]}.
72
La llamada @code{plot2d (@var{expr}, @var{x_range})} dibuja plots @var{expr}
73
como funci@'on de la variable nombrada en @var{x_range}, en el rango
74
especificado por @var{x_range}. Si el rango vertical no se especifica
75
expl@'{@dotless{i}}citamente por medio de @code{set_plot_option}, se escoger@'a
76
autom@'aticamente. Todas las opciones toman sus valores por defecto a menos
77
que se especifiquen de otra manera con @code{set_plot_option}.
79
La llamada @code{plot2d (@var{expr}, @var{x_range}, @var{y_range})} dibuja
80
@var{expr} como funci@'on de la variable nombrada en @var{x_range}, en el rango
81
especificado por @var{x_range}. El rango vertical se ajusta a @var{y_range}.
82
Todas las opciones toman sus valores por defecto a menos que se especifiquen de
83
otra manera con @code{set_plot_option}.
85
La llamada @code{plot2d ([@var{expr_1}, ..., @var{expr_n}], @var{x_range})}
86
dibuja @var{expr_1}, ..., @var{expr_n} como funci@'on de la variable nombrada
87
en @var{x_range}, en el rango especificado por @var{x_range}. Si el rango
88
vertical no se especifica expl@'{@dotless{i}}citamente por medio de
89
@code{set_plot_option}, se escoger@'a autom@'aticamente. Todas las opciones
90
toman sus valores por defecto a menos que se especifiquen de otra manera con
91
@code{set_plot_option}.
93
La llamada @code{plot2d ([@var{expr_1}, ..., @var{expr_n}], @var{x_range},
94
@var{y_range})} dibuja @var{expr_1}, ..., @var{expr_n} como funci@'on de la
95
variable nombrada en @var{x_range}, en el rango especificado por @var{x_range}.
96
El rango vertical se ajusta a @var{y_range}. Todas las opciones toman sus
97
valores por defecto a menos que se especifiquen de otra manera con
98
@code{set_plot_option}.
100
La funci@'on a representar puede ser identificada por medio del nombre de un
101
operador o funci@'on de Maxima o Lisp, con una expresi@'on lambda, o con una
102
expresi@'on de Maxima. Cuando se use un nombre o expresi@'on lambda, la funci@'on
103
a la que se refiere debe depender de un @'unico argumento.
107
Gr@'afico de una expresi@'on y especificaci@'on de algunos par@'ametros de uso
111
(%i1) plot2d (sin(x), [x, -5, 5])$
112
(%i2) plot2d (sec(x), [x, -2, 2], [y, -20, 20], [nticks, 200])$
116
@image{../figures/plotting2,8cm}@image{../figures/plotting3,8cm}
119
@b{Representando funciones por nombre.}
123
@c :lisp (defun |$g| (x) (m* x x x))
124
@c H(x) := if x < 0 then x^4 - 1 else 1 - x^5 $
125
@c plot2d (F, [u, -1, 1])$
126
@c plot2d ([F, G, H], [u, -1, 1])$
131
(%i2) :lisp (defun |$g| (x) (m* x x x))
134
(%i2) H(x) := if x < 0 then x^4 - 1 else 1 - x^5 $
136
(%i3) plot2d (F, [u, -1, 1])$
138
(%i4) plot2d ([F, G, H], [u, -1, 1])$
142
@image{../figures/plotting4,8cm}@image{../figures/plotting5,8cm}
145
All@'a donde vaya una expresi@'on ordinaria, tambi@'en puede ir una expresi@'on
146
param@'etrica en su lugar: @var{parametric_expr} es una lista de la forma
147
@code{[parametric, @var{x_expr}, @var{y_expr}, @var{t_range}, @var{options}]}.
148
Aqu@'{@dotless{i}} @var{x_expr} y @var{y_expr} son expresiones de una variable
149
@var{var} que a su vez es el primer elemento del rango @var{trange}. El dibujo
150
que se obtiene es el lugar geom@'etrico de los pares @code{[@var{x_expr},
151
@var{y_expr}]} cuando @var{var} var@'{@dotless{i}}a seg@'un @var{trange}.
153
En el siguiente ejemplo se dibuja un c@'{@dotless{i}}rculo, luego se repite lo
154
mismo con pocos puntos, con lo que se obtiene una estrella, para finalmente
155
dibujar todo junto con una funci@'on ordinaria en @code{x}.
157
@b{Ejemplos de gr@'aficos param@'etricos:}
161
Un c@'{@dotless{i}}rculo como curva param@'etrica.
163
(%i1) plot2d ([parametric, cos(t), sin(t), [t, -%pi*2, %pi*2],
168
@image{../figures/plotting6,8cm}
172
Una estrella: la curva anterior con s@'olo ocho puntos.
174
(%i2) plot2d ([parametric, cos(t), sin(t), [t, -%pi*2, %pi*2],
179
@image{../figures/plotting7,8cm}
183
Un polinomio c@'ubico definido como curva ordinaria y un c@'{@dotless{i}}rculo
184
definido en forma param@'etrica.
186
(%i3) plot2d ([x^3 + 2, [parametric, cos(t), sin(t), [t, -5, 5],
187
[nticks, 80]]], [x, -3, 3])$
191
@image{../figures/plotting8,8cm}
196
Tambi@'en se pueden utilizar expresiones discretas en lugar de ordinarias o
197
param@'etricas: @var{discrete_expr} es una lista de la forma @code{[discrete,
198
@var{x_list}, @var{y_list}]} o @code{[discrete, @var{xy_list}]}, siendo
199
@var{xy_list} una lista de pares @code{[@var{x},@var{y}]}.
201
@b{Ejemplos de gr@'aficos discretos:}
205
Se crean algunas listas para los ejemplos siguientes.
207
(%i1) xx:makelist(x,x,0,10)$
208
(%i2) yy:makelist(exp(-x*1.0),x,0,10)$
209
(%i3) xy:makelist([x,x*x],x,0,5)$
213
Dibujo con segmentos lineales.
215
(%i4) plot2d([discrete,xx,yy])$
219
@image{../figures/plotting9,8cm}
223
Dibujo con segmentos lineales, utilizando una lista de pares.
225
(%i5) plot2d([discrete,xy])$
229
@image{../figures/plotting10,8cm}
235
(%i6) plot2d([discrete,xx,yy],[gnuplot_curve_styles,
240
@image{../figures/plotting11,8cm}
244
Dibujo de la curva @code{cos(@var{x})} con segmentos y (@var{xx},@var{yy}) con
247
(%i7) plot2d([cos(x),[discrete,xx,yy]],[x,0,10],
248
[gnuplot_curve_styles,
249
["with lines","with points pointsize 3"]])$
254
@image{../figures/plotting12,8cm}
257
V@'ease tambi@'en @code{plot_options}, que describe las opciones gr@'aficas y
258
tiene m@'as ejemplos.
262
@deffn {Funci@'on} xgraph_curves (@var{list})
263
Dibuja el conjunto de puntos de la lista del argumento @var{list} con el
264
programa xgraph. Si el programa xgraph no est@'a instalado, este comando
265
producir@'a un error.
267
El conjunto de puntos puede ser de la forma
270
[x0, y0, x1, y1, x2, y2, ...]
274
[[x0, y0], [x1, y1], ...]
277
Un conjunto de puntos tambi@'en puede contener s@'{@dotless{i}}mbolos con etiquetas u otra informaci@'on.
280
xgraph_curves ([pt_set1, pt_set2, pt_set3]);
283
dibuja los tres conjuntos de puntos como tres curvas.
286
pt_set: append (["NoLines: True", "LargePixels: true"],
287
[x0, y0, x1, y1, ...]);
291
construye el conjunto de puntos, declara que no haya segmentos rectil@'{@dotless{i}}neos entre ellos y que se utilicen p@'{@dotless{i}}xeles grandes. V@'ease el manual de xgraph para m@'as opciones.
294
pt_set: append ([concat ("\"", "x^2+y")], [x0, y0, x1, y1, ...]);
298
construye una etiqueta con el contenido "x^2+y" para este conjunto particular de puntos. Las comillas dobles @code{"} al comienzo son las que le indican a xgraph que se trata de una etiqueta.
301
pt_set: append ([concat ("TitleText: Datos muestrales")], [x0, ...])$
305
establece el t@'{@dotless{i}}tulo principal del gr@'afico como "Datos muestrales" en lugar de "Maxima Plot".
307
Para hacer un gr@'afico de barras con columnas de 0.2 unidades de ancho y para dibujar dos diagramas diferentes de este tipo:
309
(%i1) xgraph_curves ([append (["BarGraph: true", "NoLines: true",
310
"BarWidth: .2"], create_list ([i - .2, i^2], i, 1, 3)),
311
append (["BarGraph: true", "NoLines: true", "BarWidth: .2"],
312
create_list ([i + .2, .7*i^2], i, 1, 3))]);
316
@image{../figures/plotting13,8cm}
321
Se utiliza un fichero temporal @file{xgraph-out}.
325
@defvr {Variable del sistema} plot_options
326
Los elementos de esta lista establecen las opciones por defecto para los gr@'aficos.
327
Si una opci@'on est@'a presente en una llamada a @code{plot2d} o a @code{plot3d},
328
este valor adquiere prevalencia sobre las opciones por defecto.
329
En otro caso se utilizar@'a el valor que tenga en @code{plot_options}.
330
Las opciones por defecto se asignan mediante la funci@'on @code{set_plot_option}.
332
Cada elemento de @code{plot_options} es una lista de dos o m@'as elementos, el primero de los cuales es el nombre de la opci@'on, siendo los siguientes los valores de aqu@'ella. En algunos casos el valor asignado es a su vez una lista, que puede contener varios elementos.
334
Las opciones gr@'aficas que reconocen @code{plot2d} y @code{plot3d} son:
338
Opci@'on: @code{plot_format} determina qu@'e m@'odulo gr@'afico van a utilizar @code{plot2d} y @code{plot3d}.
342
Valor por defecto: @code{gnuplot}
343
Gnuplot es el programa por defecto y el m@'as avanzado. Requiere de una instalaci@'on externa de gnuplot.
346
Valor: @code{mgnuplot}
347
Mgnuplot es una interface para gnuplot basada en Tk. Se incluye en la distribuci@'on de Maxima. Mgnuplot ofrece una interface gr@'afica de usuario rudimentaria para gnuplot, pero tiene algunas mejoras respecto de la interface propia de gnuplot. Mgnuplot requiere de una instalaci@'on externa de gnuplot y de Tcl/Tk.
350
Valor: @code{openmath}
351
Openmath es un programa gr@'afico escrito en Tcl/Tk. Se incluye en la distribuci@'on de Maxima.
355
Genera ficheros PostScript directamente desde Maxima. Se tendr@'an resultados PostScript mejores utilizando gnuplot,
356
dejando la opci@'on @code{plot_format} sin especificar (aceptando la que tiene por defecto), y d@'andole a @code{gnuplot_term} el valor @code{ps}.
360
Opci@'on: @code{run_viewer} controla si el visor apropiado para la salida gr@'afica debe ejecutarse o no.
364
@c DOES FALSE IMPLY THE OUTPUT FILE IS GENERATED AND NOT SHOWN ?? OR IS NOTHING GENERATED ??
365
Valor por defecto: @code{true}, ejecuta el visor.
368
Valor: @code{false}, no ejecuta el visor.
372
@code{gnuplot_term} establece el terminal de gnuplot.
375
Valor por defecto: @code{default}
376
La salidad de gnuplot se muestra en una ventana gr@'afica.
380
GLa salidad de gnuplot se muestra en la consola de Maxima con caracteres ASCII.
384
Gnuplot genera comandos en lenguaje PostScript.
385
Si la opci@'on @code{gnuplot_out_file} vale @var{filename},
386
gnuplot escribe los comandos PostScript en @var{filename};
387
en caso contrario, los almacena en el fichero @code{maxplot.ps}.
390
Valor: cualquier especificaci@'on v@'alida de terminal admitida por gnuplot.
391
Gnuplot puede generar salidas en otros muchos formatos gr@'aficos,
392
como png, jpeg, svg, etc. Para crear una figura en cualquiera de estos
393
formatos, se debe asignar a la opci@'on @code{gnuplot_term} el nombre
394
(en forma de s@'{@dotless{i}}mbolo) de cualquiera de los terminales que soporta
395
gnuplot, o la especificaci@'on completa del terminal con cualquiera de
396
las opciones v@'alidas (en forma de cadena). Por ejemplo,
397
@code{[gnuplot_term,png]} crea una salida en formato PNG (Portable Network Graphics),
398
mientras que @code{[gnuplot_term,"png size 1000,1000"]} crea un PNG de tama@~no
399
1000x1000 pixels. Si la opci@'on @code{gnuplot_out_file} se ajusta a @var{filename},
400
gnuplot almacena la salida en el fichero @var{filename}; en caso contrario,
401
se guarda en el fichero @code{maxplot.@var{term}}, siendo @var{term} el nombre
402
del terminal de gnuplot.
407
Opci@'on: @code{gnuplot_out_file} escribe la salida de gnuplot en un fichero.
411
Valor por defecto: @code{false} No se especifica ning@'un archivo de salida.
413
Valor: @var{filename}
414
Ejemplo: @code{[gnuplot_out_file, "myplot.ps"]}
415
Este ejemplo env@'{@dotless{i}}a c@'odigo PostScript al fichero @code{myplot.ps} cuando se utiliza conjuntamente con el terminal PostScript de gnuplot.
416
@c DOES OUTPUT FILE != FALSE IMPLY DON'T RUN THE VIEWER ??
417
@c WHAT HAPPENS IF OUTPUT FILE IS SPEFICIED BUT TERMINAL IS NOT PS ??
422
Rango horizontal por defecto.
426
Establece el rango horizontal como [-3, 3].
430
Rango vertical por defecto.
434
Establece el rango vertical como [-3, 3].
438
El rango por defecto para el par@'ametro de las representaciones param@'etricas.
442
Establece el rango de la variable param@'etrica como [0, 10].
445
Opci@'on: @code{nticks}
446
N@'umero inicial de puntos a utilizar por el algoritmo adaptativo de representaci@'on gr@'afica.
450
El valor por defecto para @code{nticks} es 10.
453
Opci@'on: @code{adapt_depth}
454
N@'umero m@'aximo de particiones utilizado por el algoritmo adaptativo de representaci@'on gr@'afica.
458
El valor por defecto para @code{adapt_depth} es 10.
461
Opci@'on: @code{grid}
462
Establece el n@'umero de puntos de la ret@'{@dotless{i}}cula a utilizar en las direcciones x e y en los gr@'aficos de tres dimensiones.
466
establece la ret@'{@dotless{i}}cula en 50 por 50 puntos. El valor por defecto es 30 por 30.
469
Opci@'on: @code{transform_xy}
470
Permite que se realicen transformaciones en los gr@'aficos de tres dimensiones.
472
[transform_xy, false]
474
El valor por defecto de @code{transform_xy} es @code{false}. Cuando vale @code{false}, da el resultado de
476
make_transform ([x, y, z], f1(x, y, z), f2(x, y, z), f3(x, y, z))$
478
La transformaci@'on @code{polar_xy} est@'a definida en Maxima. Devuelve la misma transformaci@'on que
480
make_transform ([r, th, z], r*cos(th), r*sin(th), z)$
484
Opci@'on: @code{colour_z} es espec@'{@dotless{i}}fico del formato gr@'afico @code{ps}.
488
El valor por defecto de @code{colour_z} es @code{false}.
491
Opci@'on: @code{view_direction}
493
Espec@'{@dotless{i}}fico del formato gr@'afico @code{ps}.
495
[view_direction, 1, 1, 1]
497
El valor por defecto de @code{view_direction} es [1, 1, 1].
500
Hay varias opciones gr@'aficas que son espec@'{@dotless{i}}ficas de gnuplot.
501
Todas ellas (excepto @code{gnuplot_pm3d}) son comandos propios de gnuplot que se especifican como cadenas alfanum@'ericas. Cons@'ultese la documentaci@'on de gnuplot para m@'as detalles.
505
Opci@'on: @code{gnuplot_pm3d} Controla la utilizaci@'on del modo PM3D, que tiene capacidades avanzadas para gr@'aficos tridimensionales. PM3D s@'olo est@'a disponible en versiones de gnuplot posteriores a la 3.7. El valor por defecto de @code{gnuplot_pm3d} es @code{false}.
514
Opci@'on: @code{gnuplot_preamble} Introduce instrucciones de gnuplot antes de que se haga el dibujo. Puede utilizarse cualquier comando v@'alido de gnuplot. Si interesa introducir varios comandos se separar@'an con punto y coma. El ejemplo que se muestra produce un gr@'afico en escala logar@'{@dotless{i}}tmica. El valor por defecto de @code{gnuplot_preamble} es la cadena vac@'{@dotless{i}}a @code{""}.
519
[gnuplot_preamble, "set log y"]
523
Opci@'on: @code{gnuplot_curve_titles}
525
Controla los t@'{@dotless{i}}tulos dados a la clave del gr@'afico. El valor por defecto es @code{[default]}, el cual establece autom@'aticamente los t@'{@dotless{i}}tulos para cada curva representada. Si no es @code{[default]}, @code{gnuplot_curve_titles} debe contener una lista de cadenas, cada una de las cuales es @code{"title '@var{title_string}'"}. (Para desactivar la clave del gr@'afico, a@~n@'adase @code{"set nokey"} a @code{gnuplot_preamble}.)
530
[gnuplot_curve_titles, ["title 'My first function'", "title 'My second function'"]]
534
Opci@'on: @code{gnuplot_curve_styles} Es una lista de cadenas que controlan el aspecto de las curvas, como el color, el ancho, la discontinuidad, etc., y que deben enviarse al comando @code{plot} de gnuplot. El valor por defecto es
535
@code{["with lines 3", "with lines 1", "with lines 2", "with lines 5", "with lines 4", "with lines 6", "with lines 7"]}, que realiza un ciclo sobre un conjunto de colores diferentes. Cons@'ultese la documentaci@'on de gnuplot sobre @code{plot} para m@'as informaci@'on.
540
[gnuplot_curve_styles, ["with lines 7", "with lines 2"]]
544
Opci@'on: @code{gnuplot_default_term_command} Comando de gnuplot para establecer el tipo de terminal para el terminal por defecto. El valor por defecto es la cadena vac@'{@dotless{i}}a @code{""}, esto es, utiliza el valor por defecto de gnuplot.
549
[gnuplot_default_term_command, "set term x11"]
553
Opci@'on: @code{gnuplot_dumb_term_command} Comando de gnuplot para establecer el tipo de terminal para el terminal oculto. El valor por defecto es @code{"set term dumb 79 22"}, que da una salida de texto de 79 por 22 caracteres.
558
[gnuplot_dumb_term_command, "set term dumb 132 50"]
562
Opci@'on: @code{gnuplot_ps_term_command} Comando de gnuplot para establecer el tipo de terminal para el terminal PostScript. El valor por defecto es @code{"set size 1.5, 1.5;set term postscript eps enhanced color solid 24"},
563
que establece un tama@~no de 1.5 veces el valor por defecto de gnuplot, junto con un tama@~no de fuente de 24, entre otras cosas. Cons@'ultese la documentaci@'on de gnuplot para m@'as informaci@'on sobre @code{set term postscript}.
568
[gnuplot_ps_term_command,
569
"set term postscript eps enhanced color solid 18"]
578
Almacena un gr@'afico de @code{sin(x)} en el fichero @code{sin.eps}.
581
(%i1) plot2d (sin(x), [x, 0, 2*%pi], [gnuplot_term, ps],
582
[gnuplot_out_file, "sin.eps"])$
587
Utiliza la opci@'on y para saltarse las singularidades, as@'{@dotless{i}} como la opci@'on @code{gnuplot_preamble} para colocar la clave en la parte inferior del dibujo.
590
(%i2) plot2d ([gamma(x), 1/gamma(x)], [x, -4.5, 5], [y, -10, 10],
591
[gnuplot_preamble, "set key bottom"])$
595
@image{../figures/plotting14,8cm}
600
Utiliza un @code{gnuplot_preamble} bastante complicado a fin de producir etiquetas en el eje x.
601
(N@'otese que la cadena de @code{gnuplot_preamble} debe introducirse sin saltos de l@'{@dotless{i}}nea.)
604
(%i3) my_preamble: "set xzeroaxis; set xtics ('-2pi' -6.283, \
605
'-3pi/2' -4.712, '-pi' -3.1415, '-pi/2' -1.5708, '0' 0, \
606
'pi/2' 1.5708, 'pi' 3.1415,'3pi/2' 4.712, '2pi' 6.283)"$
608
(%i4) plot2d([cos(x), sin(x), tan(x), cot(x)],
609
[x, -2*%pi, 2.1*%pi], [y, -2, 2],
610
[gnuplot_preamble, my_preamble]);
614
@image{../figures/plotting15,8cm}
619
Utiliza un @code{gnuplot_preamble} bastante complicado a fin de producir etiquetas en el eje x, produciendo una salida PostScript que aprovecha el formateo avanzado de texto disponible en gnuplot.
620
(N@'otese que la cadena de @code{gnuplot_preamble} debe introducirse sin saltos de l@'{@dotless{i}}nea.)
623
(%i5) my_preamble: "set xzeroaxis; set xtics ('-2@{/Symbol p@}' \
624
-6.283, '-3@{/Symbol p@}/2' -4.712, '-@{/Symbol p@}' -3.1415, \
625
'-@{/Symbol p@}/2' -1.5708, '0' 0,'@{/Symbol p@}/2' 1.5708, \
626
'@{/Symbol p@}' 3.1415,'3@{/Symbol p@}/2' 4.712, '2@{/Symbol p@}' \
629
(%i6) plot2d ([cos(x), sin(x), tan(x)], [x, -2*%pi, 2*%pi],
630
[y, -2, 2], [gnuplot_preamble, my_preamble],
631
[gnuplot_term, ps], [gnuplot_out_file, "trig.eps"]);
636
Un gr@'afico tridimensional utilizando el terminal pm3d de gnuplot.
639
(%i7) plot3d (atan (-x^2 + y^3/4), [x, -4, 4], [y, -4, 4],
640
[grid, 50, 50], [gnuplot_pm3d, true])$
644
@image{../figures/plotting16,8cm}
649
Un gr@'afico tridimensional sin malla y con contornos proyectados sobre el plano inferior.
652
(%i8) my_preamble: "set pm3d at s;unset surface;set contour;\
653
set cntrparam levels 20;unset key"$
654
(%i9) plot3d(atan(-x^2 + y^3/4), [x, -4, 4], [y, -4, 4],
655
[grid, 50, 50], [gnuplot_pm3d, true],
656
[gnuplot_preamble, my_preamble])$
660
@image{../figures/plotting17,8cm}
665
Un gr@'afico en el que el eje z s@'olo se representa por el color.
666
(N@'otese que la cadena de @code{gnuplot_preamble} debe introducirse sin saltos de l@'{@dotless{i}}nea.)
669
(%i10) plot3d (cos (-x^2 + y^3/4), [x, -4, 4], [y, -4, 4],
670
[gnuplot_preamble, "set view map; unset surface"],
671
[gnuplot_pm3d, true], [grid, 150, 150])$
675
@image{../figures/plotting18,8cm}
680
@deffn {Funci@'on} plot3d (@var{expr}, @var{x_range}, @var{y_range}, ..., @var{options}, ...)
681
@deffnx {Funci@'on} plot3d (@var{name}, @var{x_range}, @var{y_range}, ..., @var{options}, ...)
682
@deffnx {Funci@'on} plot3d ([@var{expr_1}, @var{expr_2}, @var{expr_3}], @var{x_rge}, @var{y_rge})
683
@deffnx {Funci@'on} plot3d ([@var{name_1}, @var{name_2}, @var{name_3}], @var{x_range}, @var{y_range}, ..., @var{options}, ...)
685
Representa gr@'aficamente una o tres expresiones como funciones de dos variables.
688
(%i1) plot3d (2^(-u^2 + v^2), [u, -3, 3], [v, -2, 2]);
692
@image{../figures/plotting19,8cm}
695
dibuja @code{z = 2^(-u^2+v^2)} con @code{u} y @code{v} variando en [-3,3] y
696
[-2,2] respectivamente, y con @var{u} sobre el eje x, y con @code{v} sobre el
699
El mismo gr@'afico se puede dibujar usando openmath:
702
(%i2) plot3d (2^(-u^2 + v^2), [u, -3, 3], [v, -2, 2],
703
[plot_format, openmath]);
707
@image{../figures/plotting25,8cm}
711
en este caso el rat@'on se puede usar para rotar el gr@'afico y ver la
712
superficie desde diferentes lados.
714
Un ejemplo del tercer patr@'on de argumentos es
717
(%i3) plot3d ([cos(x)*(3 + y*cos(x/2)), sin(x)*(3 + y*cos(x/2)),
718
y*sin(x/2)], [x, -%pi, %pi], [y, -1, 1], ['grid, 50, 15]);
722
@image{../figures/plotting20,8cm}
725
que dibuja una banda de Moebius, parametrizada por las tres expresiones dadas como primer argumento a @code{plot3d}. Un argumento opcional @code{['grid, 50, 15]} da el n@'umero de intervalos en las direcciones x e y, respectivamente.
727
Cuando la funci@'on a representar ha sido definida en Maxima mediante @code{:=} o @code{define}, o en Lisp por DEFUN o DEFMFUN, entonces se podr@'a especificar por su nombre. Las funciones definidas a nivel de LISP por DEFMSPEC, las funciones de simplificaci@'on, junto con muchas otras funciones, no pueden especificarse directamente por su nombre.
728
@c REPORTED AS SF BUG # 1385271
730
Este ejemplo muestra un gr@'afico de la parte real de @code{z^1/3}.
733
(%i4) plot3d (r^.33*cos(th/3), [r, 0, 1], [th, 0, 6*%pi],
734
['grid, 12, 80], ['transform_xy, polar_to_xy],
735
['view_direction, 1, 1, 1.4], ['colour_z, true]);
739
@image{../figures/plotting21,8cm}
743
Aqu@'{@dotless{i}} la opci@'on @code{view_direction} indica la direcci@'on desde la que se hace la proyecci@'on. Se hace esto desde una posici@'on infinita pero paralela a la l@'{@dotless{i}}nea que va desde @code{view_direction} hasta el origen. Esto s@'olo se utiliza cuando @code{plot_format} est@'a en @code{ps}, puesto que los otros visores permiten la rotaci@'on interactiva del objeto.
745
Otros ejemplos son la botella de Klein:
748
(%i5) expr_1: 5*cos(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)
750
(%i6) expr_2: -5*sin(x)*(cos(x/2)*cos(y) + sin(x/2)*sin(2*y)
752
(%i7) expr_3: 5*(-sin(x/2)*cos(y) + cos(x/2)*sin(2*y))$
754
(%i8) plot3d ([expr_1, expr_2, expr_3], [x, -%pi, %pi],
755
[y, -%pi, %pi], ['grid, 40, 40]);
759
@image{../figures/plotting22,8cm}
765
(%i9) expr_1: cos(y)*(10.0+6*cos(x))$
766
(%i10) expr_2: sin(y)*(10.0+6*cos(x))$
767
(%i11) expr_3: -6*sin(x)$
768
(%i12) plot3d ([expr_1, expr_2, expr_3], [x, 0, 2*%pi],
769
[y, 0, 2*%pi], ['grid, 40, 40]);
773
@image{../figures/plotting23,8cm}
776
En ocasiones puede ser necesario definir una funci@'on para representarla. Todos los argumentos de @code{plot3d} se eval@'uan, de manera que puede ser dif@'{@dotless{i}}cil escribir una expresi@'on que haga lo que el usuario realmente quiere; en tales casos facilita las cosas definir previamente la funci@'on.
779
(%i13) M: matrix([1, 2, 3, 4], [1, 2, 3, 2], [1, 2, 3, 4],
781
(%i14) f(x, y) := float (M [?round(x), ?round(y)])$
782
(%i15) plot3d (f, [x, 1, 4], [y, 1, 4], ['grid, 4, 4])$
786
@image{../figures/plotting24,8cm}
789
V@'ease @code{plot_options} para m@'as ejemplos.
794
@deffn {Funci@'on} make_transform (@var{vars}, @var{fx}, @var{fy}, @var{fz})
795
Devuelve una funci@'on apropiada para la funci@'on de transformaci@'on de @code{plot3d}. Debe usarse con la opci@'on gr@'afica @code{transform_xy}.
797
make_transform ([r, th, z], r*cos(th), r*sin(th), z)$
799
es una transformaci@'on para pasar a coordenadas polares.
802
@deffn {Funci@'on} plot2d_ps (@var{expr}, @var{range})
803
Escribe en el @var{pstream} una secuencia de comandos PostScript que dibujan @var{expr} sobre @var{range}.
805
El argumento @var{expr} es una expresi@'on y @var{range} es una lista de la forma @code{[@var{x}, @var{min}, @var{max}]}
806
en la cual @var{x} es una variable que aparece en @var{expr}.
808
V@'ease tambi@'en @code{closeps}.
812
@deffn {Funci@'on} closeps ()
813
Esta funci@'on deber@'{@dotless{i}}a invocarse al final de una secuencia de comandos gr@'aficos. Cierra el @var{pstream} y le asigna @code{nil}. Tambi@'en puede ser invocado antes de empezar un dibujo, para asegurar que se cierre el @var{pstream}
814
si estaba abierto. Todas las instrucciones que se env@'{@dotless{i}}an al @var{pstream} lo abren si es necesario. La funci@'on @code{closeps} es independiente de otras instrucciones gr@'aficas, ya que si se quiere dibujar dos rangos o sobreponer varios gr@'aficos, @var{pstream} debe permanecer abierto.
817
@deffn {Funci@'on} set_plot_option (@var{option})
818
Asigna un valor a una de las variables globales que controlan los gr@'aficos. El argumento
819
@var{option} se especifica como una lista de dos o m@'as elementos, en la que el primero es el nombre de una de las opciones de la lista @code{plot_options}.
821
La funci@'on @code{set_plot_option} eval@'ua sus argumentos y devuelve @code{plot_options} tal como queda despu@'es de la actualizaci@'on.
823
V@'eanse tambi@'en @code{plot_options}, @code{plot2d} y @code{plot3d}.
827
Se modifican los valores de @code{grid} y @code{x}.
828
Si a un nombre de opci@'on de @code{plot_options} tiene ya un valor asignado, hacerlo preceder de un ap@'ostrofo para evitar su evaluaci@'on.
831
@c set_plot_option ([grid, 30, 40]);
833
@c set_plot_option (['x, -100, 100]);
837
(%i1) set_plot_option ([grid, 30, 40]);
838
(%o1) [[x, - 1.755559702014E+305, 1.755559702014E+305],
839
[y, - 1.755559702014E+305, 1.755559702014E+305], [t, - 3, 3],
840
[grid, 30, 40], [view_direction, 1, 1, 1], [colour_z, false],
841
[transform_xy, false], [run_viewer, true],
842
[plot_format, gnuplot], [gnuplot_term, default],
843
[gnuplot_out_file, false], [nticks, 10], [adapt_depth, 10],
844
[gnuplot_pm3d, false], [gnuplot_preamble, ],
845
[gnuplot_curve_titles, [default]],
846
[gnuplot_curve_styles, [with lines 3, with lines 1,
847
with lines 2, with lines 5, with lines 4, with lines 6,
848
with lines 7]], [gnuplot_default_term_command, ],
849
[gnuplot_dumb_term_command, set term dumb 79 22],
850
[gnuplot_ps_term_command, set size 1.5, 1.5;set term postscript #
851
eps enhanced color solid 24]]
854
(%i3) set_plot_option (['x, -100, 100]);
855
(%o3) [[x, - 100.0, 100.0], [y, - 1.755559702014E+305,
856
1.755559702014E+305], [t, - 3, 3], [grid, 30, 40],
857
[view_direction, 1, 1, 1], [colour_z, false],
858
[transform_xy, false], [run_viewer, true],
859
[plot_format, gnuplot], [gnuplot_term, default],
860
[gnuplot_out_file, false], [nticks, 10], [adapt_depth, 10],
861
[gnuplot_pm3d, false], [gnuplot_preamble, ],
862
[gnuplot_curve_titles, [default]],
863
[gnuplot_curve_styles, [with lines 3, with lines 1,
864
with lines 2, with lines 5, with lines 4, with lines 6,
865
with lines 7]], [gnuplot_default_term_command, ],
866
[gnuplot_dumb_term_command, set term dumb 79 22],
867
[gnuplot_ps_term_command, set size 1.5, 1.5;set term postscript #
868
eps enhanced color solid 24]]
873
@deffn {Funci@'on} psdraw_curve (@var{ptlist})
875
Dibuja una curva uniendo los puntos de @var{ptlist}, que puede ser de la forma @code{[x0, y0, x1, y1, ...]} o @code{[[x0, y0], [x1, y1], ...]}
877
La funci@'on @code{join} se puede utilizar para tomar una lista con las x y otra con las y para luego formar pares.
879
La funci@'on @var{psdraw_curve} tan s@'olo llama a la funci@'on @var{pscurve}. Esta es su definici@'on:
882
(defun $psdraw_curve (lis)
889
@c ?DRAW2D may also be used to produce a list
891
@c points1:?draw2d(1/x,[.05,10],.03)
897
@deffn {Funci@'on} pscom (@var{cmd})
899
El argumento @var{cmd} se a@~nade al fichero PostScript.
902
pscom ("4.5 72 mul 5.5 72 mul translate 14 14 scale");