diff --git a/changelog b/changelog index 4d6ce3b..6b2c6be 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,4 @@ +20080304 tpd src/hyper/bookvol11 add additional hyperdoc page translations 20080303 tpd src/hyper/bookvol11 add additional hyperdoc page translations 20080302 tpd src/hyper/bookvol11 add additional hyperdoc page translations 20080301 tpd src/hyper/bookvol11 add additional hyperdoc page translations diff --git a/src/hyper/bookvol11.pamphlet b/src/hyper/bookvol11.pamphlet index 76c0e51..ec9dbe3 100644 --- a/src/hyper/bookvol11.pamphlet +++ b/src/hyper/bookvol11.pamphlet @@ -496,6 +496,7 @@ PAGES=rootpage.xhtml \ dbopcontent.xhtml \ dbopcontinuedfraction.xhtml \ dbopconvergents.xhtml \ + dbopconvert.xhtml \ dbopcopy.xhtml \ dbopcos.xhtml \ dbopcosh.xhtml \ @@ -503,8 +504,10 @@ PAGES=rootpage.xhtml \ dbopcoth.xhtml \ dbopcount.xhtml \ dbopcountableq.xhtml \ + dbopcreate3space.xhtml \ dbopcsc.xhtml \ dbopcsch.xhtml \ + dbopcurve.xhtml \ dbopcycleragits.xhtml \ dbopcyclotomic.xhtml \ dbopd.xhtml \ @@ -564,6 +567,9 @@ PAGES=rootpage.xhtml \ dboplog.xhtml \ dboploggamma.xhtml \ dbopmainvariable.xhtml \ + dbopmakegraphimage.xhtml \ + dbopmakeobject.xhtml \ + dbopmakeviewport3d.xhtml \ dbopmap.xhtml \ dbopmapbang.xhtml \ dbopmatrix.xhtml \ @@ -658,6 +664,7 @@ PAGES=rootpage.xhtml \ dbopsubmatrix.xhtml \ dbopsubmatrix.xhtml \ dbopsubmod.xhtml \ + dbopsurface.xhtml \ dbopsumofkthpowerdivisors.xhtml \ dboptan.xhtml \ dboptanh.xhtml \ @@ -779,8 +786,25 @@ PAGES=rootpage.xhtml \ linconversion.xhtml \ graphicspage.xhtml \ graphexamples.xhtml \ + graphexamplesassorted.xhtml \ + graphexamplesthreed.xhtml \ + graphexamplesonevariable.xhtml \ + graphexamplesparametric.xhtml \ + graphexamplespolar.xhtml \ + graphexamplesimplicit.xhtml \ + graphexampleslistofpoints.xhtml \ graph2d.xhtml \ + graph2dimplicit.xhtml \ + graph2dlistsofpoints.xhtml \ + graph2donevariable.xhtml \ + graph2dparametric.xhtml \ + graph2dpolar.xhtml \ graph3d.xhtml \ + graph3dobjects.xhtml \ + graph3dparametric.xhtml \ + graph3dsurfaces.xhtml \ + graph3dtubeplots.xhtml \ + graph3dtwovariables.xhtml \ graphviewports.xhtml \ algebrapage.xhtml \ algnumbertheory.xhtml \ @@ -8453,6 +8477,16 @@ dbopchebyshevu not implemented <> @ +\subsection{dbopconvert.xhtml} +<>= +<> + + +<> +dbopconvert not implemented +<> +@ + \subsection{dbopcopy.xhtml} <>= <> @@ -8523,6 +8557,15 @@ dbopchebyshevu not implemented <> @ +\subsection{dbopcreate3space.xhtml} +<>= +<> + + +<> +dbopcreate3space not implemented +<> +@ \subsection{dbopcsc.xhtml} <>= <> @@ -8543,6 +8586,15 @@ dbopchebyshevu not implemented <> @ +\subsection{dbopcurve.xhtml} +<>= +<> + + +<> +dbopcurve not implemented +<> +@ \subsection{dbopcycleragits.xhtml} <>= <> @@ -9135,6 +9187,35 @@ dboplaguerrel not implemented <> @ +\subsection{dbopmakegraphimage.xhtml} +<>= +<> + + +<> +dbopmakegraphimage not implemented +<> +@ + +\subsection{dbopmakeobject.xhtml} +<>= +<> + + +<> +dbopmakeobject not implemented +<> +@ + +\subsection{dbopmakeviewport3d.xhtml} +<>= +<> + + +<> +dbopmakeviewport3d not implemented +<> +@ \subsection{dbopmap.xhtml} <>= <> @@ -10065,6 +10146,15 @@ dbopround not implemented <> @ +\subsection{dbopsurface.xhtml} +<>= +<> + + +<> +dbopsurface not implemented +<> +@ \subsection{dbopsumofkthpowerdivisors.xhtml} <>= <> @@ -34751,7 +34841,486 @@ rule not built into the system you can use Axiom's <> - graphexamples not implemented +
Graphics Examples
+
+Here are some examples of Axiom graphics. + +<> +@ + +\subsection{graphexamplesassorted.xhtml} +<>= +<> + + + +<> +
Assorted Graphics Examples
+
+Function of two variables: z=f(x,y) +
    +
  • + +
    +
  • +
+Function of one variable: y=f(x) +
    +
  • + +
    +
  • +
+Plane parametric curve: x=f(t),y=g(t) +
    +
  • + +
    +
  • +
+Space parametric curve: x=f(t),y=g(t),z=h(t) +
    +
  • + +
    +
  • +
+Polar coordinates: r=f(θ) +
    +
  • + +
    +
  • +
+Implicit curves: p(x,y)=0 +
    +
  • + +
    +
  • +
+<> +@ + + +\subsection{graphexamplesimplicit.xhtml} +<>= +<> + + + +<> +
Implicit Curves
+
+A Conic Section (Hyperbola) +
    +
  • + +
    +
  • +
+An Elliptic Curve +
    +
  • + +
    +
  • +
+Cartesian Ovals +
    +
  • + +
    +
  • +
  • + +
    +
  • +
+Cassinian Ovals: two loops +
    +
  • + +
    +
  • +
  • + +
    +
  • +
+<> +@ + + +\subsection{graphexampleslistofpoints.xhtml} +<>= +<> + + + +<> +
Plotting Lists of Points
+
+
    +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
+The makeViewport2D command takes a +list of options as a parameter in this example. The string "Lines" is +designated as the viewport's title. +<> +@ + + +\subsection{graphexamplesonevariable.xhtml} +<>= +<> + + + +<> +
Functions of One Variable
+
+
    +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
+<> +@ + + +\subsection{graphexamplesparametric.xhtml} +<>= +<> + + + +<> +
Parametric Curves
+
+The Lemnicate of Bernoulli +
    +
  • + +
    +
  • +
+Lissajous curve +
    +
  • + +
    +
  • +
+A gnarly closed curve +
    +
  • + +
    +
  • +
+Another closed curve +
    +
  • + +
    +
  • +
+<> +@ + + +\subsection{graphexamplespolar.xhtml} +<>= +<> + + + +<> +
Polar Coordinates
+
+A circle +
    +
  • + +
    +
  • +
+A spiral +
    +
  • + +
    +
  • +
+A Petal Curve +
    +
  • + +
    +
  • +
+A Limacon +
    +
  • + +
    +
  • +
+<> +@ + +\subsection{graphexamplesthreed.xhtml} +<>= +<> + + + +<> +
Three Dimensional Graphics
+
+Plots of parametric surfaces defined by functions f(u,v), g(u,v) and h(u,v). + +Pear Surface +
    +
  • + +
    +
  • +
+ +Trigonometric Screw +
    +
  • + +
    +
  • +
+ +Etruscan Venus +
    +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
+ +Banchoff Klein Bottle +
    +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
+ <> @ @@ -34813,20 +35382,887 @@ lists of points in the plane. \subsection{graph2d.xhtml} <>= <> + + + +<> +
Two Dimensional Graphics
+
+ +<> +@ + +\subsection{graph2dimplicit.xhtml} +<>= +<> + + + +<> +
Implicit Curves
+
+Axiom has facilities for graphing a non-singular algebraic curve in a +rectangular region of the plane. An algebraic curve is a curve defined by +a polynomial equation p(x,y)=0. Non-singular means that the curve is +"smooth" in that it does not cross itself or come to a point (cusp). +Algebraically, this means that for any point (a,b) on the curve (i.e. +a point such that p(a,b)=0), the partial derivatives dp/dx(a,b) and +dp/dy(a,b) are not both zero. We require that the polynomial have rational +or integral coefficients. Here is a Cartesian ovals algebraic curve +example: +
    +
  • + +
    +
  • +
  • + +
    +
  • +
+A range must be declared for each variable specified in the algebraic +curve equation. +<> +@ + +\subsection{graph2dlistsofpoints.xhtml} +<>= +<> + + + +<> +
List of Points
+
+Axiom has the ability to create lists of points in a two dimensional +graphics viewport. This is done by utilizing the +GraphImage and +TwoDimensionalViewport +domain facilities. + +In this example, the makeGraphImage +takes a list of lists of points parameter, a list of colors for each point +in the graph, a list of colors for each line in the graph, and a list of +numbers which indicate the size of each point in the graph. The following +lines create list of lists of points which can be read be made into two +dimensional graph images. + +First we make a list of points +
    +
  • + +
    +
  • +
+Then we select pairs of these points which represent the endpoints of lines. +
    +
  • + +
    +
  • +
+Next we set the point color and size, and the line color for all components +of the graph. +
    +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
+Now the graph image is created and named according to the component +specifications indicated above. The +makeViewport2D command then +creates a two dimensional viewport for this graph according to the list +of options specified within the brackets. +
    +
  • + +
    +
  • +
+The makeViewport2D command takes a +list of options as a parameter. In this example the string "Lines" is +designated as the viewport's title. +
    +
  • + +
    +
  • +
+<> +@ + +\subsection{graph2donevariable.xhtml} +<>= +<> + + + +<> +
Functions of One Variable
+
+Here we wish to plot a function y=f(x) on the interval [a,b]. As an +example, let's take the function y=sin(tan(x))-tan(sin(x)) on the interval +[0,6]. Here is the simplest command that will do this: +
    +
  • + +
    +
  • +
+Notice that Axiom compiled a function before the graph was put on the +screen. The expression sin(tan(x))-tan(sin(x)) was converted to a compiled +function so that its value for various values of x could be computed +quickly and efficiently. Let's graph the same function on a different +interval and this time we'll give the graph a title. The title is a string, +which is an optional argument of the command 'draw'. +
    +
  • + +
    +
  • +
+Once again the expression sin(tan(x))-tan(sin(x)) was converted to a +compiled function before any points were computed. If you want to graph the +same function on a number of intervals, it's a good idea to write down a +function definition so that the function only has to be compiled once. +Here's an example: +
    +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
+Notice that our titles can be whatever we want, as long as they are +encloded by double quotes. However, a title which is too long to fit +within the viewport title window will be clipped. +<> +@ + +\subsection{graph2dparametric.xhtml} +<>= +<> + <> - graph2d not implemented +
Parametric Curves
+
+One way of producing interesting curves is by using parametric equations. +Let x=f(t) and y=g(t) for two functions f and g as the parameter t ranges +over an interval [a,b]. Here's an example: +
    +
  • + +
    +
  • +
+Here 0..2*%pi represents the interval over which the variable t ranges. +In the case of parametric curves, Axiom will compile two functions, one for +each of the functions f and g. You may also put a title on a graph. The +title may be an arbitrary string and is an optional argument to the +command 'draw'. For example: +
    +
  • + +
    +
  • +
+If you plan on plotting x=f(t), y=g(t) as t ranges over several intervals, +you may want to define functions f and g, so that they need not be +recompiled every time you create a new graph. Here's an example: +
    +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
+These examples show how the curve changes as the range of the parameter +t varies. +<> +@ + +\subsection{graph2dpolar.xhtml} +<>= +<> + + + +<> +
Polar Coordinates
+
+Graphs in polar coordinates are given by an equation r=f(θ) as +theta ranges over an interval. This is equivalent to the parametric curve +x=f(θ)*cos(θ),y=f(θ)*sin(θ) as θ +ranges over the same interval. You may create such curves using the +command 'draw', with the optional argument 'coordinates==polar'. +Here are some examples: +
    +
  • + +
    +
  • +
  • + +
    +
  • +
+You may also define your own functions, when you plan on plotting the same +curve as θ varies over several intervals. +
    +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
+For information on plotting graphs in other coordinate systems see the +pages for the CoordinateSystems +domain. <> @ + \subsection{graph3d.xhtml} <>= <> <> - graph3d not implemented +
Three Dimensional Graphing
+
+ +<> +@ + +\subsection{graph3dobjects.xhtml} +<>= +<> + + + +<> +
Building Three Dimensional Objects from Primatives
+
+Rather than using the draw and +makeObject commands, you can create +three-dimensional graphs from primitives. Operation +create3Space creates a three-space +object to which points, curves, and polygons can be added using the +operations from the ThreeSpace domain. +The resulting object can then be displayed in a viewport using +makeViewport3D. + +Create the empty three-space object space. +
    +
  • + +
    +
  • +
+Objects can be sent to this space using the operations exported by the +ThreeSpace domain. The following examples +place curves into space. + +Add these three curves to the space. +
    +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
+Create and display the viewport using +makeViewport3D. Options may also be +given but here are displayed as a list with values enclosed in parentheses. +
    +
  • + +
    +
  • +
+
+
+Cube Example +
+As a second example of the use of primitives, we generate a cube using +a polygon mesh. It is important to use a consistent orientation of the +polygons for correct generation of three-dimensional objects. + +Again start with an empty three-space object. +
    +
  • + +
    +
  • +
+For convenience, give the DoubleFloat +values +1 and -1 names. +
    +
  • + +
    +
  • +
  • + +
    +
  • +
+Define the vertices of the cube. +
    +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
+Add the faces of the cube as polygons to the space using a consistent +orientation. +
    +
  • + +
    +
  • +
+Create and display the viewport. +
    +
  • + +
    +
  • +
+<> +@ + +\subsection{graph3dparametric.xhtml} +<>= +<> + + + +<> +
Parametric Space Curves
+
+This page describes the plotting in three dimensional space of a curve +defined by the parametric equations x=f(t), y=g(t), z=h(t), where f,g, and +h are functions of the parameter t which ranges over a specified interval. +The basic draw command for this function utilizes either the uncompiled +functions or compiled functions format and uses the +curve command to specify the three +functions for the x, y, and z components of the curve. The general format +for uncompiled functions is: +
+   draw(curve(f(t),g(t),h(t)), t=a..b)
+
+where a..b is the segment defining the interval [a,b] over which the +parameter t ranges. In this case the functions are not compiled until +the draw command is executed. Here is an example: +
    +
  • + +
    +
  • +
+In the case of compiled functions, the functions are named and compiled +independently. This is useful if you intend to use the functions often, +or if the functions are long and complex. The following lines show +functions whose parameters are of the type SmallFloat. The functions +are compiled and stored by Axiom when entered. +
    +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
+Once the functions are compiled the draw command only needs the names of +the functions to execute. Here is a compiled functions example: +
    +
  • + +
    +
  • +
+Note that the parameter range does not take the variable name as in the +case of uncompiled functions. It is understood that the indicated range +applies to the parameter of the functions, which in this case is t. +<> +@ + +\subsection{graph3dsurfaces.xhtml} +<>= +<> + + + +<> +
Parametric Surfaces
+
+Graphing a surface defined by x=f(u,v), y=g(u,v), z=h(u,v). This page +describes plotting of surfaces defined by the parametric equations of two +variables, x=f(u,v), y=g(u,v), and z=h(u,v), for which the ranges of u and +v are explicitly defined. The basic draw command for this function utilizes +either the uncompiled function or compiled function format and uses the +surface command to specify the three +functions for the x, y, and z components of the surface. The general +format for uncompiled functions is: +
+    draw(surface(f(u,v),g(u,v),h(u,v)), u=a..b, v=c..d)
+
+where a..b and c..d are segments defining the intervals [a,b] and [c,d] +over which the parameters u and v span. In this case the functions are +not compiled until the draw command is executed. Here is an example of a +surface plotted using the parabolic cylindrical coordinate system option: +
    +
  • + +
    +
  • +
+In the case of compiled functions, the functions are named and compiled +independentlyh. This is useful if you intend to use the functions often, +or if the functions are long and complex. The following lines show functions +whose parameters are of the type SmallFloat. The functions are compiled and +stored by Axiom when entered. +
    +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
+Once the function is compiled the draw command only needs the names of +the functions to execute. Here is a compiled functions example plotted +using the toroidal coordinate system option: +
    +
  • + +
    +
  • +
+Note that the parameter ranges do not take the variable names as in the case +of uncompiled functions. The variables are entered in the order in which +they are defined in the function specification. In this case the first +range specifies the u-variable and the second range specifies the v-variable. +<> +@ + +\subsection{graph3dtubeplots.xhtml} +<>= +<> + + + +<> +
Parametric Tube Plots
+
+This page describes the plotting in three dimensional space of a tube +around a parametric space curve defined by the parametric equations +x=f(t), y=g(t), z=h(t), where f, g, and h are functions of the parameter t +which ranges over a specified interval. The basic draw command for this +function utilizes either the uncompiled functions or compiled functions +format and uses the curve command to specify +the three functions for the x, y, and z components of the curve. This uses +the same format as that for space curves except that it requires a +specification for the radius of the tube. If the radius of the tube is 0, +then the result is the space curve itself. The general format for +uncompiled functions is: +
+    draw(curve(f(t),g(t),h(t)),t=a..b,tubeRadius==r)
+
+where a..b is the segment defining the interval [a,b] over which the +parameter t ranges, and the tubeRadius is indicated by the variable r. +In this case the functions are not compiled until the draw command is +executed. Here is an example: +
    +
  • + +
    +
  • +
+In the case of compiled functions, the functions are named and compiled +independently. This is useful if you intend to use the functions often, +or if the functions are long and complex. The following lines show +functions whose parameters are of the type SmallFloat. The functions are +compiled and stored by Axiom when entered. +
    +
  • + +
    +
  • +
  • + +
    +
  • +
  • + +
    +
  • +
+Once the function is compiled the draw command only needs the names of +the functions to execute. Here is a compiled functions example of a trefoil +knot: +
    +
  • + +
    +
  • +
+Note that the parameter range does not take the variable name as in the +case of uncompiled functions. It is understood that the indicated range +applies to the parameter of the functions, which in this case is t. +Typically, the radius of the tube should be set between 0 and 1. A radius +of less than 0 results in it's positive counterpart and a radius of greater +than one cause self-intersection. +<> +@ + +\subsection{graph3dtwovariables.xhtml} +<>= +<> + + + +<> +
Functions of Two Variables
+
+This page describes the plotting of surfaces defined by an equation of +two variables, z=f(x,y), for which the ranges of x and y are explicitly +defined. The basic draw command for this function utilizes either the +uncompiled function or compiled function format. The general format for an +uncompiled function is: +
+   draw(f(x,y), x=a..b, y=c..d)
+
+where a..b and c..d are segments defining the intervals [a,b] and [c,d] +over which the variables x and y span. In this case, the function is not +compiled until the draw command is executed. Here is an example: +
    +
  • + +
    +
  • +
+In the case of a compiled function, the function is named and compiled +independently. This is useful if you intend to use a function often, or +if the function is long and complex. The following line shows a function +whose parameters are of the type SmallFloat. The function is compiled and +stored by Axiom when it is entered. +
    +
  • + +
    +
  • +
+Once the function is compiled the draw command only needs the name of the +function to execute. Here is a compiled function example: +
    +
  • + +
    +
  • +
+Note that the parameter ranges do not take the variable names as in the +case of uncompiled functions. The variables are entered in the order in +which they are defined in the function specificationl. In this case the +first range specifies the x-variable and the second range specifies the +y-variable. <> @ @@ -35189,10 +36625,171 @@ infinity; the step size is any positive integer. \subsection{linconversion.xhtml} <>= <> + <> - linconversion not implemented +
Conversion
+
+Conversion is the process of changing an object of one type into an +object of another type. The syntax for conversion is object::newType. +
+By default, 3 has the type +PositiveInteger +
    +
  • + +
    +
  • +
+We can change thisinto an object of type +Fraction Integer by using "::". +
    +
  • + +
    +
  • +
+A coercion is a special kind of conversion that Axiom is allowed to do +automatically when you enter an expression. Coercions are usually +somewhat safer than more general conversions. The Axiom library contains +operations called +coerce and +convert. Only the +coerce operations can be used by the +interpreter to change an object into an object of another type unless +you explicitly use a "::". + +By now you will be quite familiar with what types and modes look like. +It is useful to think of a type or mode as a pattern for what you want +the result to be. Let's start with a square matrix of polynomials with +complex rational number coefficients. +
    +
  • + +
    +
  • +
  • + +
    +
  • +
+We first want to interchange the Complex +and Fraction layers. We do the conversion +by doing the interchange in the type expression. +
    +
  • + +
    +
  • +
+Interchange the Polynomial and the +Fraction levels. +
    +
  • + +
    +
  • +
+Interchange the Polynomial and the +Complex levels. +
    +
  • + +
    +
  • +
+All the entries have changed types, although in comparing the last two +results only the entry in the lower left corner looks different. We did +all the intermediate steps to show you what Axiom can do. + +In fact, we could have combined all these into one conversion. +
    +
  • + +
    +
  • +
+ +There are times when Axiom is not able to do the conversion in one step. +You may need to break up the transformation into several conversions in +order to get an object of the desired type. + +We cannot move either the Fraction or +Complex above (or to the left of, +depending on how you look at it) +SquareMatrix because each of these +levels requires that its argument type have commutative multiplication, +whereas SquareMatrix does not. +(Fraction requires that its argument +belong to the category +IntegralDomain and +Complex requires that its argument belongs to +CommutativeRing. See the +Jenks section 2.1 for a brief +discussion of categories. The Integer level +did not move anywhere because it does not allow any arguments. We also did +not move the SquareMatrix part +anywhere, but we could have. Recall that m looks like this: +
    +
  • + +
    +
  • +
+If we want a polynomial with matrxi coefficients rather than a matrix with +polynomial entries, we can just do the conversion. +
    +
  • + +
    +
  • +
+We have not yet used modes for any conversions. Modes are a great +shorthand for indicating the type of the object you want. Instead of +using the long type expression in the last example we could have +simply said this: +
    +
  • + +
    +
  • +
+We can also indicate more structure if we want the entries of the matrices +to be fractions. +
    +
  • + +
    +
  • +
<> @