Rename specvar integer-info to *integer-info*
[maxima.git] / doc / info / es / plotdf.texi
blob80f8ebdeb960feeb01debfd195106bf1ac7cf046
1 @c English version: 2011-03-23
2 @menu
3 * Introducción a plotdf::
4 * Funciones y variables para plotdf::
5 @end menu
7 @node Introducción a plotdf, Funciones y variables para plotdf, plotdf, plotdf
8 @section Introducción a plotdf
10 La función @code{plotdf} crea un gráfico del campo de direcciones para una
11 Ecuación Diferencial Ordinaria (EDO) de primer orden, o para un sistema de
12 dos EDO's autónomas, de primer orden.
14 Como se trata de un paquete adicional, para poder usarlo debe cargarlo
15 primero con el comando @code{load("plotdf")}. También es necesario que
16 Xmaxima esté instalado, a pesar de que ejecute Maxima desde otra
17 interface diferente.
19 Para dibujar el campo de direcciones de una única EDO, esa ecuación
20 deberá escribirse en la forma siguiente:
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 y la función @var{F} será dada como argumento para el comando
33 @code{plotdf}. La variable independiente tiene que ser siempre @var{x} y la
34 variable dependiente @var{y}. A esas dos variables no podrá estar asociado
35 ningún valor numérico.
37 Para dibujar el campo de direcciones de un sistema autónomo de dos EDO's,
38 Las dos ecuaciones deben ser escritas en la forma siguiente
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 y el argumento para el comando @code{plotdf} será una lista con dos
51 expresiones para las funciones @var{F} y @var{G}.
53 Cuando se trabaja con una única ecuación, @code{plotdf} asume
54 implícitamente que @code{x=t} y @code{G(x,y)=1}, transformando la
55 ecuación en un sistema autónomo con dos ecuaciones.
57 @node Funciones y variables para plotdf,  , Introducción a plotdf, plotdf
58 @section Funciones y variables para plotdf
60 @deffn {Function} plotdf (@var{dydx},...opciones...)
61 @deffnx {Function} plotdf (@code{[}@var{dxdt},@var{dydt}@code{]},...opciones...)
63 Dibuja un campo de direcciones en dos dimensiones @var{x} y @var{y}.
65 @var{dydx}, @var{dxdt} y @var{dydt} son expresiones que dependen de @var{x} y
66 @var{y}. Además de esas dos variables, las dos expresiones pueden depender de
67 un conjunto de parámetros, con valores numéricos que son dados por medio
68 de la opción @code{parameters} (la sintaxis de esa opción se explica mas al
69 frente), o con un rango de posibles valores definidos con la opción
70 @var{sliders}.
72 Varias otras opciones se pueden incluir dentro del comando, o
73 seleccionadas en el menú.  Haciendo click en un punto del gráfico se
74 puede hacer que sea dibujada la curva integral que pasa por ese punto;
75 lo mismo puede ser hecho dando las coordenadas del punto con la opción
76 @code{trajectory_at} dentro del comando plotdf. La dirección de
77 integración se puede controlar con la opción @code{direction}, que
78 acepta valores de @emph{forward}, @emph{backward} ou @emph{both}. El
79 número de pasos realizado en la integración numérica se controla
80 con la opción @code{nsteps} y el incremento del tiempo en cada paso
81 con la opción @code{tstep}. Se usa el método de Adams Moulton para
82 hacer la integración numérica; también es posible cambiar para el
83 método de Runge-Kutta de cuarto orden con ajuste de pasos.
85 @b{Menú de la ventana del gráfico:}
87 El menú de la ventana gráfica dispone de las siguientes opciones:
88 @emph{Zoom}, que permite cambiar el comportamiento del ratón, de
89 manera que hará posible el hacer zoom en la región del gráfico
90 haciendo clic con el botón izquierdo. Cada clic agranda la imagen
91 manteniendo como centro de la misma el punto sobre el cual se ha hecho
92 clic. Manteniendo pulsada la tecla @key{Shift} mientras se hace clic,
93 retrocede al tamaño anterior. Para reanudar el cálculo de las
94 trayectorias cuando se hace clic, seleccine la opción @emph{Integrate}
95 del menú.
97 La opción @emph{Config} del menú se puede utilizar para cambiar
98 la(s) EDO(S) y algunos otros ajustes. Después de hacer los cambios, se
99 debe utilizar la opción @emph{Replot} para activar los nuevos ajustes.
100 Si en el campo @emph{Trajectory at} del menú de diálogo de
101 @emph{Config} se introducen un par de coordenadas y luego se pulsa la
102 tecla @key{retorno}, se mostrará una nueva curva integral, además de
103 las ya dibujadas.  Si se selecciona la opción @emph{Replot}, sólo se
104 mostrará la última curva integral seleccionada.
106 Manteniendo pulsado el botón derecho del ratón mientras se mueve el
107 cursor, se puede arrastrar el gráfico horizontal y verticalmente.
108 Otros parámetros, como pueden ser el número de pasos, el valor
109 inicial de @var{t}, las coordenadas del centro y el radio, pueden
110 cambiarse en el submenú de la opción @emph{Config}.
112 Con la opción @emph{Save}, se puede obtener una copia del gráfico en
113 una impresora Postscript o guardarlo en un fichero Postscript. Para
114 optar entre la impresión o guardar en fichero, se debe seleccionar
115 @emph{Print Options} en la ventana de diálogo de @emph{Config}. Una
116 vez cubiertos los campos de la ventana de diálogo de @emph{Save},
117 será necesario seleccionar la opción @emph{Save} del primer menú
118 para crear el fichero o imprimir el gráfico.
120 @b{Opciones gráficas:}
122 La función @code{plotdf} admite varias opciones, cada una de las cuales
123 es una lista de dos o más elementos. El primer elemento es el nombre de
124 la opción, y el resto está formado por el valor o valores asignados
125 a dicha opción.
127 La función @code{plotdf} reconoce las siguientes opciones:
129 @itemize @bullet
130 @item
131 @dfn{tstep} establece la amplitud de los incrementos en la
132 variable independiente @var{t}, utilizados para calcular la curva
133 integral. Si se aporta sólo una expresión @var{dydx}, la variable
134 @var{x} será directamente proporcional a @var{t}.
135 El valor por defecto es 0.1.
137 @item
138 @dfn{nsteps} establece el número de pasos de longitud
139 @code{tstep} que se utilizarán en la variable independiente para
140 calcular la curva integral.
141 El valor por defecto es 100.
143 @item
144 @dfn{direction} establece la dirección de la variable
145 independiente que será seguida para calcular una curva integral.
146 Valores posibles son: @code{forward}, para hacer que la variable
147 independiente aumente @code{nsteps} veces, con incrementos @code{tstep};
148 @code{backward}, para hacer que la variable independiente
149 disminuya; @code{both}, para extender la curva integral @code{nsteps}
150 pasos hacia adelante y @code{nsteps} pasos hacia atrás.
151 Las palabras @code{right} y @code{left} se pueden utilizar como
152 sinónimos de @code{forward} y @code{backward}.
153 El valor por defecto es @code{both}.
155 @item
156 @dfn{tinitial} establece el valor inicial de la variable
157 @var{t} utilizado para calcular curvas integrales. Puesto que las
158 ecuaciones diferenciales son autónomas, esta opción sólo
159 aparecerá en los gráficos de las curvas como funciones de @var{t}.
160 El valor por defecto es 0.
162 @item
163 @dfn{versus_t} se utiliza para crear una segunda ventana
164 gráfica, con el gráfico de una curva integral, como dos funciones
165 @var{x}, @var{y}, de variable independiente @var{t}. Si se le da a
166 @code{versus_t} cualquier valor diferente de 0, se mostrará la
167 segunda ventana gráfica, la cual incluye otro menú, similar
168 al de la ventana principal.
169 El valor por defecto es 0.
171 @item
172 @dfn{trajectory_at} establece las coordenadas @var{xinitial}
173 y @var{yinitial} para el extremo inicial de la curva integral.
174 No tiene asignado valor por defecto.
176 @item
177 @dfn{parameters} establece una lista de parámetros,
178 junto con sus valores numéricos, que son utilizados en la
179 definición de la ecuación diferencial. Los nombres de los
180 parámetros y sus valores deben escribirse en formato de cadena
181 de caracteres como una secuencia de pares @code{nombre=valor}
182 separados por comas.
184 @item
185 @dfn{sliders} establece una lista de parámetros que
186 se cambiarán interactivamente utilizando barras de deslizamiento,
187 así como los rangos de variación de dichos parámetros.
188 Los nombres de los parámetros y sus rangos deben escribirse en formato
189 de cadena de caracteres como una secuencia de pares @code{nombre=min:max}
190 separados por comas.
192 @item
193 @dfn{xfun} establece una cadena de caracteres con funciones
194 de @var{x} separadas por puntos y comas para ser representadas por
195 encima del campo de direcciones. Estas funciones serán interpretadas
196 por Tcl, no por Maxima.
198 @item
199 @dfn{xradius} es la mitad de la longitud del rango de valores
200 a representar en la dirección x.
201 El valor por defecto es 10.
203 @item
204 @dfn{yradius} es la mitad de la longitud del rango de valores
205 a representar en la dirección y.
206 El valor por defecto es 10.
208 @item
209 @dfn{xcenter} es la coordenada x del punto situado en el centro
210 del gráfico.
211 El valor por defecto es 0.
213 @item
214 @dfn{ycenter} es la coordenada y del punto situado en el centro
215 del gráfico.
216 El valor por defecto es 0.
218 @item
219 @dfn{width} establece el ancho de la ventana gráfica en
220 píxeles.
221 El valor por defecto es 500.
223 @item
224 @dfn{height} establece la altura de la ventana gráfica en
225 píxeles.
226 El valor por defecto es 500.
228 @end itemize
230 @b{Ejemplos:}
232 NOTA: Dependiendo de la interface que se use para Maxima, las funciones
233 que usan @code{openmath}, incluida @code{plotdf}, pueden desencadenar un
234 fallo si terminan en punto y coma, en vez del símbolo de
235 dólar. Para evitar problemas, se usará el símbolo de
236 dólar en todos ejemplos.
238 @itemize @bullet
239 @item
240 Para mostrar el campo de direcciones de la ecuación diferencial
241 @math{y' = exp(-x) + y} y la solución que pasa por @math{(2, -0.1)}:
242 @example
243 (%i1) load("plotdf")$
245 (%i2) plotdf(exp(-x)+y,[trajectory_at,2,-0.1]);
246 @end example
248 @ifnotinfo
249 @image{@value{figuresfolder}/plotdf1,8cm}
250 @end ifnotinfo
252 @item
253 Para mostrar el campo de direcciones de la ecuación 
254 @math{diff(y,x) = x - y^2} y la solución de condición
255 inicial @math{y(-1) = 3}, se puede utilizar la sentencia:
256 @example
257 (%i3) plotdf(x-y^2,[xfun,"sqrt(x);-sqrt(x)"],
258           [trajectory_at,-1,3], [direction,forward],
259           [yradius,5],[xcenter,6]);
260 @end example
261 El gráfico también muestra la función @math{y = sqrt(x)}.
263 @ifnotinfo
264 @image{@value{figuresfolder}/plotdf2,8cm}
265 @end ifnotinfo
267 @item
268 El siguiente ejemplo muestra el campo de direcciones de un oscilador
269 armónico, definido por las ecuaciones @math{dx/dt = y} y
270 @math{dy/dt = -k*x/m}, y la curva integral que pasa por
271 @math{(x,y) = (6,0)}, con una barra de deslizamiento que 
272 permitirá cambiar el valor de @math{m} interactivamente
273 (@math{k} permanece fijo a 2):
274 @example
275 (%i4) plotdf([y,-k*x/m],[parameters,"m=2,k=2"],
276             [sliders,"m=1:5"], [trajectory_at,6,0]);
277 @end example
279 @ifnotinfo
280 @image{@value{figuresfolder}/plotdf3,8cm}
281 @end ifnotinfo
283 @item
284 Para representar el campo de direcciones de la ecuación de
285 Duffing, @math{m*x''+c*x'+k*x+b*x^3 = 0}, se introduce la
286 variable @math{y=x'} y se hace:
287 @example
288 (%i5) plotdf([y,-(k*x + c*y + b*x^3)/m],
289               [parameters,"k=-1,m=1.0,c=0,b=1"],
290               [sliders,"k=-2:2,m=-1:1"],[tstep,0.1]);
291 @end example
293 @ifnotinfo
294 @image{@value{figuresfolder}/plotdf4,8cm}
295 @end ifnotinfo
297 @item
298 El campo de direcciones de un péndulo amortiguado,
299 incluyendo la solución para condiciones iniciales dadas,
300 con una barra de deslizamiento que se puede utilizar para
301 cambiar el valor de la masa, @math{m}, y con el gráfico
302 de las dos variables de estado como funciones del tiempo:
304 @example
305 (%i6) plotdf([y,-g*sin(x)/l - b*y/m/l],
306          [parameters,"g=9.8,l=0.5,m=0.3,b=0.05"],
307          [trajectory_at,1.05,-9],[tstep,0.01],
308          [xradius,6],[yradius,14],
309          [xcenter,-4],[direction,forward],[nsteps,300],
310          [sliders,"m=0.1:1"], [versus_t,1]);
311 @end example
313 @ifnotinfo
314 @image{@value{figuresfolder}/plotdf5,8cm}@image{@value{figuresfolder}/figures/plotdf6,8cm}
315 @end ifnotinfo
317 @end itemize
319 @end deffn