The dynamics package
====================

Package dynamics includes functions for 3D visualization, animations, graphical analysis of differential and difference equations and numerical solution of differential equations. The functions for differential equations are described in the section on Numerical, Numerical Methods and the functions to plot the Mandelbrot and Julia sets are described in the section on Plotting

All the functions in this package will be loaded automatically the first time they are used.

Categories: Dynamical systems Share packages Package dynamics

Graphical analysis of discrete dynamical systems
================================================

 -- Function: chaosgame ([[X1, Y1]...[XM, YM]], [X0, Y0], B, N, OPTIONS, ...);

     Implements the so-called chaos game: the initial point (X0, Y0) is plotted and then one of the M points [X1, Y1]...XM, YM] will be selected at random. The next point plotted will be on the segment from the previous point plotted to the point chosen randomly, at a distance from the random point which will be B times that segment's length. The procedure is repeated N times. The options are the same as for plot2d

     Example. A plot of Sierpinsky's triangle:

          (%i1) chaosgame([[0, 0], [1, 0], [0.5, sqrt(3)/2]], [0.1, 0.1], 1/2,
                           30000, [style, dots]);

     Categories: Package dynamics Plotting

 -- Function: evolution (F, Y0, N, ..., OPTIONS, ...);

     Draws N+1 points in a two-dimensional graph, where the horizontal coordinates of the points are the integers 0, 1, 2, ..., N, and the vertical coordinates are the corresponding values Y(N) of the sequence defined by the recurrence relation

                  y(n+1) = F(y(n))

     With initial value Y(0) equal to Y0. F must be an expression that depends only on one variable (in the example, it depend on Y, but any other variable can be used), Y0 must be a real number and N must be a positive integer. This function accepts the same options as plot2d

     Example.

          (%i1) evolution(cos(y), 2, 11);

     Categories: Package dynamics Plotting

 -- Function: evolution2d ([F, G], [U, V], [U0, Y0], N, OPTIONS, ...);

     Shows, in a two-dimensional plot, the first N+1 points in the sequence of points defined by the two-dimensional discrete dynamical system with recurrence relations

                  u(n+1) = F(u(n), v(n))    v(n+1) = G(u(n), v(n))

     With initial values U0 and V0. F and G must be two expressions that depend only on two variables, U and V, which must be named explicitly in a list. The options are the same as for plot2d

     Example. Evolution of a two-dimensional discrete dynamical system:

          (%i1) f: 0.6*x*(1+2*x)+0.8*y*(x-1)-y^2-0.9$
          (%i2) g: 0.1*x*(1-6*x+4*y)+0.1*y*(1+9*y)-0.4$
          (%i3) evolution2d([f,g], [x,y], [-0.5,0], 50000, [style,dots]);

     And an enlargement of a small region in that fractal:

          (%i9) evolution2d([f,g], [x,y], [-0.5,0], 300000, [x,-0.8,-0.6],
                            [y,-0.4,-0.2], [style, dots]);

     Categories: Package dynamics Plotting

 -- Function: ifs ([R1, ..., RM], [A1,..., AM], [[X1, Y1], ..., [XM, YM]], [X0, Y0], N, OPTIONS, ...);

     Implements the Iterated Function System method. This method is similar to the method described in the function chaosgame but instead of shrinking the segment from the current point to the randomly chosen point, the 2 components of that segment will be multiplied by the 2 by 2 matrix AI that corresponds to the point chosen randomly.

     The random choice of one of the M attractive points can be made with a non-uniform probability distribution defined by the weights R1,...,RM. Those weights are given in cumulative form; for instance if there are 3 points with probabilities 0.2, 0.5 and 0.3, the weights R1, R2 and R3 could be 2, 7 and 10. The options are the same as for plot2d

     Example. Barnsley's fern, obtained with 4 matrices and 4 points:

          (%i1) a1: matrix([0.85,0.04],[-0.04,0.85])$
          (%i2) a2: matrix([0.2,-0.26],[0.23,0.22])$
          (%i3) a3: matrix([-0.15,0.28],[0.26,0.24])$
          (%i4) a4: matrix([0,0],[0,0.16])$
          (%i5) p1: [0,1.6]$
          (%i6) p2: [0,1.6]$
          (%i7) p3: [0,0.44]$
          (%i8) p4: [0,0]$
          (%i9) w: [85,92,99,100]$
          (%i10) ifs(w, [a1,a2,a3,a4], [p1,p2,p3,p4], [5,0], 50000, [style,dots]);

     Categories: Package dynamics Plotting

 -- Function: orbits (F, Y0, N1, N2, [X, X0, XF, XSTEP], OPTIONS, ...);

     Draws the orbits diagram for a family of one-dimensional discrete dynamical systems, with one parameter X; that kind of diagram is used to study the bifurcations of an one-dimensional discrete system.

     The function F(Y) defines a sequence with a starting value of Y0, as in the case of the function evolution, but in this case that function will also depend on a parameter X that will take values in the interval from X0 to XF with increments of XSTEP. Each value used for the parameter X is shown on the horizontal axis. The vertical axis will show the N2 values of the sequence Y(N1+1),..., Y(N1+N2+1) obtained after letting the sequence evolve N1 iterations.  In addition to the options accepted by plot2d it accepts an option PIXELS that sets up the maximum number of different points that will be represented in the vertical direction.

     Example. Orbits diagram of the quadratic map, with a parameter A:

          (%i1) orbits(x^2+a, 0, 50, 200, [a, -2, 0.25], [style, dots]);

     To enlarge the region around the lower bifurcation near x = -1.25 use:

          (%i2) orbits(x^2+a, 0, 100, 400, [a,-1,-1.53], [x,-1.6,-0.8],
                       [nticks, 400], [style,dots]);

     Categories: Package dynamics Plotting

 -- Function: staircase (F, Y0, N,OPTIONS,...);

     Draws a staircase diagram for the sequence defined by the recurrence relation

                  y(n+1) = F(y(n))

     The interpretation and allowed values of the input parameters is the same as for the function evolution A staircase diagram consists of a plot of the function F(Y), together with the line G(Y) = Y. A vertical segment is drawn from the point (Y0, Y0) on that line until the point where it intersects the function F. From that point a horizontal segment is drawn until it reaches the point (Y1, Y1) on the line, and the procedure is repeated N times until the point (YN, YN) is reached. The options are the same as for plot2d

     Example.

          (%i1) staircase(cos(y), 1, 11, [y, 0, 1.2]);

     Categories: Package dynamics Plotting

Visualization with VTK
======================

Function scene creates 3D images and animations using the Visualization ToolKit (VTK) software. In order to use that function, Xmaxima and VTK should be installed in your system (including the TCL bindings of VTK, which in some system might come in a separate package).

 -- Function: scene (OBJECTS, ..., OPTIONS, ...);

     Accepts an empty list or a list of several scene_objects,objects and scene_options,options The program launches Xmaxima, which opens an external window representing the given objects in a 3-dimensional space and applying the options given. Each object must belong to one of the following 4 classes: sphere, cube, cylinder or cone (see scene_objects,Scene objects). Objects are identified by giving their name or by a list in which the first element is the class name and the following elements are options for that object.

     Example. A hexagonal pyramid with a blue background:

          (%i1) scene(cone, [background,"#9980e5"])$

     By holding down the left button of the mouse while it is moved on the graphics window, the camera can be rotated showing different views of the pyramid. The two plot options scene_elevation,elevation and scene_azimuth,azimuth can also be used to change the initial orientation of the viewing camera. The camera can be moved by holding the middle mouse button while moving it and holding the right-side mouse button while moving it up or down will zoom in or out.

     Each object option should be a list starting with the option name, followed by its value. The list of allowed options can be found in the object_options,Scene object's options section.

     Example. This will show a sphere falling to the ground and bouncing off without losing any energy. To start or pause the animation, press the play/pause button.

          (%i1) p: makelist ([0,0,2.1- 9.8*t^2/2], t, 0, 0.64, 0.01)$

          (%i2) p: append (p, reverse(p))$

          (%i3) ball: [sphere, [radius,0.1], [thetaresolution,20],
            [phiresolution,20], [position,0,0,2.1], [color,red],
            [animate,position,p]]$

          (%i4) ground: [cube, [xlength,2], [ylength,2], [zlength,0.2],
            [position,0,0,-0.1],[color,violet]]$

          (%i5) scene (ball, ground, restart)$

     The RESTART option was used to make the animation restart automatically every time the last point in the position list is reached. The accepted values for the colors are the same as for the color option of plot2d.

     Categories: Package dynamics Plotting

Scene options
-------------

 -- Scene option: azimuth [azimuth, ANGLE]
     Default value: 135

     The rotation of the camera on the horizontal (x, y) plane. ANGLE must be a real number; an angle of 0 means that the camera points in the direction of the y axis and the x axis will appear on the right.

     Categories: Package dynamics Plotting

 -- Scene option: background [background, COLOR]
     Default value: black

     The color of the graphics window's background. It accepts color names or hexadecimal red-green-blue strings (see the color option of plot2d).

     Categories: Package dynamics Plotting

 -- Scene option: elevation [elevation, ANGLE]
     Default value: 30

     The vertical rotation of the camera. The ANGLE must be a real number; an angle of 0 means that the camera points on the horizontal, and the default angle of 30 means that the camera is pointing 30 degrees down from the horizontal.

     Categories: Package dynamics Plotting

 -- Scene option: height [height, PIXELS]
     Default value: 500

     The height, in pixels, of the graphics window. PIXELS must be a positive integer number.

     Categories: Package dynamics Plotting

 -- Scene option: restart [restart, VALUE]
     Default value: false

     A true value means that animations will restart automatically when the end of the list is reached. Writing just ``restart'' is equivalent to [restart, TRUE].

     Categories: Package dynamics Plotting

 -- Scene option: tstep [tstep, TIME]
     Default value: 10

     The amount of time, in mili-seconds, between iterations among consecutive animation frames. TIME must be a real number.

     Categories: Package dynamics Plotting

 -- Scene option: width [width, PIXELS]
     Default value: 500

     The width, in pixels, of the graphics window. PIXELS must be a positive integer number.

     Categories: Package dynamics Plotting

 -- Scene option: windowname [windowtitle, NAME]
     Default value: .scene

     NAME must be a string that can be used as the name of the Tk window created by Xmaxima for the scene graphics. The default value .scene implies that a new top level window will be created.

     Categories: Package dynamics Plotting

 -- Scene option: windowtitle [windowtitle, NAME]
     Default value: Xmaxima: scene

     NAME must be a string that will be written in the title of the window created by scene.

     Categories: Package dynamics Plotting

Scene objects
-------------

 -- Scene object: cone [cone, OPTIONS]

     Creates a regular pyramid with height equal to 1 and a hexagonal base with vertices 0.5 units away from the axis. Options object_height,height and object_radius,radius can be used to change those defaults and option object_resolution, resolution can be used to change the number of edges of the base; higher values will make it look like a cone. By default, the axis will be along the x axis, the middle point of the axis will be at the origin and the vertex on the positive side of the x axis; use options object_orientation,orientation and object_center,center to change those defaults.

     Example. This shows a pyramid that starts rotating around the z axis when the play button is pressed.

          (%i1) scene([cone, [orientation,0,30,0], [tstep,100],
             [animate,orientation,makelist([0,30,i],i,5,360,5)]], restart)$

     Categories: Package dynamics Plotting

 -- Scene object: cube [cube, OPTIONS]

     A cube with edges of 1 unit and faces parallel to the xy, xz and yz planes. The lengths of the three edges can be changed with options object_xlength,xlength, object_ylength,ylength and object_zlength,zlength, turning it into a rectangular box and the faces can be rotated with option object_orientation,orientation

     Categories: Package dynamics Plotting

 -- Scene object: cylinder [cylinder, OPTIONS]

     Creates a regular prism with height equal to 1 and a hexagonal base with vertices 0.5 units away from the axis. Options object_height,height and object_radius,radius can be used to change those defaults and option object_resolution, resolution can be used to change the number of edges of the base; higher values will make it look like a cylinder. The default height can be changed with the option object_height,height By default, the axis will be along the x axis and the middle point of the axis will be at the origin; use options object_orientation,orientation and object_center,center to change those defaults.

     Categories: Package dynamics Plotting

 -- Scene object: sphere [sphere, OPTIONS]

     A sphere with default radius of 0.5 units and center at the origin.

     Categories: Package dynamics Plotting

Scene object's options
----------------------

 -- Object option: animation [animation, PROPERTY, POSITIONS]

     PROPERTY should be one of the following 4 object's properties: object_origin,origin object_scale,scale object_position,position or object_orientation,orientation and POSITIONS should be a list of points. When the play button is pressed, the object property will be changed sequentially through all the values in the list, at intervals of time given by the option scene_tstep,tstep The rewind button can be used to point at the start of the sequence making the animation restart after the play button is pressed again.

     See also object_track,track

     Categories: Package dynamics Plotting

 -- Object option: capping [capping, NUMBER]
     Default value: 1

     In a cone or a cylinder, it defines whether the base (or bases) will be shown. A value of 1 for NUMBER makes the base visible and a value of 0 makes it invisible.

     Categories: Package dynamics Plotting

 -- Object option: center [center, POINT]
     Default value: [0, 0, 0]

     The coordinates of the object's geometric center, with respect to its object_position, position POINT can be a list with 3 real numbers, or 3 real numbers separated by commas. In a cylinder, cone or cube it will be at half its height and in a sphere at its center.

     Categories: Package dynamics Plotting

 -- Object option: color [color, COLORNAME]
     Default value: white

     The color of the object. It accepts color names or hexadecimal red-green-blue strings (see the color option of plot2d).

     Categories: Package dynamics Plotting

 -- Object option: endphi [endphi, ANGLE]
     Default value: 180

     In a sphere phi is the angle on the vertical plane that passes through the z axis, measured from the positive part of the z axis. ANGLE must be a number between 0 and 180 that sets the final value of phi at which the surface will end. A value smaller than 180 will eliminate a part of the sphere's surface.

     See also object_startphi,startphi and object_phiresolution,phiresolution

     Categories: Package dynamics Plotting

 -- Object option: endtheta [endtheta, ANGLE]
     Default value: 360

     In a sphere theta is the angle on the horizontal plane (longitude), measured from the positive part of the x axis. ANGLE must be a number between 0 and 360 that sets the final value of theta at which the surface will end. A value smaller than 360 will eliminate a part of the sphere's surface.

     See also object_starttheta,starttheta and object_thetaresolution,thetaresolution

     Categories: Package dynamics Plotting

 -- Object option: height [height, VALUE]
     Default value: 1

     VALUE must be a positive number which sets the height of a cone or a cylinder.

     Categories: Package dynamics Plotting

 -- Object option: linewidth [linewidth, VALUE]
     Default value: 1

     The width of the lines, when option object_wireframe,wireframe is used. VALUE must be a positive number.

     Categories: Package dynamics Plotting

 -- Object option: opacity [opacity, VALUE]
     Default value: 1

     VALUE must be a number between 0 and 1. The lower the number, the more transparent the object will become. The default value of 1 means a completely opaque object.

     Categories: Package dynamics Plotting

 -- Object option: orientation [orientation, ANGLES]
     Default value: [0, 0, 0]

     Three angles by which the object will be rotated with respect to the three axis. ANGLES can be a list with 3 real numbers, or 3 real numbers separated by commas. Example: [0, 0, 90] rotates the x axis of the object to the y axis of the reference frame.

     Categories: Package dynamics Plotting

 -- Object option: origin [origin, POINT]
     Default value: [0, 0, 0]

     The coordinates of the object's origin, with respect to which its other dimensions are defined. POINT can be a list with 3 real numbers, or 3 real numbers separated by commas.

     Categories: Package dynamics Plotting

 -- Object option: phiresolution [phiresolution, NUM]
     Default value:

     The number of sub-intervals into which the phi angle interval from object_startphi,startphi to object_endphi,endphi will be divided. NUM must be a positive integer.

     See also object_startphi,startphi and object_endphi,endphi

     Categories: Package dynamics Plotting

 -- Object option: points [points]

     Only the vertices of the triangulation used to render the surface will be shown. Example: [sphere, [points]]

     See also object_surface,surface and object_wireframe,wireframe

     Categories: Package dynamics Plotting

 -- Object option: pointsize [pointsize, VALUE]
     Default value: 1

     The size of the points, when option object_points,points is used. VALUE must be a positive number.

     Categories: Package dynamics Plotting

 -- Object option: position [position, POINT]
     Default value: [0, 0, 0]

     The coordinates of the object's position. POINT can be a list with 3 real numbers, or 3 real numbers separated by commas.

     Categories: Package dynamics Plotting

 -- Object option: radius [radius, VALUE]
     Default value: 0.5

     The radius or a sphere or the distance from the axis to the base's vertices in a cylinder or a cone. VALUE must be a positive number.

     Categories: Package dynamics Plotting

 -- Object option: resolution [resolution, NUMBER]
     Default value: 6

     NUMBER must be an integer greater than 2 that sets the number of edges in the base of a cone or a cylinder.

     Categories: Package dynamics Plotting

 -- Object option: scale [scale, FACTORS]
     Default value: [1, 1, 1]

     Three numbers by which the object will be scaled with respect to the three axis. FACTORS can be a list with 3 real numbers, or 3 real numbers separated by commas. Example: [2, 0.5, 1] enlarges the object to twice its size in the x direction, reduces the dimensions in the y direction to half and leaves the z dimensions unchanged.

     Categories: Package dynamics Plotting

 -- Object option: startphi [startphi, ANGLE]
     Default value: 0

     In a sphere phi is the angle on the vertical plane that passes through the z axis, measured from the positive part of the z axis. ANGLE must be a number between 0 and 180 that sets the initial value of phi at which the surface will start. A value bigger than 0 will eliminate a part of the sphere's surface.

     See also object_endphi,endphi and object_phiresolution,phiresolution

     Categories: Package dynamics Plotting

 -- Object option: starttheta [starttheta, ANGLE]
     Default value: 0

     In a sphere theta is the angle on the horizontal plane (longitude), measured from the positive part of the x axis. ANGLE must be a number between 0 and 360 that sets the initial value of theta at which the surface will start. A value bigger than 0 will eliminate a part of the sphere's surface.

     See also object_endtheta,endtheta and object_thetaresolution,thetaresolution

     Categories: Package dynamics Plotting

 -- Object option: surface [surface]

     The surfaces of the object will be rendered and the lines and points of the triangulation used to build the surface will not be shown. This is the default behavior, which can be changed using either the option object_points,points or object_wireframe,wireframe

     Categories: Package dynamics Plotting

 -- Object option: thetaresolution [thetaresolution, NUM]
     Default value:

     The number of sub-intervals into which the theta angle interval from object_starttheta,starttheta to object_endtheta,endtheta will be divided. NUM must be a positive integer.

     See also object_starttheta,starttheta and object_endtheta,endtheta

     Categories: Package dynamics Plotting

 -- Object option: track [track, POSITIONS]

     POSITIONS should be a list of points. When the play button is pressed, the object position will be changed sequentially through all the points in the list, at intervals of time given by the option scene_tstep,tstep leaving behind a track of the object's trajectory. The rewind button can be used to point at the start of the sequence making the animation restart after the play button is pressed again.

     Example. This will show the trajectory of a ball thrown with speed of 5 m/s, at an angle of 45 degrees, when the air resistance can be neglected:

          (%i1) p: makelist ([0,4*t,4*t- 9.8*t^2/2], t, 0, 0.82, 0.01)$

          (%i2) ball: [sphere, [radius,0.1], [color,red], [track,p]]$

          (%i3) ground: [cube, [xlength,2], [ylength,4], [zlength,0.2],
                [position,0,1.5,-0.2],[color,green]]$

          (%i4) scene (ball, ground)$

     See also object_animation,animation

     Categories: Package dynamics Plotting

 -- Object option: xlength [xlength, LENGTH]
     Default value: 1

     The height of a cube in the x direction. LENGTH must be a positive number. See also object_ylength,ylength and object_zlength,zlength

     Categories: Package dynamics Plotting

 -- Object option: ylength [ylength, LENGTH]
     Default value: 1

     The height of a cube in the y direction. LENGTH must be a positive number. See also object_xlength,xlength and object_zlength,zlength

     Categories: Package dynamics Plotting

 -- Object option: zlength [zlength, LENGTH]
     Default value: 1

     The height of a cube in z the direction. LENGTH must be a positive number.  See also object_xlength,xlength and object_ylength,ylength

     Categories: Package dynamics Plotting

 -- Object option: wireframe [wireframe]

     Only the edges of the triangulation used to render the surface will be shown. Example: [cube, [wireframe]]

     See also object_surface,surface and object_points,points

     Categories: Package dynamics Plotting