1 @c Language: Brazilian Portuguese, Encoding: iso-8859-1
2 @c /plotdf.texi/1.7/Sat Jun 2 00:13:30 2007//
4 * Introdução a plotdf::
5 * Funções e Variáveis Definidas para plotdf::
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
29 $${{dy}\over{dx}} = F(x,y)$$
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
42 -- = G(x,y) -- = F(x,y)
47 $${{dx}\over{dt}} = G(x,y) \qquad {{dy}\over{dt}} = F(x,y)$$
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
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:
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.
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
133 O valor padrão é 100.
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}.
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
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
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.
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.
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.
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.
185 @dfn{xradius} é metade do comprimento do intervalo dos valores que
186 irão ser mostrados na direção x.
190 @dfn{yradius} é metade do comprimento do intervalo dos valores que
191 irão ser mostrados na direção y.
195 @dfn{xcenter} é a coordenada x do ponto no centro do
200 @dfn{ycenter} é a coordenada y do ponto no centro do
205 @dfn{width} define a largura da janela do gráfico, em pixels.
206 O valor padrão é 500.
209 @dfn{height} define a altura da janela do gráfico, em pixels.
210 O valor padrão é 500.
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.
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)}:
224 (%i1) load("plotdf")$
226 (%i2) plotdf(exp(-x)+y,[trajectory_at,2,-0.1]);
230 @image{@value{figuresfolder}/plotdf1,8cm}
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:
236 (%i3) plotdf(x-y^2,[xfun,"sqrt(x);-sqrt(x)"],
237 [trajectory_at,-1,3], [direction,forward],
238 [yradius,5],[xcenter,6]);
240 O gráfico também mostra a função @math{y = sqrt(x)}.
243 @image{@value{figuresfolder}/plotdf2,8cm}
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á
253 (%i4) plotdf([y,-k*x/m],[parameters,"m=2,k=2"],
254 [sliders,"m=1:5"], [trajectory_at,6,0]);
258 @image{@value{figuresfolder}/plotdf3,8cm}
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:
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]);
270 @image{@value{figuresfolder}/plotdf4,8cm}
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:
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]);
289 @image{@value{figuresfolder}/plotdf5,8cm}@image{@value{figuresfolder}/plotdf6,8cm}