Update docs to match implementation of $build_and_dump_html_index
[maxima.git] / doc / info / pt_BR / plotdf.texi
blob02c228c42cc41f18a37dd0f85f0fa457a2583afb
1 @c Language: Brazilian Portuguese, Encoding: iso-8859-1
2 @c /plotdf.texi/1.7/Sat Jun  2 00:13:30 2007//
3 @menu
4 * Introdução a plotdf::
5 * Funções e Variáveis Definidas para plotdf::
6 @end menu
8 @node Introdução a plotdf, Funções e Variáveis Definidas para plotdf, plotdf, plotdf
9 @section Introdução a plotdf
11 A função @code{plotdf} cria um gráfico do campo de direção de uma
12 Equação Diferencial Ordinária (EDO) de primeira ordem ou um sistema de duas
13 EDO's de primeira ordem autônomas.
15 Uma vez que esse é um apcote adicional, com o objetivo de usá-lo você deve primeiramente
16 chamá-lo com @code{load("plotdf")}. Você também precisa do Xmaxima
17 instalado, mesmo que você execute o Maxima usando uma interface diferente.
19 Para montar um gráfico do campo de direção de uma EDO simples, a EDO deve ser escrita na
20 forma:
21 @ifnottex
22 @example
23        dy
24        -- = F(x,y)
25        dx
26 @end example
27 @end ifnottex
28 @tex
29 $${{dy}\over{dx}} = F(x,y)$$
30 @end tex
32 e a função @var{F} pode ser dada como um argumento para
33 @code{plotdf}. A variável independente está sempre identificada como @var{x},
34 e a variável dependente como @var{y}. Essas duas variáveis podem não
35 ter quaisquer valores atribuídos a elas.
37 Para montar o gráfico do campo de direção de um conjunto de duas EDO's autônomas, elas devem
38 ser escritas na forma
39 @ifnottex
40 @example
41        dx             dy
42        -- = G(x,y)    -- = F(x,y) 
43        dt             dt
44 @end example
45 @end ifnottex
46 @tex
47 $${{dx}\over{dt}} = G(x,y) \qquad {{dy}\over{dt}} = F(x,y)$$
48 @end tex
50 e o argumento para @code{plotdf} pode ser uma lista com as duas
51 funções @var{F} e @var{G}, em qualquer ordem.
53 Se somente uma EDO for fornecida, @code{plotdf} irá admitir implicitamente
54 @code{x=t}, e @code{G(x,y)=1}, transformando a equação não
55 autônoma em um sistema de duas equações autônomas.
57 @node Funções e Variáveis Definidas para plotdf,  , Introdução a plotdf, plotdf
58 @section Funções e Variáveis Definidas para plotdf
60 @deffn {Função} plotdf (@var{dydx},...opções...)
61 @deffnx {Função} plotdf (@code{[}@var{dxdt},@var{dydt}@code{]},...opções...)
63 Mostra um campo de direção em duas dimensões @var{x} e @var{y}.
65 @var{dydx}, @var{dxdt} e @var{dydt} são expressões que dependem
66 de @var{x} e @var{y}. Adicionalmente para essas duas variáveis, as
67 expressões podem também depender de um conjunto de parâmetros, com valores
68 numéricos fornecidos com os @code{parâmetros} opção (a sintaxe de opção é
69 fornecida abaixo), ou com um intervalo de valores permitidos especificados por meio de uma
70 opção @var{sliders}.
72 Muitas outras opções podem ser fornecidas dentro do comando, ou selecionadas no
73 menu. Curvas integrais podem ser obtidas por meio de um clique no gráfico, ou
74 com a opção @code{trajectory_at}. A direção da integração
75 pode ser controlada com a opção @code{direction}, que pode ter
76 valores de @emph{forward} (adiante), @emph{backward}(para trás) or @emph{both} (ambos). O número de
77 passos de integração é fornecido por meio de @code{nsteps} e o intervalo de tempo
78 entre eles é escolhido com a opção @code{tstep}. O método de Adams
79 Moulton é usado para a integração; é também possível alternar para um
80 método adaptativo de Runge-Kutta de quarta ordem.
82 @b{Menu da janela do gráfico:}
84 O menu na janela do gráfico tem as seguintes opções: @emph{Zoom}, irá
85 modificar o comportamento do mouse de forma que seja permitido a você aproximar uma
86 região do gráfico por meio de um clique nessa região como o botão esquerdo. Cada clique próximo a um
87 ponto do gráfico amplia esse gráfico, mantendo o contro no ponto onde você
88 clicou. Mantendo a tecla @key{Shift} pressioada enquanto clica, afasta para a
89 ampliação anterior. Para continuar calculando trajetórias quando você clica
90 sobre um ponto, selecione @emph{Integrate} a partir do menu.
92 A opção @emph{Config} no menu pode ser usada para mudar a(s) EDO(s) em
93 uso e para várias outras escolhas. Após as mudanças de configuração serem feitas,
94 a opção do menu @emph{Replot} estará selecionada, para ativar as novas
95 escolhas.  Se um par de coordenadas for fornecido em um campo
96 @emph{Trajectory at} na caixa de diálogo @emph{Config} do menu, e a
97 tecla @key{enter} fo pressionada, uma nova curva integral será mostrada,
98 adicionalmente com as outras já mostradas. Quando @emph{Replot} está selecionada, somente
99 a última curva integral fornecida será mostrada.
101 Mantendo o botão direito do mouse pressionado enquanto o cursor é movido, pode ser
102 usado para arrastar as laterais do gráfico para cima ou para baixo. Parâmetros
103 adicionais tais como o número de passos, o valor inicial de @var{t}
104 e os centros de x e y e raios, podem ser escolhidos no menu Config.
106 Uma cópia do gráfico pode ser impressa para uma impressora Postscript, ou gravada como um
107 arquivo postscript, usando a opção @emph{Save} do menu. Para alternar entre
108 imprimir e gravar para um arquivo Postscript, @emph{Print Options} pode ser
109 selecionada na janela de diálogo de @emph{Config}. Após as escolhas na
110 janela de diálogo @emph{Save} serem fornecidas, "Save'' deve ser selecionada no primeiro
111 menu, para cirar o arquivo ou imprimir o gráfico.
113 @b{Opções de gráfico:}
115 O comando @code{plotdf} pode incluir muitos comandos, cada comando é
116 uma lista de dois ou mais itens.  O primeiro item é o nome da opção,
117 e o restante compreende o valor ou valores atribuídos à opção.
119 As opçõesque são reconhecidas por @code{plotdf} são as seguintes:
121 @itemize @bullet
122 @item
123 @dfn{tstep} define o comprimento dos incrementos sobre a
124 variável independente @var{t}, usado para calcular uma curva integral. Se somente
125 uma expressão @var{dydx} for fornecida a @code{plotdf}, a variável
126 @var{x} será diretamente proporcional a @var{t}.
127 O valor padrão é 0.1.
129 @item
130 @dfn{nsteps} define o número de passos de comprimento @code{tstep}
131 que será usando para a variável independente, para calcular uma curva
132 integral.
133 O valor padrão é 100.
135 @item
136 @dfn{direction} define a direção da variável
137 independente que será seguida para calcular uma curva integral. Possíveis
138 valores são @code{forward}, para fazer a variável independente aumentar
139 @code{nsteps} vezes, com incrementos de @code{tstep}, @code{backward}, para
140 fazer a variável independente diminuir, ou @code{both} que irá conduzir a
141 um curva integral que amplia @code{nsteps} adiante, e @code{nsteps}
142 para trás. As palavras chave @code{right} e @code{left} podem ser usadas como
143 sinonimos para @code{forward} e @code{backward}.
144 O valor padrão é @code{both}.
146 @item
147 @dfn{tinitial} define o valor inicial da variável @var{t} usada
148 para calcular curva integral. Uma vez que equações diferenciais forem
149 autônomas, aquela esxolha irá aparecer somente no gráfico das curvas como
150 funções de @var{t}. 
151 O valor padrão é 0.
153 @item
154 @dfn{versus_t} é usado para criar uma segunda janela de gráfico, com um
155 gráfico de uma curva integral, como duas funções @var{x}, @var{y}, da
156 variável independente @var{t}. Se para @code{versus_t} for atribuído qualquer valor
157 diferente de 0, a segunda janela de gráfico será mostrada. A segunda
158 janela de gráfico inclui outro menu, semelhante ao menu da janela de gráfico
159 principal.
160 O valor padrão é 0.
162 @item
163 @dfn{trajectory_at} define as coordenadas @var{xinitial} e
164 @var{yinitial} para o ponto de partida de uma curva integral.
165 A opção está vazia por padrão.
167 @item
168 @dfn{parameters} define uma lista de parâmetros, e seus
169 valores numéricos, usados na definição das equações
170 diferenciais. O nome e valores dos parâmetros devem ser fornecidos em uma
171 seq@"{u}ência de caracteres com uma seq@"{u}ência de pares  @code{nome=valor} separados por vírgula.
173 @item
174 @dfn{sliders} define uma lista de parâmetros que será modificada
175 interativamente usando botões de deslizamento, e o intervalo de variação desses
176 parâmetros. Os nomes e intervalos dos parâmetros devem ser fornecidos in a
177 seq@"{u}ência de caracteres com uma seq@"{u}ência de elementos  @code{name=min:max} separados por vírgula.
179 @item
180 @dfn{xfun} define uma seq@"{u}ência de caracteres com uma seq@"{u}ência de funções separadas com
181 ponto e vírgula @var{x} para serem mostradas, no topo do campo de direção.
182 Essas funções irão ser passadas pelo Tcl e não pelo Maxima.
184 @item
185 @dfn{xradius} é metade do comprimento do intervalo dos valores que
186 irão ser mostrados na direção x.
187 O valor padrão é 10.
189 @item
190 @dfn{yradius} é metade do comprimento do intervalo dos valores que
191 irão ser mostrados na direção y.
192 O valor padrão é 10.
194 @item
195 @dfn{xcenter} é a coordenada x do ponto no centro do
196 gráfico.
197 O valor padrão é 0.
199 @item
200 @dfn{ycenter} é a coordenada y do ponto no centro do
201 gráfico.
202 O valor padrão é 0.
204 @item
205 @dfn{width} define a largura da janela do gráfico, em pixels.
206 O valor padrão é 500.
208 @item
209 @dfn{height} define a altura da janela do gráfico, em pixels.
210 O valor padrão é 500.
211 @end itemize
213 @b{Exemplos:}
215 NOTA: Dependendo da interface usada para executar o Maxima, as funções que
216 usam @code{openmath}, em particular @code{plotdf}, podem possivelmente disparar um erro se
217 erminarem com ponto e vírgula e não com um sinal de dólar. Para evitar
218 problemas, usamos um sinal de dólar em todos os exemplos abaixo.
219   
220 @itemize @bullet
221 @item
222 Para mostrar o campo de direção da equação diferencial @math{y' = exp(-x) + y} e a solução que vai em toda a extensão do intervalo @math{(2, -0.1)}:
223 @example
224 (%i1) load("plotdf")$
226 (%i2) plotdf(exp(-x)+y,[trajectory_at,2,-0.1]);
227 @end example
229 @ifnotinfo
230 @image{@value{figuresfolder}/plotdf1,8cm}
231 @end ifnotinfo
233 @item
234 Para obter o campo de direção para a equação @math{diff(y,x) = x - y^2} e a solução com condição inicial @math{y(-1) = 3}, podemos usar o comando:
235 @example
236 (%i3) plotdf(x-y^2,[xfun,"sqrt(x);-sqrt(x)"],
237           [trajectory_at,-1,3], [direction,forward],
238           [yradius,5],[xcenter,6]);
239 @end example
240 O gráfico também mostra a função @math{y = sqrt(x)}. 
242 @ifnotinfo
243 @image{@value{figuresfolder}/plotdf2,8cm}
244 @end ifnotinfo
246 @item
247 O seguinte exemplo mostra o campo de direção de um oscilador harmônico,
248 definido pelas duas equações @math{dx/dt = y} e @math{dy/dt = -k*x/m},
249 e a curva integral em todo o intervalo @math{(x,y) = (6,0)}, com um botão de deslizamento que
250 irá permitir a você mudar o valor de @math{m} interativamente (@math{k} está
251 fixado em 2):
252 @example
253 (%i4) plotdf([y,-k*x/m],[parameters,"m=2,k=2"],
254             [sliders,"m=1:5"], [trajectory_at,6,0]);
255 @end example
257 @ifnotinfo
258 @image{@value{figuresfolder}/plotdf3,8cm}
259 @end ifnotinfo
261 @item
262 Para montar o gráfico do campo de direção da equação de Duffing, @math{m*x''+c*x'+k*x+b*x^3 = 0}, introduzimos a variável @math{y=x'} e usamos:
263 @example
264 (%i5) plotdf([y,-(k*x + c*y + b*x^3)/m],
265               [parameters,"k=-1,m=1.0,c=0,b=1"],
266               [sliders,"k=-2:2,m=-1:1"],[tstep,0.1]);
267 @end example
269 @ifnotinfo
270 @image{@value{figuresfolder}/plotdf4,8cm}
271 @end ifnotinfo
273 @item
274 O campo de direção para um pêdulo amortecido, incluindo a
275 solução para as condições iniciais fornecidas, com um botão de deslizamento que
276 pode ser usado para mudar o valor da massa @math{m}, e com um gráfico das
277 duas  variáveis de estado como uma função do tempo:
279 @example
280 (%i6) plotdf([y,-g*sin(x)/l - b*y/m/l],
281          [parameters,"g=9.8,l=0.5,m=0.3,b=0.05"],
282          [trajectory_at,1.05,-9],[tstep,0.01],
283          [xradius,6],[yradius,14],
284          [xcenter,-4],[direction,forward],[nsteps,300],
285          [sliders,"m=0.1:1"], [versus_t,1]);
286 @end example
288 @ifnotinfo
289 @image{@value{figuresfolder}/plotdf5,8cm}@image{@value{figuresfolder}/plotdf6,8cm}
290 @end ifnotinfo
292 @end itemize
294 @end deffn