1 @c Language: Brazilian Portuguese, Encoding: iso-8859-1
2 @c /Plotting.texi/1.41/Fri Jun 8 17:19:03 2007/-ko/
4 @hyphenation{ca-rac-te-res}
7 * Funç@~{o}es e Vari@'{a}veis Definidas para Montagem de Gr@'{a}ficos::
10 @node Funç@~{o}es e Vari@'{a}veis Definidas para Montagem de Gr@'{a}ficos, , Montando Gr@'{a}ficos, Montando Gr@'{a}ficos
11 @section Funç@~{o}es e Vari@'{a}veis Definidas para Montagem de Gr@'{a}ficos
13 @deffn {Funç@~{a}o} contour_plot (@var{expr}, @var{x_range}, @var{y_range}, @var{opç@~{o}es}, ...)
15 Monta gr@'{a}ficos de contorno (curvas de n@'{i}vel) de @var{expr}
16 sobre a regi@~{a}o @var{x_range} por @var{y_range}.
17 Quaisquer argumentos adicionals s@~{a}o tratados da mesma forma que em @code{plot3d}.
19 @code{contour_plot} somente trabalha quando o formato do gr@'{a}fico for @code{gnuplot} ou @code{gnuplot_pipes}.
21 Veja tamb@'{e}m @code{implicit_plot}.
26 @c contour_plot (x^2 + y^2, [x, -4, 4], [y, -4, 4]);
27 @c contour_plot (sin(y) * cos(x)^2, [x, -4, 4], [y, -4, 4]);
28 @c F(x, y) := x^3 + y^2;
29 @c contour_plot (F, [u, -4, 4], [v, -4, 4]);
30 @c contour_plot (F, [u, -4, 4], [v, -4, 4], [gnuplot_preamble, "set size ratio -1"]);
31 @c set_plot_option ([gnuplot_preamble, "set cntrparam levels 12"])$
32 @c contour_plot (F, [u, -4, 4], [v, -4, 4]);
35 (%i1) contour_plot (x^2 + y^2, [x, -4, 4], [y, -4, 4]);
37 (%i2) contour_plot (sin(y) * cos(x)^2, [x, -4, 4], [y, -4, 4]);
39 (%i3) F(x, y) := x^3 + y^2;
41 (%o3) F(x, y) := x + y
42 (%i4) contour_plot (F, [u, -4, 4], [v, -4, 4]);
44 (%i5) contour_plot (F, [u, -4, 4], [v, -4, 4], [gnuplot_preamble, "set size ratio -1"]);
46 (%i6) set_plot_option ([gnuplot_preamble, "set cntrparam levels 12"])$
48 (%i7) contour_plot (F, [u, -4, 4], [v, -4, 4]);
53 @c INSPECTING src/plot.lisp AND TRYING SOME EXAMPLES,
54 @c IT APPEARS THAT in_netmath HAS NO EFFECT ON plot2d
55 @c AND ONLY EFFECT ON plot3d IS TO CAUSE OPENMATH OUTPUT TO BE WRITTEN TO CONSOLE
56 @c WHEN [plot_format, openmath] IS SET.
57 @c NOT CONVINCED WE REALLY WANT TO DOCUMENT THIS VARIABLE
58 @defvr {Vari@'{a}vel} in_netmath
59 Valor padr@~{a}o: @code{false}
61 Quando @code{in_netmath} @'{e} @code{true},
62 @code{plot3d} imprime uma sa@'{i}da OpenMath para o console se @code{plot_format} @'{e} @code{openmath};
63 caso contr@'{a}rio @code{in_netmath} (mesmo se @code{true}) n@~{a}o tem efeito.
64 @code{in_netmath} n@~{a}o tem efeito sobre @code{plot2d}.
68 @deffn {Funç@~{a}o} plot2d (@var{expr}, @var{x_range}, ..., @var{opç@~{o}es}, ...)
69 @deffnx {Funç@~{a}o} plot2d ([@var{expr_1}, ..., @var{expr_n}], ..., @var{opç@~{o}es}, ...)
70 @deffnx {Funç@~{a}o} plot2d ([@var{expr_1}, ..., @var{expr_n}], @var{x_range},..., @var{opç@~{o}es}, ...)
72 onde @var{expr}, @var{expr_1}, ..., @var{expr_n} pode ser uma entre
73 express@~{o}es, ou funç@~{o}es do Lisp ou do Maxima ou operadores, ou uma lista com
74 qualquer das formas: @code{[discrete, [@var{x1}, ..., @var{xn}],
75 [@var{y1}, ..., @var{yn}]]}, @code{[discrete, [[@var{x1}, @var{y1}],
76 ..., [@var{xn}, ..., @var{yn}]]} ou @code{[parametric, @var{x_expr},
77 @var{y_expr}, @var{t_range}]}.
79 Mostra um gr@'{a}fico de uma ou mais express@~{o}es como uma funç@~{a}o de uma
82 @code{plot2d} monta o gr@'{a}fico da express@~{a}o @var{expr} ou muitas express@~{o}es
83 @code{[@var{name_1}, ..., @var{name_n}]}. As express@~{o}es que n@~{a}o forem
84 param@'{e}tricas ou discretas podem todas depender somente de uma
85 vari@'{a}vel @var{var} e isso torna obrigat@'{o}rio o uso de @var{x_range} para
86 nome daquela vari@'{a}vel e fornece seus valores de m@'{a}ximo e de m@'{i}nimo, usando a
87 sintaxe: @code{[@var{variable}, @var{min}, @var{max}]}. O gr@'{a}fico ir@'{a}
88 mostrar o eixo horizontal associado aos valores de @var{min} e de @var{max}.
90 Uma express@~{a}o a ser montado o gr@'{a}fico pode tamb@'{e}m ser fornecida na forma discreta ou
91 na forma param@'{e}trica. A saber, como uma lista iniciando-se com a palavra ``discrete''
92 ou a palavra ``parametric''. A palavra chave @var{discrete} deve ser seguida por duas
93 listas de valores, ambas com o mesmo comprimento, que s@~{a}o as coodenadas horizontais e
94 as coordenadas verticais de um conjunto de pontos; alternativamente, as coordenadas
95 de cada ponto pode ser colocada dentro de uma lista com dois valores, e todas as
96 coordenadas dos pontos podem estar dentro de outra lista. A palavra chave
97 @var{parametric} deve ser seguida por douas express@~{o}es @var{x_expr} e
98 @var{y_expr}, e um intervalo da forma @code{[@var{param}, @var{min},
99 @var{max}]}. As duas express@~{o}es devem depender somente do par@^{a}metro
100 @var{param}, e o gr@'{a}fico ir@'{a} mostrar o caminho percorrido pelo ponto
101 com coordenadas (@var{x_expr}, @var{y_expr}) com @var{param} variando
102 de @var{min} a @var{max}.
104 O intervalo do eixo vertical n@~{a}o @'{e} obrigat@'{o}rio. @'{E} somente mais uma das
105 opç@~{o}es para o comando, com a sintaxe: @code{[y, @var{min},
106 @var{max}]}. Se aquela opç@~{a}o for usada, o gr@'{a}fico ir@'{a} mostrar aquele intervalo
107 completo, mesmo se a express@~{a}o n@~{a}o ocupe todo aquele intervalo. De outra forma,
108 se um intervalo vertical n@~{a}o for especificado atrav@'{e}s de @code{set_plot_option}, as
109 extremidade do eixo vertical ser@~{a}o encontrada automaticamente.
111 Todas as outras opç@~{o}es podem tamb@'{e}m serem listas, iniciando-se com o nome da
112 opç@~{a}o. A opç@~{a}o @var{xlabel} pode ser usada para fornecer um @'{o}tulo para o
113 eixo horizontal; se aquela opç@~{a}o n@~{a}o for usada, o eixo horizontal ir@'{a}
114 ser rotulado com o nome da vari@'{a}vel especificada em @var{x_range}, ou
115 com a express@~{a}o @var{x_expr} no caso de apenas uma express@~{a}o
116 param@'{e}trica, ou isso ir@'{a} ser deichado em branco de outra forma.
118 Um r@'{o}tulo para o eixo vertical pode ser fornecido com a opç@~{a}o
119 @var{ylabel}. Se existir somente uma express@~{a}o a ser montado o gr@'{a}fico e a
120 opç@~{a}o @var{ylabel} n@~{a}o tiver sido usada, o eixo vertical ir@'{a} ser rotulado com
121 aquela express@~{a}o, a menos que ela seja muito larga, ou com a express@~{a}o
122 @var{y_expr} se a express@~{a}o for param@'{e}trica, ou com o texto
123 ``discrete data'' se a express@~{a}o for discreta.
125 As opç@~{o}es @code{[logx]} e @code{[logy]} n@~{a}o precisam de quaisquer
126 par@^{a}metros. Elas ir@~{a}o tornar os eixos horizontal e vertical sejam
127 escritos em escala logar@'{i}tmica.
129 Se houverem muitas express@~{o}es para serem montados os gr@'{a}ficos respectivos, uma legenda ir@'{a} ser
130 escrita para identificar cada uma das express@~{o}es. Os r@'{o}tulos que podem ser
131 usados naquela legenda podem ser fornecidos com a opç@~{a}o @var{legend}. Se a opç@~{a}o @var{legend}
132 n@~{a}o for usada, Maxima ir@'{a} criar r@'{o}tulos a partir das express@~{o}es.
134 Por padr@~{a}o, as express@~{o}es ter@~{a}o seus gr@'{a}ficos montados como um conjunto de segmentos de reta
135 saltando pontos adjacentes dentro de um conjunt de pontos que @'{e} um dos fornecidos entre
136 a forma @var{discrete}, ou calculado automaticamente a partir da express@~{a}o
137 fornecida, usando um algor@'{i}tmo que automaticamente adapta os passos entre
138 os pontos usando como uma estimativa inicial do total n@'{u}mero de pontos
139 o conjunto de valores com a opç@~{a}o @var{nticks}. A opç@~{a}o @var{style} pode ser
140 usada para fazer uma das express@~{o}es serem representadas como um conjunto de
141 pontos isolados, ou como pontos e segmentos de reta.
143 Existem muitas opç@~{o}es globais armazenadas na lsita @var{plot_options}
144 que pode ser modificada com a funç@~{a}o @code{set_plot_option}; qualque
145 daquelas opç@~{o}es globais pode ser sobrescrita com opç@~{o}es fornecidas no
146 comando @var{plot2d}.
148 Uma funç@~{a}o a ter seu gr@'{a}fico montado pode ser especificada como o nome de uma funç@~{a}o
149 do Maxima ou do Lisp ou um operador, uma express@~{a}o lambda do Maxima, ou uma express@~{a}o
150 geral do Maxima. Se especificado como um nome ou uma express@~{a}o lambda, a
151 funç@~{a}o deve ser uma funç@~{a}o de um argumento.
153 @c PUT EXAMPLES FOR PRECEDING SIMPLE FORMS OF plot2d HERE
156 Gr@'{a}ficos de funç@~{o}es comuns.
159 @c plot2d (sin(x), [x, -%pi, %pi])$
162 (%i1) plot2d (sin(x), [x, -%pi, %pi])$
166 @image{@value{figuresfolder}/plotting6,8cm}
170 @c plot2d (sec(x), [x, -2, 2], [y, -20, 20])$
173 (%i1) plot2d (sec(x), [x, -2, 2], [y, -20, 20])$
177 @image{@value{figuresfolder}/plotting7,8cm}
180 Montando gr@'{a}fico de funç@~{o}es pelo nome.
184 @c :lisp (defun |$g| (x) (m* x x x))
185 @c H(x) := if x < 0 then x^4 - 1 else 1 - x^5 $
186 @c plot2d ([F, G, H], [u, -1, 1], [y, -1.5, 1.5])$
191 (%i2) :lisp (defun |$g| (x) (m* x x x))
194 (%i2) H(x) := if x < 0 then x^4 - 1 else 1 - x^5 $
195 (%i3) plot2d ([F, G, H], [u, -1, 1], [y, -1.5, 1.5])$
199 @image{@value{figuresfolder}/plotting10,8cm}
202 Podemos montar o gr@'{a}fico de um c@'{i}rculo usando um gr@'{a}fico param@'{e}trico com um par@^{a}metro
203 @var{t}. N@~{a}o @'{e} necess@'{a}rio fornecer um intervalo para intervalo horizontal,
204 uma vez que o intervalo do par@^{a}metro @var{t} determina o
205 dom@'{i}nio. Todavia, usaremos a opç@~{a}o
206 @var{same_xy} para obter a mesma escala em ambos os eixos:
209 @c plot2d([[parametric, cos(t), sin(t), [t,0,2*%pi]], -abs(x)],
210 @c [x, -sqrt(2), sqrt(2)], same_xy)$
214 (%i1) plot2d([[parametric, cos(t), sin(t), [t,0,2*%pi]], -abs(x)],
215 [x, -sqrt(2), sqrt(2)], same_xy)$
220 @image{@value{figuresfolder}/plotting12,8cm}
223 Exemplo de um gr@'{a}fico logar@'{i}tmico:
225 @c plot2d (exp(3*s), [s, -2, 2], logy)$
228 (%i1) plot2d (exp(3*s), [s, -2, 2], logy)$
232 @image{@value{figuresfolder}/plotting9,8cm}
235 Exemplo de gr@'{a}fico discreto, definindo as coordenadas x e y por separado:
238 @c plot2d ([discrete, makelist(i*%pi, i, 1, 5),
239 @c [0.6, 0.9, 0.2, 1.3, 1]])$
242 (%i1) plot2d ([discrete, makelist(i*%pi, i, 1, 5),
243 [0.6, 0.9, 0.2, 1.3, 1]])$
247 @image{@value{figuresfolder}/plotting14,8cm}
250 O gr@'{a}fico de pontos pode ser mostrado juntamente com um gr@'{a}fico da
251 funç@~{a}o teor@'{e}tica/doutrin@'{a}ria/est@'{e}tica que prev@^{e} as coordenads dos pontos:
254 @c xy: [[10, .6], [20, .9], [30, 1.1], [40, 1.3], [50, 1.4]]$
255 @c plot2d([[discrete, xy], 2*%pi*sqrt(l/980)], [l,0,50],
256 @c [style, points, lines], [color, red, blue],
257 @c [point_type, asterisk],
258 @c [legend, "experiment", "theory"],
259 @c [xlabel, "pendulum's length (cm)"],
260 @c [ylabel, "period (s)"])$
263 (%i1) xy: [[10, .6], [20, .9], [30, 1.1], [40, 1.3], [50, 1.4]]$
265 (%i2) plot2d([[discrete, xy], 2*%pi*sqrt(l/980)], [l,0,50],
266 [style, points, lines], [color, red, blue],
267 [point_type, asterisk],
268 [legend, "experiment", "theory"],
269 [xlabel, "pendulum's length (cm)"],
270 [ylabel, "period (s)"])$
275 @image{@value{figuresfolder}/plotting16,8cm}
278 Veja tamb@'{e}m @code{plot_options}, que descreve opç@~{o}es de montagem de gr@'{a}fico e tem mais exemplos.
283 @defvr {Vari@'{a}vel de sistema} plot_options
284 Elementos dessa lista estabelecem as opç@~{o}es padr@~{a}o para a montagem do gr@'{a}fico.
285 Se uma opç@~{a}o est@'{a} presente em uma chamada a @code{plot2d} ou @code{plot3d},
286 esse valor tem preced@^{e}ncia sobre a opç@~{a}o padr@~{a}o.
287 De outra forma, o valor em @code{plot_options} @'{e} usado.
288 Opç@~{o}es padr@~{a}o s@~{a}o atribu@'{i}das por @code{set_plot_option}.
290 Cada elemento de @code{plot_options} @'{e} uma lista de dois ou mais @'{i}tens.
291 O primeiro item @'{e} o nome de uma opç@~{a}o, e os restantes compreendem o valor ou valores
292 atribu@'{i}dos @`a opç@~{a}o.
293 Em alguns casos, o valor atribu@'{i}do @'{e} uma lista, que pode compreender muitos @'{i}tens.
295 As opç@~{o}es de montagem de gr@'{a}fico que s@~{a}o reconhecidas por @code{plot2d} e @code{plot3d} s@~{a}o as seguintes:
299 Opç@~{a}o: @code{plot_format}
301 Determina qual interface gr@'{a}fica @'{e} usada por @code{plot2d} e por
306 Valor: @code{gnuplot} padr@~{a}o para windows
308 Gnuplot @'{e} o mais avançado pacote de montagem de gr@'{a}ficos entre os pacotes
309 dispon@'{i}veis no Maxima. Esse valor requer uma instalaç@~{a}o externa do gnuplot.
311 Valor: @code{gnuplot_pipes} padr@~{a}o nas plantaformas n@~{a}o windows
313 Similar ao formato @code{gnuplot} exceto que a comunicaç@~{a}o com o
314 gnuplot @'{e} realizada atrav@'{e}s de um pipe. Esse valor pode ser usado para montar um gr@'{a}fico na tela,
315 para redirecionar a sa@'{i}da do gr@'{a}fico para um arquivos @'{e} melhor usar o formato @code{gnuplot}.
317 Valor: @code{mgnuplot}
319 Mgnuplot @'{e} um ambiente montado em volta do gnuplot baseado no Tk. Esse ambiente est@'{a} inclu@'{i}do na
320 distribu@'{i}ç@~{a}o do Maxima. Mgnuplot oferece uma GUI rudimentar para o gnuplot,
321 mas tem menos recursos em geral que a interface plana do
322 gnuplot. Mgnuplot requer uma instalaç@~{a}o externa do gnuplot e
325 Valor: @code{openmath}
327 Openmath @'{e} um programa gr@'{a}fico escrito em Tcl/Tk. Este formato @'{e} fornecido pelo pacote
328 Xmaxima, que @'{e} distribu@'{i}do junto com Maxima; com o objetivo de usar esse
329 formato voc@^{e} pode instalar o pacote Xmaxima, e o Openmath ir@'{a} trabalhar n@~{a}o somente
330 a partir do Xmaxima em si mesmo, mas tamb@'{e}m a apartir da linha de comando e outras GUI's para
335 Opç@~{a}o: @code{run_viewer}
337 Controla se o visualizador apropriado para o formato da montagem do gr@'{a}fico pode ou n@~{a}o
342 @c DOES FALSE IMPLY THE OUTPUT FILE IS GENERATED AND NOT SHOWN ?? OR IS NOTHING GENERATED ??
343 Valor padr@~{a}o: @code{true}
345 Executa o programa visualizador.
349 N@~{a}o executa o programa visualizador.
355 O intervalo vertical do gr@'{a}fico.
362 Especifica intervalo vertical para [-3, 3].
365 Opç@~{a}o: @code{plot_realpart}
367 Quando @code{plot_realpart} for @code{true},
368 a parte real de um valor complexo @var{x} @'{e} mostrada;
369 isso @'{e} equivalente a mostrar @code{realpart(@var{x})} em lugar de @var{x}.
371 somente valores com a parte imagin@'{a}ria igual a 0 s@~{a}o mostrados na tela,
372 e valores complexos s@~{a}o ignorados.
377 plot2d (log(x), [x, -5, 5], [plot_realpart, false]);
378 plot2d (log(x), [x, -5, 5], [plot_realpart, true]);
380 O valor padr@~{a}o @'{e} @code{false}.
383 Opç@~{a}o: @code{nticks}
385 Em plot2d, essa opç@~{a}o @'{e} fornece o n@'{u}mero inicial de pontos usado pela
386 rotina adaptativa de montagem de gr@'{a}ficos para funç@~{o}es de montagem de gr@'{a}fico. Ess n@'{u}mero inicial de pontos @'{e} tamb@'{e}m
387 o n@'{u}mero de pontos que isr@'{a} ser mostrado em um gr@'{a}fico param@'{e}trico.
394 O padr@~{a}o para @code{nticks} @'{e} 10.
397 Opç@~{a}o: @code{adapt_depth}
399 O n@'{u}mero maximo de quebras usada pela rotina adaptativa de montagem do gr@'{a}fico.
406 O padr@~{a}o para @code{adapt_depth} @'{e} 10.
409 Opç@~{a}o: @code{xlabel}
411 O r@'{o}tulo para o eixo horizontal em um gr@'{a}fico bidimensional.
415 [xlabel, "Time in seconds"]
419 Opç@~{a}o: @code{ylabel}
421 O r@'{o}tulo do eixo vertical em gr@'{a}ficos bidimensionais.
425 [ylabel, "Temperatura"]
429 Opç@~{a}o: @code{logx}
431 Essa opç@~{a}o faz com que o eixo horizontal de um gr@'{a}fico bidimensional seja desenhado
432 em proporç@~{a}o logar@'{i}tmica. Essa opç@~{a}o n@~{a}o precisa de quaisquer par@^{a}metros adicionais.
435 Opç@~{a}o: @code{logy}
437 Essa opç@~{a}o faz com que o eixo vertical de um gr@'{a}fico bidimensional seja desenhado
438 em proporç@~{a}o logar@'{i}tmica. Essa opç@~{a}o n@~{a}o precisa de quaisquer par@^{a}metros adicionais.
441 Opç@~{a}o: @code{legend}
443 Os r@'{o}tulos para v@'{a}rias express@~{o}es em um gr@'{a}fico bidimensional com muitas
444 express@~{o}es. Se houverem mais express@~{o}es que o n@'{u}mero de r@'{o}tulos
445 fornecidos, eles ir@~{a}o ser repetidos. Por padr@~{a}o, os nomes das express@~{o}es
446 ou funç@~{o}e ir@~{a}o ser usados, ou as palavras discrete1, discrete2, ..., para
447 conjuntos discretos de pontos.
451 [legend, "Conj 1", "Conj 2", "Conj 3"]
455 Opç@~{a}o: @code{style}
457 Os estilos que ir@~{a}o ser usados para v@'{a}rias funç@~{o}es ou conjuntos de dados
458 em um gr@'{a}fico bidimensional. A palavra @var{style} deve ser seguida por um ou mais
459 estilos. Se houverem mais funç@~{o}es e conjuntos de pontos que estilos
460 fornecidos, os estilos ir@~{a}o ser repetidos. Cada estilo pode ser um entre os seguintes
461 @var{lines} para segmentos de reta, @var{points} para pontos isolados,
462 @var{linespoints} para segmentos e pontos, ou @var{dots} para pequenos
463 pontos isolados. Gnuplot aceita tamb@'{e}m o estilo @var{impulses}.
465 Cada um dos estilos pode tamb@'{e}m ser fechado dentro de uma lista com alguns par@^{a}metros
466 adicionais. @var{lines} aceita um ou dois n@'{u}meros: a largura da
467 linha e um inteiro que identifica uma cor. @var{points} aceita um ou
468 dois par@^{a}metros; o primeiro par@^{a}metro @'{e} o raio dos pontos e
469 o segundo par@^{a}metro @'{e} um inteiro que para o Gnuplot seleciona diferentes
470 ajustes e cores para os ponots e em Openmath modifica a cor
471 usada para os pontos. @var{linesdots} aceita at@'{e} quatro par@^{a}metros;
472 os primerios dois possuem o mesmo significado que em @var{lines} e os @'{u}ltimos dois possuem o mesmo
473 significado que em @var{points}.
477 [style,[lines,2,3],[points,1,4]]
480 No Gnuplot, esse exemplo ir@'{a} montar o gr@'{a}fico da primeira (e terceira, quinta, etc)
481 express@~{a}o com segmentos de retas azuis de largura 2, ea segunda (e
482 quarta, sexta, etc) express@~{a}o com quadrados verdes de tamanho 1. No
483 Openmath, a primeira express@~{a}o ir@'{a} ser mostrada com segmentos da cor magenta de
484 largura 2, e o segundo com pontos alaranjados de raio 1; note que
485 openmath_color(3) openmath_color(4) retornam ``magenta'' e
486 ``orange'' (alaranjado).
488 O padr@~{a}o para a opç@~{a}o de estilo @'{e} @var{lines} com largura 1, e
492 Opç@~{a}o: @code{grid}
494 Escolhe o n@'{u}mero de pontos da grade para usar nas direç@~{o}es x e y
495 para montagem de gr@'{a}ficos tridimensionais.
501 Escolhe a grade para 50 por 50 pontos. A grade padr@~{a}o @'{e} 30 por 30.
504 Opç@~{a}o: @code{transform_xy}
506 Permite que transformaç@~{o}es sejam aplicadas @`a montagem de gr@'{a}ficos tridimensionais.
510 [transform_xy, false]
512 O valor padr@~{a}o de @code{transform_xy} @'{e} @code{false}. Se o valor padr@~{a}o de @code{transform_xy} n@~{a}o @'{e} @code{false}, pode ser
516 make_transform ([x, y, z], f1(x, y, z), f2(x, y, z), f3(x, y, z))$
518 A transformaç@~{a}o @code{polar_xy} @'{e} previamente definida no Maxima. Isso fornece a mesma
519 transformaç@~{a}o que
521 make_transform ([r, th, z], r*cos(th), r*sin(th), z)$
525 @b{Opç@~{o}es do Gnuplot:}
527 Existem muitas opç@~{o}es de montagem de gr@'{a}fico espec@'{i}ficas para gnuplot. Algumas dessas
528 opç@~{o}es s@~{a}o naturais do gnuplot, especificados como seq@"{u}@^{e}ncias de caracteres. Consulte a
529 documentaç@~{a}o do gnuplot para mais detalhes.
533 Opç@~{a}o: @code{gnuplot_term}
535 Escolhe a sa@'{i}da para o tipo terminal para o gnuplot.
538 Valor padr@~{a}o: @code{default}
540 A sa@'{i}da do Gnuplot @'{e} mostrada em uma janela gr@'{a}fica separada.
545 A s@'{i}da do Gnuplot @'{e} mostrada no console do Maxima por meio de uma "concepç@~{a}o art@'{i}stica em ASCII" aproximada para gr@'{a}ficos.
550 Gnuplot gera comandos na linguagem PostScript de descriç@~{a}o de p@'{a}gina.
552 @code{gnuplot_out_file} for escolhida para @var{nomearquivo}, gnuplot escreve os comandos PostScript em @var{nomearquivo}.
553 De outra forma, Esse arquivo @'{e} salvo com o nome @code{maxplot.ps}.
556 Valor: qualquer outra especificaç@~{a}o v@'{a}lida do terminal @code{term} do gnuplot
558 Gnuplot pode gerar sa@'{i}das em muitos outros formatos gr@'{a}ficos tais
559 como png, jpeg, svg etc. Paa criar gr@'{a}ficos em todos esses formatos a opç@~{a}o
560 @code{gnuplot_term} pode ser escolhida para qualquer terminalsuportado pelo gnuplot (s@'{i}mbolo)
561 ou mesmo especificaç@~{a}o completa de terminal do gnuplot com quaisquer opç@~{o}es (seq@"{u}@^{e}ncia de caracteres).
562 Por exemplo @code{[gnuplot_term,png]} cria sa@'{i}das no formato PNG (Portable
563 +Network Graphics) enquanto @code{[gnuplot_term,"png size 1000,1000"]}
564 cria PNG de tamanho 1000x1000 pixels.
565 Se a opç@~{a}o @code{gnuplot_out_file} for escolhida para @var{nomearquivo}, gnuplot
566 escreve a sa@'{i}da para @var{nomearquivo}. De outra forma, esse arquivo @'{e} gravado com o nome de
567 @code{maxplot.@var{term}}, onde @var{term} @'{e} o nome do terminal do
572 Opç@~{a}o: @code{gnuplot_out_file}
574 Escreve a sa@'{i}da do gnuplot para um arquivo.
578 Valor padr@~{a}o: @code{false}
580 Nenhum arquivo de sa@'{i}da especificado.
582 Valor: @var{nomearquivo}
584 Exemplo: @code{[gnuplot_out_file, "meugrafico.ps"]}
585 Esse exemplo envia a sa@'{i}da PostScript para o arquivo @code{meugrafico.ps} quando
586 usada conjuntamente com o terminal PostScript do gnuplot.
587 @c DOES OUTPUT FILE != FALSE IMPLY DON'T RUN THE VIEWER ??
588 @c WHAT HAPPENS IF OUTPUT FILE IS SPEFICIED BUT TERMINAL IS NOT PS ??
592 Opç@~ao: @code{gnuplot_pm3d}
594 Controla o uso do modo PM3D, que tem recursos
595 avançados em 3D. PM3D est@'{a} somente dispon@'{i}vel no gnuplot em vers@~{o}es ap@'{o}s a 3.7. O
596 valor padr@~{a}o para @code{gnuplot_pm3d} @'{e} @code{false}.
605 Opç@~{a}o: @code{gnuplot_preamble}
607 Insere comandos antes que o gr@'{a}fico seja
608 desenhado. Quaisquer comandos v@'{a}lidos para o gnuplot podem ser usados. Multiplos comandos
609 podem ser separados com um ponto e v@'{i}rgula. O exemplo mostrado produz uma
610 escala num@'{e}rica na montagem do gr@'{a}fico. O valor padr@~{a}o para @code{gnuplot_preamble} @'{e} uma seq@"{u}@^{e}ncia de caracteres vazia @code{""}.
615 [gnuplot_preamble, "set log y"]
619 Opç@~{a}o: @code{gnuplot_curve_titles}
621 Controla os t@'{i}tulos dados na chave da montagem do gr@'{a}fico. O
622 valor padr@~{a}o @'{e} @code{[default]}, que automaticamente escolhe o t@'{i}tulo de cada
623 curva para a funç@~{a}o cujo gr@'{a}fico est@'{a} sendo constru@'{i}do. Se n@~{a}o contiver @code{[default]}, @code{gnuplot_curve_titles}
624 pode conter uma lista de seq@"{u}@^{e}ncias de caracteres,
625 cada uma das quais @'{e} @code{"title '@var{title_string}'"}.
626 (Para disabilitar a chave de impress@~{a}o de gr@'{a}fico, adicione @code{"set nokey"} a @code{gnuplot_preamble}.)
631 [gnuplot_curve_titles,
632 ["title 'Minha primeira funç@~{a}o'", "title 'Minha segunda funç@~{a}o'"]]
636 Opç@~{a}o: @code{gnuplot_curve_styles}
638 Uma lista de seq@"{u}@^{e}ncias de caracteres controlando a apar@^{e}ncia
639 das curvas, i.e., cor, largura, brilho, etc., para serem enviadas para o
640 comando de montagem do gr@'{a}fico do gnuplot. O valor padr@~{a}o @'{e}
641 @code{["with lines 3", "with lines 1", "with lines 2", "with lines 5", "with lines 4", "with lines 6", "with lines 7"]}, que circula atrav@'{e}s de diferentes cores. Veja a
642 documentaç@~{a}o do gnuplot de @code{plot} para maiores informaç@~{o}es.
647 [gnuplot_curve_styles, ["with lines 7", "with lines 2"]]
651 Opç@~{a}o: @code{gnuplot_default_term_command}
653 O comando gnuplot para escolher o
654 tipo de terminal para o terminal padr@~{a}o. O valor padr@~{a}o @'{e} @code{set
655 term windows "Verdana" 15} em sistemas windows, e @code{set term x11
656 font "Helvetica,16"} em sistemas de janelas do X11.
661 [gnuplot_default_term_command, "set term x11"]
665 Opç@~{a}o: @code{gnuplot_dumb_term_command}
667 O comando gnuplot para escolher o
668 tipo de terminal para o terminal dumb. O valor padr@~{a}o @'{e} @code{"set term dumb 79 22"},
669 que faz a sa@'{i}da texto com 79 caracteres por 22
675 [gnuplot_dumb_term_command, "set term dumb 132 50"]
679 Opç@~{a}o: @code{gnuplot_ps_term_command}
681 O comando gnuplot para escolher o tipo
682 de terminal para o terminal PostScript. O valor padr@~{a}o @'{e}
683 @code{"set size 1.5, 1.5;set term postscript eps enhanced color solid 24"},
685 tamanho para 1.5 vezes o padr@~{a}o do gnuplot, e o tamanho da fonte para 24, al@'{e}m de
686 outras coisas. Veja a documentaç@~{a}o do gnuplot de @code{set term postscript} para mais informaç@~{a}o.
690 Todos os n@'{u}meros nos exemplos para a funç@~{a}o @var{plot2d} nesse
691 manual foram obtidos de arquivos Postscript que foram gerados ap@'{o}s
692 escolher @code{gnuplot_ps_term_command} como:
695 [gnuplot_ps_term_command,
696 "set size 1.3, 1.3; set term postscript eps color solid lw 2.5 30"]
703 @deffn {Funç@~{a}o} plot3d ([@var{expr_1}, @var{expr_2}, @var{expr_3}], @var{x_range}, @var{y_range}, ..., @var{opç@~{o}es}, ...)
704 @deffnx {Funç@~{a}o} plot3d (@var{expr}, @var{x_range}, @var{y_range}, ..., @var{opç@~{o}es}, ...)
705 @deffnx {Funç@~{a}o} plot3d (@var{name}, @var{x_range}, @var{y_range}, ..., @var{opç@~{o}es}, ...)
706 @deffnx {Funç@~{a}o} plot3d ([@var{expr_1}, @var{expr_2}, @var{expr_3}], @var{x_rge}, @var{y_rge})
707 @deffnx {Funç@~{a}o} plot3d ([@var{nome_1}, @var{nome_2}, @var{nome_3}], @var{x_range}, @var{y_range}, ..., @var{opç@~{o}es}, ...)
709 Mostra um gr@'{a}fico de uma ou tr@^{e}s express@~{o}es como funç@~{o}es de duas vari@'{a}veis.
712 @c plot3d (u^2 - v^2, [u, -2, 2], [v, -3, 3], [grid, 100, 100],
713 @c [mesh_lines_color,false])$
717 (%i1) plot3d (u^2 - v^2, [u, -2, 2], [v, -3, 3], [grid, 100, 100],
718 [mesh_lines_color,false])$
723 @image{@value{figuresfolder}/plotting17,8cm}
726 monta o gr@'{a}fico de @code{u^2-v^2} com @code{u} e @code{v} variando no intervalo fechado [-2,2] e
727 no intervalo fechado de [-3,3] respectivamente, e com @var{u} sobre o eixo x, e @code{v} sobre o eixo
730 Outro exemplo @'{e} uma superf@'{i}cie de Klein:
733 @c expr_1: 5*cos(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3)-10$
734 @c expr_2: -5*sin(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3)$
735 @c expr_3: 5*(-sin(x/2)*cos(y)+cos(x/2)*sin(2*y))$
736 @c plot3d ([expr_1, expr_2, expr_3], [x, -%pi, %pi],
737 @c [y, -%pi, %pi], [grid, 50, 50])$
740 (%i1) expr_1: 5*cos(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3)-10$
741 (%i2) expr_2: -5*sin(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3)$
742 (%i3) expr_3: 5*(-sin(x/2)*cos(y)+cos(x/2)*sin(2*y))$
744 (%i4) plot3d ([expr_1, expr_2, expr_3], [x, -%pi, %pi],
745 [y, -%pi, %pi], [grid, 50, 50])$
750 @image{@value{figuresfolder}/plotting21,8cm}
753 Algumas vezes isso @'{e} necess@'{a}rio para definir uma funç@~{a}o para montar o graico da express@~{a}o. Todos
754 os argumentos para plot3d s@~{a}o avaliados antes de serem passados para plot3d. Tentar
755 fazer um express@~{a}o que faz apenas o que @'{e} preciso pode ser
756 dif@'{i}cil e pode ser mais f@'{a}cil fazer uma funç@~{a}o.
759 @c M: matrix([1,2,3,4], [1,2,3,2], [1,2,3,4], [1,2,3,3])$
760 @c f(x, y) := float('M [round(x), round(y)])$
761 @c plot3d (f(x,y), [x,1,4],[y,1,4],[grid,3,3],[legend,false])$
764 (%i1) M: matrix([1,2,3,4], [1,2,3,2], [1,2,3,4], [1,2,3,3])$
765 (%i2) f(x, y) := float('M [round(x), round(y)])$
767 (%i3) plot3d (f(x,y), [x,1,4],[y,1,4],[grid,3,3],[legend,false])$
772 @image{@value{figuresfolder}/plotting25,8cm}
775 Veja @code{plot_options} para mais exemplos.
779 @deffn {Funç@~{a}o} make_transform (@var{vars}, @var{fx}, @var{fy}, @var{fz})
780 Retorna uma funç@~{a}o adequada para a funç@~{a}o transformaç@~{a}o em plot3d. Use
781 com a opç@~{a}o de montagem de gr@'{a}fico @code{transform_xy}.
783 make_transform ([r, th, z], r*cos(th), r*sin(th), z)$
785 @'{e} uma transformaç@~{a}o para coordenadas polares.
788 @deffn {Funç@~{a}o} set_plot_option (@var{opç@~{a}o})
789 Atribui uma das var@'{a}veis globais para impress@~{a}o.
790 @var{opç@~{a}o} @'{e} especificada como uma lista de dois ou mais elementos,
791 na qual o primeiro elemento @'{e} uma das palavras chave
792 dentro da lista @code{plot_options}.
794 @code{set_plot_option} avalia seu argumento e
795 retorna a liasta completa @code{plot_options}
796 (ap@'{o}s modificar um de seus elementos).
798 Veja tamb@'{e}m @code{plot_options}, @code{plot2d}, e @code{plot3d}.
802 Modifica a malha (@code{grid}) e valores de @code{x}.
803 Quando uma palavra chave em @code{plot_options} tem um valor atribu@'{i}do,
804 colocar um ap@'{o}strofo evita avaliaç@~{a}o.
807 @c set_plot_option ([grid, 30, 40]);
809 @c set_plot_option (['x, -100, 100]);
813 (%i1) set_plot_option ([grid, 30, 40]);
814 (%o1) [[x, - 1.755559702014E+305, 1.755559702014E+305],
815 [y, - 1.755559702014E+305, 1.755559702014E+305], [t, - 3, 3],
816 [grid, 30, 40], [transform_xy, false], [run_viewer, true],
817 [plot_format, gnuplot], [gnuplot_term, default],
818 [gnuplot_out_file, false], [nticks, 10], [adapt_depth, 10],
819 [gnuplot_pm3d, false], [gnuplot_preamble, ],
820 [gnuplot_curve_titles, [default]],
821 [gnuplot_curve_styles, [with lines 3, with lines 1,
822 with lines 2, with lines 5, with lines 4, with lines 6,
823 with lines 7]], [gnuplot_default_term_command, ],
824 [gnuplot_dumb_term_command, set term dumb 79 22],
825 [gnuplot_ps_term_command, set size 1.5, 1.5;set term postscript #
826 eps enhanced color solid 24]]
829 (%i3) set_plot_option (['x, -100, 100]);
830 (%o3) [[x, - 100.0, 100.0], [y, - 1.755559702014E+305,
831 1.755559702014E+305], [t, - 3, 3], [grid, 30, 40],
832 [transform_xy, false], [run_viewer, true],
833 [plot_format, gnuplot], [gnuplot_term, default],
834 [gnuplot_out_file, false], [nticks, 10], [adapt_depth, 10],
835 [gnuplot_pm3d, false], [gnuplot_preamble, ],
836 [gnuplot_curve_titles, [default]],
837 [gnuplot_curve_styles, [with lines 3, with lines 1,
838 with lines 2, with lines 5, with lines 4, with lines 6,
839 with lines 7]], [gnuplot_default_term_command, ],
840 [gnuplot_dumb_term_command, set term dumb 79 22],
841 [gnuplot_ps_term_command, set size 1.5, 1.5;set term postscript #
842 eps enhanced color solid 24]]
847 @subsection Funç@~{o}es para trabalhar com o formato @code{gnuplot_pipes}
849 @deffn {Funç@~{a}o} gnuplot_start ()
851 Abre o pipe para o gnuplot usado para montar um gr@'{a}fico com o formato
852 @code{gnuplot_pipes}. N@~{a}o @'{e} necess@'{a}rio abrir manualmente o
853 pipe antes de montar o gr@'{a}fico.
857 @deffn {Funç@~{a}o} gnuplot_close ()
859 Fecha o pipe para o gnuplot que est@'{a} sendo usado com o formato
860 @code{gnuplot_pipes}.
864 @deffn {Funç@~{a}o} gnuplot_restart ()
866 Fecha o pipe para o gnuplot que @'{e} usado com o formato
867 @code{gnuplot_pipes} e abre um novo pipe.
871 @deffn {Funç@~{a}o} gnuplot_replot ()
872 @deffnx {Funç@~{a}o} gnuplot_replot (@var{s})
874 Atualiza a janela gr@'{a}fica do gnuplot. Se @code{gnuplot_replot} for chamado com um
875 comando gnuplot em uma seq@"{u}@^{e}ncia de caracteres @var{s}, ent@~{a}o @code{s} @'{e} enviado para o gnuplot
876 antes de atualizar a janela.
880 @deffn {Funç@~{a}o} gnuplot_reset ()
882 Restaura o estado inicial padr@~{a}o do gnuplot usado com o formato
883 @code{gnuplot_pipes}. Para atualizar a janela do gnuplot chama @code{gnuplot_replot} ap@'{o}s
884 @code{gnuplot_reset}.