Merge branch 'master' into bug-4403-remove-polyfill
[maxima.git] / doc / info / pt / Plotting.texi
bloba157efd2137109c6675c63098749c24dd80464b2
1 @c Language: Portuguese
2 @c source: Plotting.texi (en) 1.36
3 @menu
4 * Definições para Criação de Gráficos::    
5 @end menu
7 @node Definições para Criação de Gráficos,  , Criação de Gráficos, Criação de Gráficos
8 @section Definições para Criação de Gráficos
10 @c INSPECTING src/plot.lisp AND TRYING SOME EXAMPLES,
11 @c IT APPEARS THAT in_netmath HAS NO EFFECT ON plot2d
12 @c AND ONLY EFFECT ON plot3d IS TO CAUSE OPENMATH OUTPUT TO BE WRITTEN TO CONSOLE
13 @c WHEN [plot_format, openmath] IS SET.
14 @c NOT CONVINCED WE REALLY WANT TO DOCUMENT THIS VARIABLE
15 @defvr {Variável} in_netmath
16 Valor por omissão: @code{false}
18 Quando @code{in_netmath} é @code{true}, @code{plot3d} imprime uma
19 saída OpenMath para a consola se @code{plot_format} é
20 @code{openmath}; caso contrário @code{in_netmath} (mesmo se for
21 @code{true}) não tem efeito. @code{in_netmath} não tem efeito
22 sobre @code{plot2d}.
24 @end defvr
26 @deffn {Função} plot2d (@var{expr}, @var{intervalo_x}, ..., @var{opções}, ...)
27 @deffnx {Função} plot2d ([@var{expr_1}, ..., @var{expr_n}], ..., @var{opções}, ...)
28 @deffnx {Função} plot2d ([@var{expr_1}, ..., @var{expr_n}], @var{intervalo_x},..., @var{opções}, ...)
30 Onde @var{expr}, @var{expr_1}, ..., @var{expr_n} podem ser
31 expressões, funções ou operadores do Maxima ou do Lisp, ou ainda
32 uma lista da forma @code{[discrete, [@var{x1}, ..., @var{xn}],
33 [@var{y1}, ..., @var{yn}]]}, @code{[discrete, [[@var{x1}, @var{y1}],
34 ..., [@var{xn}, ..., @var{yn}]]} ou @code{[parametric, @var{expr_x},
35 @var{expr_y}, @var{intervalo_t}]}.
37 Mostra o gráfico de uma ou mais expressões em função de uma
38 variável.
40 @code{plot2d} produz o gráfico de uma expressão @var{expr} ou de
41 várias expressões @code{[@var{expr_1}, ..., @var{expr_n}]}. As
42 expressões que não forem do tipo paramétrico ou discreto, deverão
43 depender todas de uma única variável @var{var} e será
44 obrigatório usar @var{intervalo_x} para indicar o nome dessa
45 variável, e os seus valores mínimo e máximo, usando a
46 sintaxe: @code{[@var{var}, @var{min}, @var{max}]}. O gráfico
47 mostrará o eixo horizontal delimitado pelos valores @var{min} e
48 @var{max}.
50 Uma expressão a ser representada no gráfico pode ser dada também
51 na forma discreta, ou paramétrica. Nomeadamente, por meio de uma lista
52 a começar pela palavra ``discrete'' ou ``parametric''. A palavra
53 chave @var{discrete} deverá ir seguida por duas listas, ambas do mesmo
54 comprimento, que serão as coordenadas horizontais e verticais de um
55 conjunto de pontos; em alternativa, as coordenadas de cada ponto podem
56 ser colocadas numa lista de dois valores, e todas essas coordenadas
57 deverão estar dentro de outra lista. A palavra chave @var{parametric}
58 deverá ir seguida por duas expressões @var{expr_x} e @var{expr_y}, e
59 um intervalo @var{intervalo_t} da forma @code{[@var{param}, @var{min},
60 @var{max}]}. As duas expressões deverão depender unicamente no
61 parâmetro @var{param}, e o gráfico mostrará o percurso seguido
62 pelo ponto com coordenadas (@var{expr_x}, @var{expr_y}) à medida que
63 @var{param} aumenta desde @var{min} até @var{max}.
65 O intervalo de valores no eixo vertical não é obrigatório. É
66 mais uma das opções do comando, com a sintaxe: @code{[y,
67 @var{min}, @var{max}]}. Se essa opção for usada, o gráfico
68 apresentará esse intervalo completo, inclusivamente quando as
69 expressões não cheguem a atingir esses valores. De outra forma, se
70 não for indicado um intervalo no eixo vertical por meio de
71 @code{set_plot_option}, as fronteiras do eixo vertical serão
72 seleccionadas automaticamente.
74 Todas as outras opções deverão ser listas, a começar pelo
75 nome da opção. A opção @var{xlabel} pode ser usada para dar
76 um texto que identificará o eixo horizontal; se essa opção não for
77 usada, o eixo será identificado com o nome da variável indicada em
78 @var{intervalo_x}, ou com a expressão @var{expr_x}, se houver
79 unicamente uma expressão paramétrica, ou caso contrário ficará
80 em branco.
82 O texto para identificar o eixo vertical pode ser indicado com a
83 opção @var{ylabel}. Se só houver uma única expressão a ser
84 representada, e a opção @var{ylabel} não tiver sido usada, o
85 eixo vertical será identificado com essa expressão, a menos que for
86 muito comprido, ou com a expressão @var{expr_y}, se a expressão for
87 paramétrica, ou com o texto ``discrete data'' se a expressão for
88 discreta.
90 As opções @var{logx} e @var{logy} não precisam de quaisquer
91 paraâmetros. Fazem com que os eixos horizontal e vertical sejam
92 apresentados em forma logarítmica.
94 Se houver vá rias expressões a serem representadas, será escrita
95 uma legenda para identificar cada uma dessas expressões. O texto que
96 deverá ser usado nessa legenda pode ser indicado por meio da
97 opção @var{legend}. Se essa opção não for usada, Maxima
98 criará textos para identificar cada expressão.
100 Por omissão, as expressões dadas serão representadas por pequenos
101 segmentos de recta a ligarem pontos adjacentes num conjunto de pontos
102 que, ou é dado usando a forma @var{discrete}, ou é calculado
103 automaticamente a partir das expressões dadas, por meio de um
104 algoritmo com ajuste automático dos intervalos entre pontos, usando
105 como estimativa inicial do número de pontos o valor indicado pela
106 opção @var{nticks}. A opção @var{style} serve para fazer com
107 que alguma das expressões seja representada por pontos isolados ou por
108 pontos mais segmentos de recta.
110 Existem várias opções globais, armazenadas na lista
111 @var{plot_options}, quu podem ser modificadas usando a função
112 @code{set_plot_option}; qualquer uma dessad opções pode ser
113 contrariada pelos valores locais dados no comando @var{plot2d}.
115 Uma função a ser representada poderá ser identificada pelo nome
116 de uma função ou operador do Maxima ou do Lisp, por meio duma
117 expressão lambda do Maxima, ou como uma expressão geral do Maxima.
118 Se for especificada como um nome ou como expressão lambda, a
119 respectiva função deverá depender dum único argumento.
121 @c PUT EXAMPLES FOR PRECEDING SIMPLE FORMS OF plot2d HERE
122 @b{Exemplos:}
124 Gráficos de funções ordinárias.
126 @c ===beg===
127 @c plot2d (sin(x), [x, -5, 5])$
128 @c plot2d (sec(x), [x, -2, 2], [y, -20, 20])$
129 @c ===end===
130 @example
131 (%i1) plot2d (sin(x), [x, -5, 5])$
133 (%i2) plot2d (sec(x), [x, -2, 2], [y, -20, 20])$
134 @end example
136 @ifnotinfo
137 @figure{plotting6}
138 @figure{plotting7}
139 @end ifnotinfo
141 Gráfico de funções identificadas pelo seu nome.
143 @c ===beg===
144 @c F(x) := x^2 $
145 @c :lisp (defun |$g| (x) (m* x x x))
146 @c H(x) := if x < 0 then x^4 - 1 else 1 - x^5 $
147 @c plot2d ([F, G, H], [u, -1, 1], [y, -1.5, 1.5])$
148 @c ===end===
149 @example
150 (%i3) F(x) := x^2 $
152 (%i4) :lisp (defun |$g| (x) (m* x x x))
155 (%i5) H(x) := if x < 0 then x^4 - 1 else 1 - x^5 $
157 (%i6) plot2d ([F, G, H], [u, -1, 1], [y, -1.5, 1.5])$
158 @end example
160 @ifnotinfo
161 @figure{plotting10}
162 @end ifnotinfo
164 A curva ``borboleta'', definida paramétricamente:
166 @c ===beg===
167 @c r: (exp(cos(t))-2*cos(4*t)-sin(t/12)^5)$
168 @c plot2d([parametric, r*sin(t), r*cos(t), [t, -8*%pi, 8*%pi]])$
169 @c ===end===
170 @example
171 (%i1) r: (exp(cos(t))-2*cos(4*t)-sin(t/12)^5)$
172 (%i2) plot2d([parametric, r*sin(t), r*cos(t), [t, -8*%pi, 8*%pi]])$
173 @end example
175 @ifnotinfo
176 @figure{plotting11}
177 @end ifnotinfo
179 Função -|x| e círculo por meio de um gráfico
180 paramétrico com um parâmetro @var{t}. Usa-se a opção
181 @var{same_xy} para obter a mesma escala nos dois eixos:
183 @c ===beg===
184 @c plot2d([[parametric, cos(t), sin(t), [t,0,2*%pi]], -abs(x)],
185 @c          [x, -sqrt(2), sqrt(2)], same_xy)$
186 @c ===end===
187 @example
188 @group
189 (%i1) plot2d([[parametric, cos(t), sin(t), [t,0,2*%pi]], -abs(x)],
190          [x, -sqrt(2), sqrt(2)], same_xy)$
191 @end group
192 @end example
194 @ifnotinfo
195 @figure{plotting12}
196 @end ifnotinfo
198 Gráficos de um conjunto discreto de pontos, definindo as coordenadas
199 x e y por separado:
201 @c ===beg===
202 @c plot2d ([discrete, makelist(i*%pi, i, 1, 5),
203 @c                            [0.6, 0.9, 0.2, 1.3, 1]])$
204 @c ===end===
205 @example
206 (%i1) plot2d ([discrete, makelist(i*%pi, i, 1, 5),
207                             [0.6, 0.9, 0.2, 1.3, 1]])$
208 @end example
210 @ifnotinfo
211 @figure{plotting14}
212 @end ifnotinfo
214 O gráfico dos pontos dos dados pode ser apresentado junto com o
215 gráfico de uma função teórica que ajusta esses valores:
217 @c ===beg===
218 @c xy: [[10, .6], [20, .9], [30, 1.1], [40, 1.3], [50, 1.4]]$
219 @c plot2d([[discrete, xy], 2*%pi*sqrt(l/980)], [l,0,50],
220 @c         [style, points, lines], [color, red, blue],
221 @c         [point_type, asterisk],
222 @c         [legend, "experiment", "theory"],
223 @c         [xlabel, "pendulum's length (cm)"],
224 @c         [ylabel, "period (s)"])$
225 @c ===end===
226 @example
227 (%i1) xy: [[10, .6], [20, .9], [30, 1.1], [40, 1.3], [50, 1.4]]$
228 @group
229 (%i2) plot2d([[discrete, xy], 2*%pi*sqrt(l/980)], [l,0,50],
230         [style, points, lines], [color, red, blue],
231         [point_type, asterisk],
232         [legend, "experiment", "theory"],
233         [xlabel, "pendulum's length (cm)"],
234         [ylabel, "period (s)"])$
235 @end group
236 @end example
238 @ifnotinfo
239 @figure{plotting16}
240 @end ifnotinfo
242 Veja também @code{plot_options}, que descreve as opções das
243 funções gráficas e mostra mais exemplos.
245 @end deffn
247 @defvr {Variável de sistema} plot_options
248 Os elementos desta lista estabelecem os valores por omissaão para as
249 opções usadas na elaboração de gráficos. Se uma
250 opção estiver presente numa chamada a @code{plot2d} ou
251 @code{plot3d}, esse valor terá precedência sobre o valor por
252 omissção. De outra forma, será usado o valor em
253 @code{plot_options}. Os valores por omissção das opções
254 podem ser modificados usando @code{set_plot_option}.
256 Cada elemento de @code{plot_options} é uma lista de dois ou mais
257 ítens.  O primeiro item é o nome de uma opção, e
258 os restantes compreendem o valor ou valores atribuídos
259 à opção.  Em alguns casos, o valor atribuído é
260 uma lista, que pode compreender muitos itens.
262 As opções globais que são reconhecidas por @code{plot2d} e
263 @code{plot3d} são as seguintes:
265 @itemize @bullet
266 @item
267 Opção: @code{plot_format}
269 Determina a interface gráfica que será usada por @code{plot2d} e
270 @code{plot3d}.
272 @itemize @bullet
273 @item
274 Valor por omissão: @code{gnuplot}
276 Gnuplot é o pcote gráfico mais avançado entre os
277 disponíveis no Maxima. Será preciso que o pacote externo
278 gnuplot esteja instalado.
279 @item
280 Valor: @code{mgnuplot}
282 Mgnuplot é uma interface Tk para o gnuplot. Vem incluída
283 na distribuíção do Maxima. Mgnuplot oferece uma GUI
284 rudimentar para o gnuplot, mas tem menos recursos em geral que a
285 interface padrão do gnuplot.  Mgnuplot precisa que os pacotes externos
286 gnuplot e Tcl/Tk estejam instalados.
287 @item
288 Valor: @code{openmath}
290 Openmath é um programa gráfico escrito em Tcl/Tk. Este formato é
291 fornecido pelo pacote Xmaxima, que é distribuido com Maxima. Se quiser
292 usar este formato instalar o pacote Xmaxima, que funcionará não só
293 a partir do próprio Xmaxima mas também a partir da linha de comandos
294 de outras GUI para o Maxima.
296 @end itemize
298 @item
299 Opção: @code{run_viewer}
301 Controla se será executado ou não o visualizador apropriado para o
302 formato do gráfico.
304 @itemize @bullet
305 @item
306 @c DOES FALSE IMPLY THE OUTPUT FILE IS GENERATED AND NOT SHOWN ?? OR IS NOTHING GENERATED ??
307 Valor por omissão: @code{true}
309 Executa-se o programa visualizador.
310 @item
311 Valor: @code{false}
313 Não se executa o programa visualizador.
314 @end itemize
316 @item
317 Opção: @code{y}
319 O intervalo vertical do gráfico.
321 Exemplo:
322 @example
323 [y, - 3, 3]
324 @end example
325 Faz com que o intervalo vertical seja [-3, 3].
327 @item
328 Opção: @code{plot_realpart}
330 Quando @code{plot_realpart} for @code{true}, nos pontos onde o valor a
331 ser representado no eixo vertical for complexo, será apresentada a
332 sua parte real @var{x}; isso é equivalente a mostrar
333 @code{realpart(@var{x})} em lugar de @var{x}. De outra forma, somente
334 valores com a parte imaginária igual a 0 são mostrados no
335 gráfico, e os valores complexos serão ignorados.
337 Exemplo:
338 @example
339 plot2d (log(x), [x, -5, 5], [plot_realpart, false]);
340 plot2d (log(x), [x, -5, 5], [plot_realpart, true]);
341 @end example
342 O valor por omissão é @code{false}.
344 @item
345 Opção: @code{nticks}
347 No plot2d, é o número de pontos usados, inicialmente, pela rotina
348 gráfica adaptativa. É também o número de pontos que serão
349 apresentados num gráfico paramétrico.
351 Exemplo:
352 @example
353 [nticks, 20]
354 @end example
355 O valor por omissão para @code{nticks} é 10.
357 @item
358 Opção: @code{adapt_depth}
360 O número maximo de subdivisões usadas pela rotina gráfica adaptativa.
362 Exemplo:
363 @example
364 [adapt_depth, 5]
365 @end example
366 O valor por omissão para @code{adapt_depth} é 10.
368 @item
369 Opção: @code{xlabel}
371 O texto que identifica o eixo horizontal num gráfico a 2d.
373 Exemplo:
374 @example
375 [xlabel, "Tempo em segundos"]
376 @end example
378 @item
379 Opção: @code{ylabel}
381 O texto que identifica o eixo vertical num gráfico a 2d.
384 Exemplo:
385 @example
386 [ylabel, "Temperatura"]
387 @end example
389 @item
390 Opção: @code{logx}
392 Faz com que o eixo horizontal num gráfico a 2d seja representado em
393 escala logarítmica. Não precisa de nenhum parâmetro
394 adicional. 
396 @item
397 Opção: @code{logy}
399 Faz com que o eixo vertical num gráfico a 2d seja representado em
400 escala logarítmica. Não precisa de nenhum parâmetro
401 adicional. 
403 @item
404 Opção: @code{legend}
406 Os textos para identificar as diversas expressões num gráfico a 2d
407 com muitas expressões. Se existirem mais expressões do que os textos
408 dados, serão repetidos. Por omissão, seraão usados os nomes das
409 expressões ou das funções, ou as palavras discrete1, discrete2,
410 ..., no caso de conjuntos discretos de pontos.
412 Exemplo:
413 @example
414 [legend, "Grupo 1", "Grupo 2", "Grupo 3"]
415 @end example
417 @item
418 Opção: @code{style}
420 Os estilos que serão usados para as diversas funções ou
421 conjuntos discretos de pontos, num gráfico a 2d. A palavra @var{style}
422 deverá ir seguida por um ou mais estilos. Se houver mais funções
423 e conjuntos de dados do que os estilos definidos, serão repetidos
424 estilos. Cada estilo poderá ser @var{lines} para segmentos de recta,
425 @var{points} para pontos isolados, @var{linespoints} para segmentos e
426 pontos, ou @var{dots} para pequenos pontos isolados. O Gnuplot também
427 aceita o estilo @var{impulses}.
429 Cada um dos estilos poderá ser incorporado numa lista, seguido de
430 alguns parâmetros adicionais. @var{lines} admite um ou dois números:
431 a largura da linha e um inteiro que identifica uma cor. @var{points}
432 admite um ou dois números; o primeiro número é o raio dos pontos,
433 e o segundo número é um inteiro que no Gnuplot permite seleccionar
434 diferentes formas e cores para os pontos e no Openmath muda a cor dos
435 pontos usados. @var{linesdots} admite até quatro números; os dois
436 primeiros são os mesmos do que para @var{lines} e os dois últimos
437 são os mesmos do que para @var{points}.
439 Exemplo:
440 @example
441 [style,[lines,2,3],[points,1,4]]
442 @end example
444 No Gnuplot, isso faz com que a primeira (e terceira, quinta, etc)
445 expressão seja apresentada com segmentos de recta azuis de largura 2,
446 e a segunda (quarta, sexta, etc) expressão com quadrados verdes de
447 tamanho 1. No Openmath, a primeira expressão será apresentada com
448 rectas magenta de largura 2, e a segunda com pontos laranja de raio 1;
449 repare que openmath_color(3) e openmath_color(4) produzem ``magenta'' e
450 ``orange''.
452 O estilo por omissão é segmentos de recta, com largura 1, e com
453 diferentes cores.
455 @item
456 Opção: @code{grid}
458 Define o número de pontos nas direções x e y, na grelha usada nos
459 gráficos tridimensionais.
461 Exemplo:
462 @example
463 [grid, 50, 50]
464 @end example
465 Define uma grelha de 50 por 50 pontos. A grelha padrão é 30 por 30.
467 @item
468 Opção: @code{transform_xy}
470 Permite a aplicação de transformações nos gráficos
471 tridimensionais.
473 Exemplo:
474 @example
475 [transform_xy, false]
476 @end example
477 O valor por omiss~ao de @code{transform_xy} é @code{false}. Se não for
478 @code{false}, deverá ser o resultado produzido por
480 @example
481 make_transform ([x, y, z], f1(x, y, z), f2(x, y, z), f3(x, y, z))$
482 @end example
483 A transformação @code{polar_xy} está previamente definida no
484 Maxima. É igual ao resultado da transformação
485 @example
486 make_transform ([r, th, z], r*cos(th), r*sin(th), z)$
487 @end example
488 @end itemize
490 @b{Opções do Gnuplot:}
492 Existem muitas opções específicas para o
493 Gnuplot. Muitas dessas opções são comandos próprios do
494 Gnuplot, especificados como sequências de caracteres. Consulte a
495 documentação do gnuplot para mais pormenores.
497 @itemize @bullet
498 @item
499 @code{gnuplot_term}
501 Define o tipo terminal de saída para gnuplot.
502 @itemize @bullet
503 @item
504 Valor por omissão: @code{default}
506 A saída do Gnuplot é mostrada em uma janela gráfica
507 separada.
509 @item
510 Valor: @code{dumb}
512 A saída do Gnuplot é mostrada na consola do Maxima,
513 usando uma aproximação "arte ASCII" para gráficos.
515 @item
516 Valor: @code{ps}
518 Gnuplot gera comandos na linguagem PostScript de descrição de
519 páginas.  Se à opção @code{gnuplot_out_file} tiver sido dada o
520 nome de um ficheiro, gnuplot escreverá os comandos PostScript nesse
521 ficheiro.  De outra forma, os comandos PostScript serão gravados no
522 ficheiro @code{maxplot.ps}.
524 @item
525 Valor: qualquer outro tipo de terminal aceite pelo gnuplot
527 Gnuplot pode produzir gráficos em muitos outros formatos gráficos
528 tais como png, jpeg, svg, etc. Para criar gráficos em algum desses
529 deverá dar-se a @code{gnuplot_term} um (símbolo)
530 suportado pelo gnuplot ou uma especificação completa de terminal
531 do gnuplot com opções válidas (sequência de caracteres).  Por
532 exemplo @code{[gnuplot_term,png]} cria gráficos no formato PNG
533 (Portable Network Graphics) enquanto @code{[gnuplot_term,"png size
534 1000,1000"]} cria gráficos no formato PNG com tamanho de 1000x1000
535 pixels. Se à opção @code{gnuplot_out_file} for dado o nome de um
536 ficheiro, gnuplot gravará o graáfico nesse ficheiro. De outra forma,
537 o gráfico é gravado no ficheiro @code{maxplot.@var{term}}, onde
538 @var{term} é o nome do terminal do gnuplot.
540 @end itemize
542 @item
543 Opção: @code{gnuplot_out_file}
545 Grava o gráfico criado por gnuplot para um ficheiro.
547 @itemize @bullet
548 @item
549 Valor por omissão: @code{false}
551 Nenhum ficheiro de saída especificado.
552 @item
553 Valor: @var{filename}
555 Exemplo: @code{[gnuplot_out_file, "myplot.ps"]}
556 Quando usada em conjunto com o terminal PostScript do gnuplot, neste
557 exemplo o gráfico será gravado em formato PostScript no ficheiro
558 @code{myplot.ps}, .
559 @c DOES OUTPUT FILE != FALSE IMPLY DON'T RUN THE VIEWER ??
560 @c WHAT HAPPENS IF OUTPUT FILE IS SPEFICIED BUT TERMINAL IS NOT PS ??
561 @end itemize
563 @item
564 Opção: @code{gnuplot_pm3d}
566 Controla o uso do modo PM3D, que possui recursos avançados em 3D. O
567 modo PM3D está somente disponível nas versões de
568 gnuplot posteriores a 3.7. O valor padrão para @code{gnuplot_pm3d} é
569 @code{false}.
571 Exemplo:
572 @example
573 [gnuplot_pm3d, true]
574 @end example
576 @item
577 Opção: @code{gnuplot_preamble}
579 Insere comandos antes que o gráfico seja desenhado. Quaisquer comandos
580 válidos para o gnuplot podem ser usados. Multiplos comandos podem ser
581 separados com um ponto e vírgula. O exemplo mostrado
582 produz uma escala logarítmica no gráfico. O valor
583 padrão para @code{gnuplot_preamble} é uma sequência de caracteres
584 vazia @code{""}.
586 Exemplo:
587 @example
588 [gnuplot_preamble, "set log y"]
589 @end example
591 @item
592 Opção: @code{gnuplot_curve_titles}
594 Controla os títulos dados na legenda do gráfico. O valor
595 padrão é @code{[default]}, que escolhe automaticamente um
596 título para função cujo gráfico está a ser
597 desenhado. Se não for igual a @code{[default]},
598 @code{gnuplot_curve_titles} poderá conter uma lista de sequências de
599 caracteres, cada uma das quais é @code{"title '@var{nome}'"}.  (Para
600 desabilitar a legenda do gráfico, adicione @code{"set nokey"} a
601 @code{gnuplot_preamble}.)
603 Exemplo:
604 @example
605 [gnuplot_curve_titles,
606 ["title 'Minha primeira função'", "title 'Minha segunda função'"]]
607 @end example
609 @item
610 Opção: @code{gnuplot_curve_styles}
612 Uma lista de sequências de caracteres a ser enviada para o gnuplot
613 para controlar a aparência das curvas, nomeadamente, cor, largura,
614 brilho, etc.  O valor padrão é @code{["with lines 3", "with lines
615 1", "with lines 2", "with lines 5", "with lines 4", "with lines 6",
616 "with lines 7"]}, que circula através de diferentes cores. Consulte a
617 documentação de @code{plot} no manual do gnuplot para mais
618 informações.
620 Exemplo:
621 @example
622 [gnuplot_curve_styles, ["with lines 7", "with lines 2"]]
623 @end example
625 @item
626 Opção: @code{gnuplot_default_term_command}
628 O comando do Gnuplot para escolher o tipo de terminal gráfico. O valor
629 padrão é a sequência de caracteres vazia @code{""}, nomeadamente,
630 usar-se-á o formato padrão do gnuplot.
632 Exemplo:
633 @example
634 [gnuplot_default_term_command, "set term x11"]
635 @end example
637 @item
638 Opção: @code{gnuplot_dumb_term_command}
640 O comando gnuplot para escolher o tipo de terminal não gráfico. O
641 valor padrão é @code{"set term dumb 79 22"}, que produz
642 saída em texto com 79 por 22 caracteres.
644 Exemplo:
645 @example
646 [gnuplot_dumb_term_command, "set term dumb 132 50"]
647 @end example
649 @item
650 Opção: @code{gnuplot_ps_term_command}
652 O comando gnuplot para escolher o tipo de terminal para o terminal
653 PostScript. O valor padrão é @code{"set size 1.5, 1.5;set term
654 postscript eps enhanced color solid 24"}, que escolhe o tamanho para 1.5
655 vezes o padrão do gnuplot, e o tamanho da fonte para 24, além de
656 outras coisas. Para mais informação, consulte a documentação
657 de @code{set term postscript} no manual do gnuplot.
659 Exemplo:
661 Toda as figuras nos exemplos para a função @var{plot2d} neste
662 manual forma obtidas a partir de ficheiros Postscript que foram
663 produzidos após ter mudado @code{gnuplot_ps_term_command} par:
665 @example
666 [gnuplot_ps_term_command,
667 "set size 1.3, 1.3; set term postscript eps color solid lw 2.5 30"]
668 @end example
670 @end itemize
672 @end defvr
674 @deffn {Função} plot3d ([@var{expr_1}, @var{expr_2}, @var{expr_3}], @var{x_range}, @var{y_range}, ..., @var{opções}, ...)
675 @deffnx {Função} plot3d (@var{expr}, @var{x_range}, @var{y_range}, ..., @var{opções}, ...)
676 @deffnx {Função} plot3d (@var{name}, @var{x_range}, @var{y_range}, ..., @var{opções}, ...)
677 @deffnx {Função} plot3d ([@var{expr_1}, @var{expr_2}, @var{expr_3}], @var{x_rge}, @var{y_rge})
678 @deffnx {Função} plot3d ([@var{nome_1}, @var{nome_2}, @var{nome_3}], @var{x_range}, @var{y_range}, ..., @var{opções}, ...)
680 Mostra o gráfico de uma ou três expressões como funções
681 de duas variáveis.
683 @strong{Exemplos:}
685 Função de duas variáveis:
687 @c ===beg===
688 @c plot3d (u^2 - v^2, [u, -2, 2], [v, -3, 3], [grid, 100, 100],
689 @c         [mesh_lines_color,false])$
690 @c ===end===
691 @example
692 @group
693 (%i1) plot3d (u^2 - v^2, [u, -2, 2], [v, -3, 3], [grid, 100, 100],
694         [mesh_lines_color,false])$
695 @end group
696 @end example
698 @ifnotinfo
699 @figure{plotting17}
700 @end ifnotinfo
702 Uso da op@.cão @var{z} para limitar uma função que se aproxima de infinito
703 (neste caso a função aproxima-se de menos infinito nos eixos x e y); este
704 exemplo mostra também como traçar gráficos apenas com linhas, sem
705 superfícies coloridas.
707 @c ===beg===
708 @c plot3d ( log ( x^2*y^2 ), [x, -2, 2], [y, -2, 2], [z, -8, 4],
709 @c          [palette, false], [color, magenta])$
710 @c ===end===
711 @example
712 @group
713 (%i1) plot3d ( log ( x^2*y^2 ), [x, -2, 2], [y, -2, 2], [z, -8, 4],
714          [palette, false], [color, magenta])$
715 @end group
716 @end example
718 @ifnotinfo
719 @figure{plotting18}
720 @end ifnotinfo
722 Os valores infinitos de z podem ser também evitados escolhendo uma
723 gralha que não inclua pontos onde a função é
724 indeterminada, como no exemplo seguinte, que mostra também como
725 modificar a paleta de cores e como incluir uma barra que relaciona as
726 cores com os valores da variável z:
728 @c ===beg===
729 @c plot3d (log (x^2*y^2), [x, -2, 2], [y, -2, 2],[grid, 29, 29],
730 @c       [palette, [gradient, red, orange, yellow, green]],
731 @c       color_bar, [xtics, 1], [ytics, 1], [ztics, 4],
732 @c       [color_bar_tics, 4])$
733 @c ===end===
734 @example
735 @group
736 (%i1) plot3d (log (x^2*y^2), [x, -2, 2], [y, -2, 2],[grid, 29, 29],
737        [palette, [gradient, red, orange, yellow, green]],
738        color_bar, [xtics, 1], [ytics, 1], [ztics, 4],
739        [color_bar_tics, 4])$
740 @end group
741 @end example
743 @ifnotinfo
744 @figure{plotting19}
745 @end ifnotinfo
747 Duas superfícies no mesmo gráfico. Definem-se
748 domínios diferentes para cada uma, colocando cada
749 expressão e o seu domínio dentro de uma lista separada;
750 define-se também um domínio global para o gráfico
751 completo, após as definições das funções.
753 @c ===beg===
754 @c plot3d ([[-3*x - y, [x, -2, 2], [y, -2, 2]],
755 @c    4*sin(3*(x^2 + y^2))/(x^2 + y^2), [x, -3, 3], [y, -3, 3]],
756 @c    [x, -4, 4], [y, -4, 4])$
757 @c ===end===
758 @example
759 @group
760 (%i1) plot3d ([[-3*x - y, [x, -2, 2], [y, -2, 2]],
761    4*sin(3*(x^2 + y^2))/(x^2 + y^2), [x, -3, 3], [y, -3, 3]],
762    [x, -4, 4], [y, -4, 4])$
763 @end group
764 @end example
766 @ifnotinfo
767 @figure{plotting20}
768 @end ifnotinfo
770 Gráfico de uma garrafa de Klein, definida parametricamente:
772 @c ===beg===
773 @c expr_1: 5*cos(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3)-10$
774 @c expr_2: -5*sin(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3)$
775 @c expr_3: 5*(-sin(x/2)*cos(y)+cos(x/2)*sin(2*y))$
776 @c plot3d ([expr_1, expr_2, expr_3], [x, -%pi, %pi],
777 @c         [y, -%pi, %pi], [grid, 50, 50])$
778 @c ===end===
779 @example
780 (%i1) expr_1: 5*cos(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3)-10$
781 (%i2) expr_2: -5*sin(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3)$
782 (%i3) expr_3: 5*(-sin(x/2)*cos(y)+cos(x/2)*sin(2*y))$
783 @group
784 (%i4) plot3d ([expr_1, expr_2, expr_3], [x, -%pi, %pi],
785         [y, -%pi, %pi], [grid, 50, 50])$
786 @end group
787 @end example
789 @ifnotinfo
790 @figure{plotting21}
791 @end ifnotinfo
793 Gráfico de uma função ``harmónica esférica'', usando a
794 transformaçã pré-definida @code{spherical_to_xyz}, para
795 transformar de coordenadas esféricas para retangulares. Consulte a
796 documentação de @code{spherical_to_xyz}.
798 @c ===beg===
799 @c plot3d (sin(2*theta)*cos(phi), [theta, 0, %pi],
800 @c         [phi, 0, 2*%pi],
801 @c         [transform_xy, spherical_to_xyz], [grid,30,60],
802 @c    [legend,false])$
803 @c ===end===
804 @example
805 @group
806 (%i1) plot3d (sin(2*theta)*cos(phi), [theta, 0, %pi],
807         [phi, 0, 2*%pi],
808         [transform_xy, spherical_to_xyz], [grid,30,60],
809    [legend,false])$
810 @end group
811 @end example
813 @ifnotinfo
814 @figure{plotting22}
815 @end ifnotinfo
817 Uso da função pré-definida @code{polar_to_xy} para transformar de
818 coordenadas cilíndricas para retangulares. Consulte a
819 documentação de @code{polar_to_xy},
821 @c ===beg===
822 @c plot3d (r^.33*cos(th/3), [r,0,1], [th,0,6*%pi], [box, false],
823 @c    [grid, 12, 80], [transform_xy, polar_to_xy], [legend, false])$
824 @c ===end===
825 @example
826 @group
827 (%i1) plot3d (r^.33*cos(th/3), [r,0,1], [th,0,6*%pi], [box, false],
828    [grid, 12, 80], [transform_xy, polar_to_xy], [legend, false])$
829 @end group
830 @end example
832 @ifnotinfo
833 @figure{plotting23}
834 @end ifnotinfo
836 Gráfico de uma esfera, usando transformação de coordenadas
837 esféricas para retangulares. Usa-se a opção @code{same_xyz} para
838 obter a mesma escala nos três eixos. Quando se usam transformações
839 de coordenadas, não convém eliminar as curvas traçadas na
840 superfície, porque Gnuplot não mostrará o gráfico
841 corretamente.
843 @c ===beg===
844 @c plot3d ( 5, [theta, 0, %pi], [phi, 0, 2*%pi], same_xyz,
845 @c   [transform_xy, spherical_to_xyz], [mesh_lines_color,blue],
846 @c   [palette,[gradient,"#1b1b4e", "#8c8cf8"]], [legend, false])$
847 @c ===end===
848 @example
849 @group
850 (%i1) plot3d ( 5, [theta, 0, %pi], [phi, 0, 2*%pi], same_xyz,
851   [transform_xy, spherical_to_xyz], [mesh_lines_color,blue],
852   [palette,[gradient,"#1b1b4e", "#8c8cf8"]], [legend, false])$
853 @end group
854 @end example
856 @ifnotinfo
857 @figure{plotting24}
858 @end ifnotinfo
860 Definição de uma função de duas variáveis usando uma matriz.
861 Repare-se no uso do apóstrofo na definição da função, para
862 evitar que @code{plot3d} falhe queixando-se de que os
863 índices da matriz deveriam ser números inteiros.
865 @c ===beg===
866 @c M: matrix([1,2,3,4], [1,2,3,2], [1,2,3,4], [1,2,3,3])$
867 @c f(x, y) := float('M [round(x), round(y)])$
868 @c plot3d (f(x,y), [x,1,4], [y,1,4], [grid,3,3], [legend,false])$
869 @c ===end===
870 @example
871 (%i1) M: matrix([1,2,3,4], [1,2,3,2], [1,2,3,4], [1,2,3,3])$
872 (%i2) f(x, y) := float('M [round(x), round(y)])$
873 @group
874 (%i3) plot3d (f(x,y), [x,1,4], [y,1,4], [grid,3,3], [legend,false])$
875 @end group
876 @end example
878 @ifnotinfo
879 @figure{plotting25}
880 @end ifnotinfo
882 Fixando um valor nulo para a elevação, uma superfície
883 pode ser visualizada como um mapa, em que cada cor representa um valor
884 diferente.
886 @c ===beg===
887 @c plot3d (cos (-x^2 + y^3/4), [x,-4,4], [y,-4,4], [zlabel,""],
888 @c        [mesh_lines_color,false], [elevation,0], [azimuth,0],
889 @c        color_bar, [grid,80,80], [ztics,false], [color_bar_tics,1])$
890 @c ===end===
891 @example
892 @group
893 (%i1) plot3d (cos (-x^2 + y^3/4), [x,-4,4], [y,-4,4], [zlabel,""],
894        [mesh_lines_color,false], [elevation,0], [azimuth,0],
895        color_bar, [grid,80,80], [ztics,false], [color_bar_tics,1])$
896 @end group
897 @end example
899 @ifnotinfo
900 @figure{plotting26}
901 @end ifnotinfo
903 Veja @code{plot_options} para mais exemplos.
905 @end deffn
908 @deffn {Função}  make_transform (@var{vars}, @var{fx}, @var{fy}, @var{fz})
909 Produz uma função adequada para a função
910 transformação em plot3d. Usa-se conjuntamente com a opção
911 gráfica @code{transform_xy}.
912 @example
913 make_transform ([r, th, z], r*cos(th), r*sin(th), z)$
914 @end example
915 é uma transformação para coordenadas polares.
916 @end deffn
918 @deffn {Função}  set_plot_option (@var{opção})
919 Atribui valores às opções globais para impressão.
920 @var{opção} é especificada como uma lista de dois ou mais
921 elementos, na qual o primeiro elemeto é uma das palavras chave
922 dentro da lista @code{plot_options}.
924 O argumento dado a @code{set_plot_option} é avaliado e
925 @code{set_plot_option} retorna a lista completa @code{plot_options} 
926 (após modificar um desses elementos).
928 Veja também @code{plot_options}, @code{plot2d} e @code{plot3d}.
930 Exemplos:
932 Modifica a gralha (@code{grid}) e o intervalo de @code{x}.  Quando uma
933 palavra chave em @code{plot_options} tiver um valor
934 atribuído, colocar um apóstrofo evita que seja
935 avaliado.
937 @c ===beg===
938 @c set_plot_option ([grid, 30, 40]);
939 @c x: 42;
940 @c set_plot_option (['x, -100, 100]);
941 @c ===end===
943 @example
944 (%i1) set_plot_option ([grid, 30, 40]);
945 (%o1) [[x, - 1.755559702014E+305, 1.755559702014E+305], 
946 [y, - 1.755559702014E+305, 1.755559702014E+305], [t, - 3, 3], 
947 [grid, 30, 40], [transform_xy, false], [run_viewer, true], 
948 [plot_format, gnuplot], [gnuplot_term, default], 
949 [gnuplot_out_file, false], [nticks, 10], [adapt_depth, 10], 
950 [gnuplot_pm3d, false], [gnuplot_preamble, ], 
951 [gnuplot_curve_titles, [default]], 
952 [gnuplot_curve_styles, [with lines 3, with lines 1, 
953 with lines 2, with lines 5, with lines 4, with lines 6, 
954 with lines 7]], [gnuplot_default_term_command, ], 
955 [gnuplot_dumb_term_command, set term dumb 79 22], 
956 [gnuplot_ps_term_command, set size 1.5, 1.5;set term postscript #
957 eps enhanced color solid 24]]
958 (%i2) x: 42;
959 (%o2)                          42
960 (%i3) set_plot_option (['x, -100, 100]);
961 (%o3) [[x, - 100.0, 100.0], [y, - 1.755559702014E+305, 
962 1.755559702014E+305], [t, - 3, 3], [grid, 30, 40], 
963 [transform_xy, false], [run_viewer, true], 
964 [plot_format, gnuplot], [gnuplot_term, default], 
965 [gnuplot_out_file, false], [nticks, 10], [adapt_depth, 10], 
966 [gnuplot_pm3d, false], [gnuplot_preamble, ], 
967 [gnuplot_curve_titles, [default]], 
968 [gnuplot_curve_styles, [with lines 3, with lines 1, 
969 with lines 2, with lines 5, with lines 4, with lines 6, 
970 with lines 7]], [gnuplot_default_term_command, ], 
971 [gnuplot_dumb_term_command, set term dumb 79 22], 
972 [gnuplot_ps_term_command, set size 1.5, 1.5;set term postscript #
973 eps enhanced color solid 24]]
974 @end example
976 @end deffn