Winplot Mapping Help

This window provides a way to visualize the graph of a function that maps a 2-dimensional space to another 2-dimensional space. Side-by-side synchronized graphs in the “domain” and “range” planes give some insight into what is customarily viewed as a 4-dimensional graphing problem.

The range window cannot be closed. It disappears when the domain window is closed.

The optional “label” can be used as a prefix; it can also be the entire overlay. The label can have evaluated sections; the program has been taught to treat the character “~” as a separator between the two modes of interpretation, where the first section is always unevaluated. File Menu

Map Menu

Equation Menu

View Menu

Buttons Menu

One Menu

Two Menu

Animation Menu

Miscellaneous Menu

Real Function Library

Complex Function Library


File Menu

When you Open an old file, it should appear as it was when you Saved it. Supplementary selections such as background color, axis labels, and text overlays should be preserved.

Before you click Print, you might want to use the Format dialog box to position the printed image on the page. The offsets are from the left and top edges, respectively, and are measured in centimeters. The width of the image is also specified in centimeters. The height of the image is determined by the width (and the shape of the window). Check “frame” if you want a single-line box drawn around the picture. Check “color” only if you are sending the file to a color printer; otherwise the printer may try to dither the colors on the screen (text, curves, etc), and this usually looks splotchy.

Click Select printer to change printers while the program is running. Notice that you can print in “landscape” format.


Click Copy to Clipboard if you want to paste the current drawing into another Windows application (but see the EPS item below).

Because printer resolution is so much higher than screen resolution, Winplot curves and surfaces that have been pasted via the clipboard into other Windows applications may print with a jagged appearance. One way of increasing the printed quality (at the expense of a larger file size) is to open the Misc|Settings dialog box and check “High resolution” before copying. Check the item “With background” if you want to include the background color.

The drawing can also be copied as a Bitmap. Pasting such an image could increase the size of the receiving document significantly.

For compatibility with destination documents, click Image size to specify the dimensions of the displayed drawing. The proposed units are centimeters, but appending an @ to either value (as in 560@) requests that both values be interpreted as pixel counts. When printing or copying the screen, proportions are respected, so there is no harm done in printing a large window to a small image. The main difficulty is text, which is defined by its point size. This is not scaled by the printing process, so it can look disproportionately large or small, unless you match the window size to the printed size. Similar remarks apply to pasting images into documents using the clipboard.

The Export graphics submenu presents five standard file formats, which enable the current drawing to be inserted into another document. The first three produce plain (human readable) text, which can be inspected and edited with any text editor.

Encapsulated PostScript files (EPS) are platform-independent. This is probably the best way to insert a Winplot diagram into a document.

PiCTeX files are for inclusion in TeX and LaTeX documents. You are asked for a filename, then the width of the image and the “box number”. To view such a figure, use your TeX compiler to paste the file into a document.

SVG files are for browser display. The acronym SVG stands for “scalable vector graphics”, which is an XML graphics file format recommended by The World Wide Web Consortium. Click here to download the Adobe SVG Viewer.

The Enhanced metafile format (EMF) is the clipboard format used by the Copy command.

Multiple-page output is available. If you provide a page count that is greater than 1, you will also have to provide an animation parameter, which is used to index the pages (one file is produced for each page). The indices are inserted into the filenames, and a supplementary text file that lists the filenames is also created.


A Password can be added before saving a file. This allows you to control what other users can do with your file. The item Author is enabled only if the creator of a password-protected file has included contact information for users to see.


Map Menu

Click New to define (and activate) a new mapping.

In a z-plane mapping window, the mapping takes the form z ==> U(z); otherwise, it takes the form (x, y) ==> (U(x, y),V(x, y)).

The new mapping appears in the Inventory, along with previously defined mappings. Any mapping can be edited by clicking “edit” in the Inventory box, and any mapping can be made the active mapping by selecting it and clicking the “active” button.

When a mapping is newly defined or activated, the program automatically adjusts the window in the range plane so that the image of the domain rectangle fills it.

Open the Grid dialog box to specify a rectangular domain in the xy-plane, subdivided into smaller rectangles. Different colors can be assigned to the rulings in each direction, and either system can be hidden by unchecking the indicated box.

Click Table to see the coordinates of the image points when the active mapping is applied to the grid.


Equation Menu

There are several different input formats.

In each dialog box, the pen thickness is changed by typing a small positive integer into the “width” box. To make this thickness the default thickness for subsequent examples, append “@” as a suffix. The graph can be drawn without connecting adjacent calculated points; to see this, append “?” as a suffix to the thickness. The dotted appearance of course depends on other factors, such as plotting density and the slope of the curve.

The pen color is selected by clicking the “color” button. The current selection shows at the top of the color-selection window. To change the selection, click one of the sixty colored rectangles that appear beneath it.

Functional notation requires parentheses. For example, you must type sin(x) instead of sin x.

The Explicit dialog box accepts any standard expression that defines y as a function of x. If you want to restrict the domain of the graph, type the low and high values of x into the edit boxes, and check “lock interval” to confirm your request. This overrides the default interval, which is the full width of the screen. If you enter simple formulas for the low and high values of x, the program will apply them. You can also add circles or arrows to the ends of a restricted-interval graph. If you check “make periodic”, the program will assume that the function is periodic outside the displayed interval. Increasing the plotting density will slow down graphing, but may be desirable for graphs that have steep sections.

The program automatically breaks graphs that are suspected to have jump discontinuities (when “joinx” is detected, for example). To turn off unwanted (visible) breaks, append “@” as a suffix to the plotting density, as in “2@”.

Use the Polar dialog box for polar curves r = f(theta), and use the letter t to respresent theta, which is understood to be in radians. The default domain is 0 to 2pi. If you do not want the program to plot negative r-values, check the indicated box.

The Parametric dialog box is for curves of the form (x, y) = (f(t), g(t)). You will probably want to change the range of t-values, and it may be necessary to increase the plotting density, if the curve looks too polygonal. Check “polar” if you want f(t) and g(t) to define r and theta instead.

An Implicit example is defined by typing an entire equation into the edit box. The graph is drawn by a special method. The program searches randomly for a starting point that fits the given equation. Once this is found, the curve through this point is drawn by solving a differential equation numerically. Because the complete graph might not consist of a single connected piece, the program spends time looking for more starting points. If you want it to look until you press Q to stop the search, check the “long search” box. This mode only stays in effect for drawing that is done after you click “ok” — it does not apply if the screen has to be redrawn (after a size change, for example). If you want to watch the drawing process (which will be slower if you do), check “watch”. This mode stays in effect whenever the window is forced to refresh itself. If you want drawing to stop when a curve leaves the frame, check the “frame boundary” box.


The Point dialog box is used to put points onto the screen using colored bullets of various sizes. Check “anchors” if you wish to illustrate the coordinates by means of extra drawing. This is described in the adjacent edit box, using the input format “solid/dotted/thick”. For example, type the text “/xy” to see a dotted anchor-line drawn to each axis; type “//xy” to see two thick anchor-lines; and type “x/ty/r” to see four extra elements for a polar point — a solid segment for the x-coordinate, a dotted segment for the y-coordinate, a dotted arc for the polar angle, and a thick radial segment.


Segments from one point (a,b) to another point (c,d) can also be drawn dotted, dashed, or in different widths. Enter the coordinates a, b, c, and d into the edit boxes and click “ok”. Check “points” if you want the points themselves to appear in the inventory. You can put arrows at the ends of segments — click “p1” to put an arrow at the first endpoint, “p2” to put an arrow at the second endpoint, or “both” if you want two arrows.

Use the Line dialog box to graph an equation ax + by = c. Each coefficient a, b, and c has its own edit box. If you are drawing a line of normal width 1, you can make it a dotted or a dashed line.


The Recursive dialog box provides one way of graphing a sequence of points. A recursion tells how each point is obtained from its predecessor. You type two functions into the edit boxes — the first tells how to calculate the new x from the current (x, y), and the second tells how to calculate the new y from the current (x, y). Because a sequence of points may wander outside the window frame, you have to tell the program whether you want the calculations to stop when this happens — check “frame boundary” if you do.

When you click “ok”, nothing will change on the screen, because a recursive example is not defined until a starting point is specified. You will need to open an IVP dialog box.


Differential: There are three input formats.

Use the dialog box dy/dx = F(x,y) to enter a slope field. To see the field, click the “slopes” radiobutton. To adjust the size of the slope segments, enter a (small) percentage in the “lengths” edit box. To change the density of displayed segments, enter a different number in the “rows” edit box. The “color” button applies to the slope field itself. Colors and thicknesses for the individual trajectories (the curves that solve the equation) are selected in the IVP dialog box. A solution curve, which is drawn from left to right, might leave the top or bottom edge of the frame — if you want the drawing to stop when this happens, check the “frame boundary” box.

The equations dx/dt = f(x,y,t) and dy/dt = g(x,y,t) define a vector field, which is allowed to depend on t as well as on x and y. If the parameter t is present in the defining equation, check the “time-dependent” box. This affects how the program reacts when a solution curve returns to its starting point. If you want the slope field or (unit) vector field to be visible, click the desired radiobutton. By default, vectors are displayed with constant lengths. To see relative lengths instead, enclose the “length” data in brackets, as in “[1.5]”; the length you provide will be the length of the longest vector. To see solution curves, use the IVP dialog box. To abort calculations on curves that leave the frame, check “frame boundary”. To improve the accuracy of the solution curve (by making more intermediate calculations), increase the plotting density. The program uses a modified Euler method for its calculations. You can restrict the curve by imposing an condition of the form 0 < r(x,y,t),and solutions will be aborted when they do not satisfy the condition. Check the “restrict” box to activate the condition.

The notation xdot(n) is used for the nth derivative of an unknown function x with respect to t. The dialog box allows you to select the order n of the highest derivative (at most 10), and then write the equation that expresses this derivative as a function of lower-order derivatives of x. The unknown function itself must be referred to as “xdot(0)”. Colors and thicknesses for the individual trajectories (the curves that solve the equation) are selected in the IVP dialog box. A solution curve, which is drawn from left to right, might leave the top or bottom edge of the frame — if you want the drawing to stop when this happens, check the “frame boundary” box.


A Polynomial equation of degree n (at most 8) is defined by n+1 designated points. The default assignment consists of three arbitrary points, and the window is put into polynomial-edit mode (a special menu appears). The left button is used to drag the points and the right button is used to add or delete them. The defining points are always visible in edit mode, but can be hidden otherwise — see the Edit|Attribute dialog box. Click Edit|Quit to return the normal 2-dim menu. Graphs created in this way appear in the inventory as “polynomial”. Except that their equations are not displayed, they can be used like other examples of the explicit y = f(x) type.

The Series type is available only in z-plane windows.


The Inventory dialog box appears automatically after the first example has been entered. It allows you to inspect and edit existing examples, and perform other modifications and constructions. To select an item, click it with the mouse. To select more than one item, hold down the Ctrl or the Shift key when you click the mouse. The menu item Size allows you to adjust the capacity of the Inventory.

“edit” — this button opens the dialog box that was used to create the example originally, and allows you to make changes. Double-clicking an inventory item is equivalent to an “edit” request.

“delete” — this button does what the name says. The selected example disappears from the inventory and from the screen. There is no “undo”. All examples (such as derivatives) that are dependent on the deleted example are also deleted.

“duplicate” — this button copies the selected example and opens the editing dialog box. You can create a similar example without changing the original.

“clip” — a text description of the example is put on the clipboard.

“table” — opens a text window that displays values of the selected function. You can alter the contents of the table by clicking the table menu item Params. Click File|Next Example to see tables for other examples. Click Edit|Format to change precision and column width. Tables that are very large are broken into smaller Sections.

“family” — click this to make the selected example into a family of curves (or points). For this to have any effect, the example must be defined by an equation that has an extra parameter in it. For example, y = axx + bx + c defines a quadratic example that depends on three parameters a, b, and c. Any one of the three can be used to create a family of curves. Type “c” into the “parameter” box, give a range of values by filling in the “low” and “high” boxes, and tell how many curves are in the family by filling in the “steps” box (which is actually one fewer than the number of curves). Click “define” to complete the process and see the graph. Notice the change in the inventory entry for the example. This is a static way of using parameters to animate an example. To undo this construction, re-open the dialog box and click “undefine”.

The “family” button can also be used to create a group of examples, so that certain program operations (such as rotation, reflection, and translation) can be performed on the entire group, by requesting the operation for a single example. To create a group, or to subsequently change its membership, click the “family” button when more than one item is selected. The active group is marked in the inventory with a dollar sign.

“graph” — click this to hide the graph of the selected example, without removing the example from the inventory; click a second time to restore.

“equation” — click this to insert the equation (the first 60 characters, anyway) for the selected example into the diagram; click a second time to remove the equation. Like any supplementary text, the equation can be repositioned using the mouse. The equations can all be easily returned to their default positions. You may prefer that the various equation texts not be displayed with independent fonts. To dedicate a single font to all the equations, check the “equations” item in the Misc|Settings|Fonts dialog box.

“name” — precede the equation by a short description. This button is disabled if more than one item is selected in the inventory. If there are no items selected, the button adds the extension “.map2” to the filename in the window caption (or removes it).

“derive” — click this button to calculate the derivative of the selected item. This Calculus option only applies to certain examples. The result is graphed and added to the inventory. Although you cannot edit the definition of a derivative, you can edit its attributes — color, thickness, etc. For implicit examples f(x, y) = g(x, y), clicking “derive” produces the gradient vector field of the function f(x, y)–g(x, y); unlike other derived examples, this result cannot itself be derived.


The following two operations share a single button:

active” — this is enabled only if the selected item is a mapping. Click this to make the selected mapping active.

“|f(x)|” — if the selected example is of explicit y = f(x) type, this adds the example y = |f(x)| to the Inventory.

To switch the button from one use to the other, select any y = f(x) list-box item, then hold down the Ctrl key and click the same item again to de-select it. The label on the button will now change.


“swap” — click this to interchange the positions of two items in the list. This button is enabled only if exactly two items are selected, and it has no effect if it would mean placing an item before an item it was derived from.


The Library help file displays the list of all standard function names that Winplot recognizes, as well as a few rules of composition.

Open the User functions dialog box to define your own library of functions, which are saved with the file. When Winplot parses anything, it looks at your function list first. To make a new entry in the list, type a name (at least two characters, and alphabetic only) into the first edit box and a defining formula into the second. Click “enter” to finish the job.

Click Conceal equations to remove all equations from the screen simultaneously. Click the same item to put all equations back onto the screen.

Click Conceal points to remove all points from the screen simultaneously. Click the same item to put back all the points.


Real Function Library

Click here for the complex-window function library.

The function interpreter built into non-complex windows has been taught to recognize most elementary functions, such as

  ln, log, exp;
  sin, cos, tan, csc, sec, cot;
  arcsin, arccos, arctan, arccsc, arcsec, arccot;
  sinh, cosh, tanh, csch, sech, coth;
  argsinh, argcosh, argtanh, argcsch, argsech, argcoth;
  floor, ceil, int [ int(-2.3) = -2.0 ];
  sqr = sqrt [ = square root ]; 
  ! [factorial];
  abs(x) = |x|;
  pi;

as well as

  root(n,x) = nth root of x;
  power(n,x) = nth power of x;
  iter(n,f(x)) = n-fold iteration of f(x);
  abs(x,y) = sqrt(x*x+y*y);
  abs(x,y,z) = sqrt(x*x+y*y+z*z);
  arg(x,y) = polar angle t, for which -pi < t <= pi,
             x = abs(x,y)cos(t), and y = abs(x,y)sin(t);
  max(a,b,..) and min(a,b,..);
  mod(x,y) = x - |y|*floor(x/|y|);
  sgn(x) = x/abs(x);
  frac(x) = x-int(x);
  hvs(x) = the Heaviside function (1+sgn(x))/2;
  erf(x) = the standard error function;
  binom(n,r) = n!/r!/(n-r)!;
  sum(f(n,x),n,a,b) = sum of f(n,x) for n=a to n=b;
  prod(f(n,x),n,a,b) = product of f(n,x) for n=a to n=b;
  rnd(x) = random value between -x and x;
  log(b,x) = ln(x)/ln(b);
  gauss(x) = exp(-0.5x*x)/sqrt(2*pi);
  gamma(x);
  psi(n,x) = polygamma function of order n;
  lamb(n,x) = nth branch of the Lambert W function;
  hail(x) = the hailstone function {x/2 if x is even, 3x+1 otherwise}.

Be aware that x^n is evaluated using logarithms, as exp(n*ln(x)), which requires that x be positive. The parser does look for integer constants in the exponent when the definition is edited, but there is no checking during graphing to see whether a variable exponent is (close to) an integer. It is therefore necessary to assume that the base is positive in an expression like x^n. Using power(n, x) circumvents this convention, for n is always evaluated as an integer (rounding if necessary).


The library also has constructors for piecewise (spliced) functions, namely

  joina, 
  joinb, 
  joinc, 
   ..., 
  joinz. 

For example, the value of

  joinx(f(x)|c,g(x)|d,...,h(x))

is

  f(x) if x <= c,
  g(x) if c < x <= d,
   ..., 
  h(x) otherwise.

For example, try graphing

  y = joinx(x+1|0,1-xx|2,-1). 

In a similar fashion, for constructions that depend on the parameter m, the value of

  joinm(f(m)|c,g(m)|d,...,h(m))

is

  f(m) if m <= c,
  g(m) if c < m <= d,
  ...,
  h(m) otherwise.

The name of the piecewise constructor tells the program which variable is to be used to make splicing decisions. This notation is necessary because f, g, ..., and h may be expressed using several variables, as in

  f(b,m,x) = mx+b.

A similar decision-making construction is

  ifpos(f|v,g) = f if 0 < v, 
                 g otherwise. 

Notice the special cases

  hvs(x) = ifpos(1|x,0)

and

  joinx(f(x)|c,g(x)) = ifpos(f(x)|c-x,g(x)).


The characteristic function of the closed interval [a, b] is

  chi(a,b,x) = 0 for x < a,
               0 for b < x,
               1 otherwise.

To insert derivatives into expressions, you can use

  derx(n,f(x)) = nth derivative of f(x) with respect to x.

For other independent variables use

  dery, 
  dert, 

and so on.

To insert indefinite integrals into expressions, you can use

intv(f,a,b) = the integral of f(v) with respect to v from a to b.
It is required that a and b not depend on v.

For other integration variables use

  inty, 
  intz, 

and so on.


In addition to pi, the constants

  ninf = negative infinity
  pinf = positive infinity
  deg = pi/180

are occasionally useful. For example,

  y = sin(x deg)

produces the sine graph “in degree mode.”


The usual signs of algebra are used. Exponentiation is denoted ^. The multiplicative * can usually be left out. For example, 2x is interpreted to mean 2*x. Do not use pix instead of pi*x, however. Notice that it is easier to write xx and xxx than to write x^2 and x^3.

Any string of letters and numbers will be treated as a product of constants and variables, if it is not found in the library of function names. Translation starts at the left end of every string. Thus xpi is read as x*pi, whereas pix is read as p*i*x.

Any letter can be used as a numerical variable, and assigned a specific value at any time. For example, axx + bx + c stands for a general quadratic function, whose coefficients may be adjusted. The default value for e is 2.718281828459045..., the base of natural logarithms. This value is restored whenever a new file is initiated.

Upper and lower cases are not distinguished. Spaces are ignored.

You can add new functions to the library. Give each entry a name, then define it, as a function of x, as a function of x and y, or as a function of x, y, and z. Check the appropriate radio button before pressing Enter. The program checks to see that the name is new and that the formula makes sense, then adds it to the displayed list.


View Menu

Click View to specify the frame width and coordinates for the center. The scale on the vertical axis is linked to the scale on the horizontal axis.


Zoom menu

Click Out to expand the range of visible coordinates on both axes by the same multiplier, which is set by clicking Factor.

Click In to shrink the range of visible coordinates on both axes by the same multiplier.


Shift menu

It is convenient to use the keyboard arrow keys to slide the view across the diagram.

Each arrow shifts the view by a Percentage of the screen width.


Click Last window to retrieve the preceding window settings.

Click Fit grid to make the domain grid fit within the window.


Axes menu

Click Axes to turn the axis system on or off (or press Ctrl+A).

If it is desirable to color the coordinate axes, or to thicken them, open the Misc|Settings dialog box .

Click Labels to edit the symbols used to label the axes. The status of Opaque affects the labels at the ends of the axes, and also the numerals used for the scale on the axes. To edit the font, use the Misc|Settings dialog box.

To see solid arrowheads, or to change the color of the gridlines, or to thicken them, use the Misc|Settings dialog box.


Buttons Menu

There are seven modes for the mouse.

Cursor LB: A movable cursor and its image appear when you click the left button. “Jacobian RB” means that a right-button click will return the Jacobian data (differential calculus) at the clicked point.

Sketch: Left-clicking and dragging produces a trace on the screen, which persists until you click Erase. Its image is synchronously drawn in the range window. A single section of the sketch (produced between any left click and the subsequent release) can be erased by right-clicking (or double left-clicking) it. The attributes of the sketch are adjustable by using the Misc|Settings dialog box.

Text: Use the right button to create and edit text overlays, and the left button to drag text around the screen. A text-editing session opens a dialog box in which you can select a display font, color, and size, and decide whether you want the text position to be calculated with reference to
(1) the view frame (so that it is unaffected by zoom operations);
(2) the coordinate system (so that it could leave the field of view);
(3) a (movable) point in the inventory.
You can select either an opaque background for the text, or a transparent one. If you do not like the look of hyphens, you can request that they be replaced by longer dashes (– instead of -), but you have to provide the ASCII value of that character in the current font. The default value of 150 often works.

Trajectory: You can initiate a differential equation solution by clicking with the mouse, but only when an IVP dialog box is open. Left-click if you want to watch the trajectory being drawn.

XY coordinates LB: A left-click displays the coordinates of the selected pixel, relative to the current coordinate system. “Recenter RB” means that a right-click recenters the view frame at the point of the click, with no change in the size of the view frame.


Evaluated text: This mode is similar to ordinary text mode, except that text is parsed and evaluated, and thus is responsive to changes in the animation parameters A–W. The edit dialog shows that the evaluation can have as many as three components, which are active only when checked. If more than one component is active, parentheses and commas are displayed. If “expression” is checked, the defining formulas are also displayed.

The optional “label” can be used as a prefix; it can also be the entire overlay. The label can have evaluated sections; the program has been taught to treat the character “~” as a separator between the two modes of interpretation, where the first section is always unevaluated.


Paste from clipboard: A right-click puts clipboard graphics into the diagram, and the left button is used to move the graphics around the screen. If the clipboard contains something other than graphics, a right-click may produce strange results. When you right-click an item, the resulting dialog box allows you to set the background mode for the item (opaque or transparent), clear the item, copy it onto the clipboard, or cut the item (which means clear and copy).


One Menu

Things you can do with one example at a time:

Use the Slider dialog box to trace individual curves. The scrollbar of course moves the cursor along the current curve. You can also position the cursor by typing a value into the edit box and pressing Enter. The range of scrollbar values is determined by the current example, which can be changed by selecting from the drop-down list at the top of the dialog box. Click “mark point” to save a cursor position in the inventory. Click “Taylor approx” to add a tangent line to the inventory. The “degree” of the approximation can be increased from its default value 1 (use the drop-down list box), but for examples other than y = f(x) type, only degree 1 has any effect. The contents of the x-value edit box are remembered by the new Taylor example, so the point of tangency can be animated. If “secants” is checked, the program will overlay dynamic secants, drawn from a designated “base point”. If “tangents” is checked, a dynamic tangent will move with the cursor. For explicit y = f(x) examples, the slope of a secant (or a tangent) is displayed in the dialog box, along with the curvature of the graph at the point of tangency. For polar and parametric examples, tangents and secants are replaced by velocity vectors, whose components are displayed in the dialog box, preference given to tangents. When a tangent is on the screen, its length (speed) is also displayed, as well as the curvature of the path at the point of tangency. If the value of “degree” is 2, the osculating circle will be displayed along with the tangent.

The Zeros dialog box is only for curves of type y = f(x). It finds and displays coordinates for the x-intercepts of the graph. Click “next” to move the cursor right. If there is no x-intercept to the right, it starts over again. The x-values can be saved for later use; click “save as” after you have selected a letter to refer to the stored value. For example, if you save a value as “k”, then you can insert this value into a formula or into an edit box by simply typing “k”. The values are also saved as data ... see Misc|Data below. Curves that touch the x-axis tangentially without crossing it are usually found along with the crossings.

The Extremes dialog box finds points on a graph that are extreme in some way — extreme y-value, extreme x-value, extreme r-value, extreme y'-value. Select the desired variable in the “extreme of” list box. Click “next” to display a point of that type. Select a different curve by using the topmost list box. The algorithm uses derivatives, and ignores endpoint extremes. Every extreme is added to the data list for the example. Click “save” to assign the current value of the “save” variable to the parameter in the “as” listbox.


Initial-value problems (IVPs):

The Sequences dialog box is available only if there are recursive examples in the inventory. Once a starting point is chosen, by typing x- and y-coordinates into the edit boxes, you can click “draw” to see the resulting sequence. The number of points plotted depends on how many “terms” were requested, and whether the “frame boundary” box was checked when the recursion was defined. If you click “watch” instead of “draw”, you will see the points as they are calculated, instead of when the list is complete. In any event, you might need to press Q to stop the process. Watching slows things down. Click “table” to see a list of the points in a text window. The index of the initial term is 0. When each sequence is completed, it is added to the inventory for that example, and displayed in the list box. Click “delete” to remove unwanted examples.

The dy/dx trajectory dialog box is similar to the preceding, except that it applies to curves that are defined by designating a point in a slope field. The initial x- and y-coordinates are typed into the edit boxes. For a numerical solution to a differential equation, you must also select a step size and a method — a positive number in the “stepsize” box means that the curve proceeds to the right (you can guess what a negative number does); choose among “Euler”, “modified Euler”, and fourth-order “Runge-Kutta” by clicking the radiobutton. If color matters, click “color” before you draw the trajectory — it cannot be changed afterwards. If you choose to “watch” the trajectory, you can choose the speed — the larger the positive number in the “delay” box, the slower the drawing process. Each curve is added to the inventory list box for the differential equation. Remove an unwanted curve by clicking “delete”. Click “table” to see a list of calculated points for a selected trajectory, after typing a positive integer into the “steps” box.

The (dx/dt,dy/dt) trajectory dialog box is similar to the preceding, except that you do not choose the integration method, the step size, or the number of steps, and there is no tabular output. A parametric trajectory is terminated when
(1) it leaves the viewframe (if “frame boundary” was checked when the example was defined);
(2) it slows to a stop (encounters zero vectors);
(3) it is interrupted when you press Q;
(4) it returns to its starting point;
(5) the “duration” of the trajectory (the elapsed t-value) reaches a prescribed limit.
The “forward” direction of the curve is defined by the vectors that make up the field, even if they are not displayed. If the field is “time-dependent”, then the initial value for t is significant, and returning to the starting point does not abort the calculations, for the direction of the curve might not be the same as it was initially. If closed loops are aborted, it is because the returning trajectory was within a specified distance of the initial point. Use the Misc|Settings dialog box to adjust this tolerance. Trajectories rarely encounter zero vectors (just small vectors), but how small is enough to abort the trajectory? Use the “Zero vectors” item in the Settings dialog box to adjust this value. Another signal that the trajectory is close to a zero vector is a sudden change of direction. For this to abort a trajectory, check the item “Abrupt angles” in the Settings dialog box. If color matters, click “color” before you draw the trajectory — it cannot be changed later. Each curve is added to the inventory list box for the differential equation. Remove an unwanted curve by clicking “delete”. Click “table” to see a list of calculated points for a selected trajectory.

For sequences and (dx/dt, dy/dt) trajectories, it is possible to save the initial conditions in text form — check the box before drawing the trajectory. Such trajectories can be made to respond to parameter changes.

The derx(n,y) trajectory dialog box is almost identical to the dy/dx trajectory dialog box. Initial derivative values are typed into the first edit box; the initial x-coordinate is typed into the second edit box. To see the initial value that is currently assigned to a derivative (or to change that value), select its order in the list box.

The Roulettes dialog box is enabled for non-implicit examples. When a circle of specified size rolls without slipping along a curve, a point attached to the circle traces a roulette. The “low”, “start”, and “high” values (of x or t) define points where the circle touches the curve; the vectors directed from the center to the trace point and from the center to the “start” point are parallel. The “left” and “right” distinction is made with reference to the positive direction of the curve. The “arm” describes the separation between the circle center and the point that traces the roulette; its default value is the “radius” of the circle (the tracing point is on the circle), but it can have any value. If the value is zero, the roulette is the path of the center of the circle.

For some examples, you can use the Plot a list dialog box to plot a sequence of discrete points by supplying a list of defining coordinates. These must be expressed using numerals only; not even “pi” is understood.


Two Menu

Things you can do with two examples at a time:

The Intersection dialog box finds points where one curve intersects another, and an angle of intersection for each. The two curves are selected using the drop-down lists at the top of the dialog box. The three displayed values can be saved for later use. Click “save” after you have selected a value and a letter to remember it by. You can also click “mark” to place a bullet there. The intersection coordinates are added to the data list for each example. Points where two parametric examples meet are not recognized by this dialog box. Unless “degrees” is checked, the angle display is in radians.

Use the Combinations dialog box to create new examples in six ways — addition, subtraction, multiplication, division, exponentiation, and substitution. There is a button for each. The example in the top list is called “f”, and the other is called “g”. For four of the constructions, it matters which is which. When f and g are both vector fields, one can resolve f into components, one parallel to g (the button is labeled “f proj g”) and the other perpendicular to g (the button is labeled “f perp g”). All combinations are linked to their antecedents, meaning that they change when their antecedents do, and they are deleted when their antecedents are deleted.


Animation Menu

Parameters A–W are supplementary variables. Each letter a, b, ..., z always has a numerical value, and letters other than t, x, y, and z can be used in equations as parameters. The value of such a variable can be altered spontaneously using this dialog box. Use the drop-down list to select the parameter whose value you want to change. When a parameter value is changed, all graphs that depend on that parameter change accordingly.

To assign a specific value to a parameter, you can use the mouse to slide the “thumb”, or click the arrow buttons, or type a new value into the edit box and press Enter.

For every parameter, the range of the scroll bar is initially from –10.0 to 10.0, but it can be reset for the current parameter at either the left end (click Set L) or the right end (click Set R) to the displayed value. The range is also reset by Entering a value that is outside the current range.

If the item Evaluate parameters is checked, and if the “duplicate” button is clicked in the Inventory, and if the selected graph depends on the parameter that is selected in the A–W dialog, the parameter will be assigned its current value when the duplicate graph is created. Notice that this creation shifts the Inventory selection to the new curve. Curves created in this way are all deleted if the original curve is deleted.

Individual parameters can be assigned their own dialog boxes. A parameter can be confined to integer values. To activate this mode, or to turn it off, enter a numerical value enclosed in brackets, as in [3.1416].

The symbol @ can also be used like an alphabetic parameter. It does not have a restricted range of values, however, thus its dialog box does not have a scrollbar. To modify the current value of @, type a value into the edit box and press Enter. If you click the “time” button, the parameter value will increase by (approximately) 1 unit per second.

During automatic play, the program varies the values for you. There are two modes of operation, and a button for each, labeled “reverse” and “cyclic”. Each label describes what happens when the thumb reaches the end of its bar. The dialog box disappears while an animation is happening, so you must press Q to make the dialog box reappear.

For complicated diagrams that respond slowly to parameter changes, it may help to “autoshow” slides instead. It takes a little time to create slides and put them into memory, but then they can be played back quickly. The number of slides you can create depends on available memory and the size of the window.


By default, the “thumb” of a scrollbar can be put in 101 discrete positions by clicking the small arrows at the end of the bar. In other words, 100 “small steps” will move the thumb from one end of the bar to the other. Clicking between the thumb and either end of the bar produces a “medium step”. By default, it takes 10 of these to move the thumb from one end of the bar to the other. Each of the numbers 100 and 10 can be edited by using the Scrollbar units dialog box. The changes are applied to those scrollbars that are currently open; hidden scrollbars are not affected.


Miscellaneous Menu

The Settings dialog box has five sections.

Colors
Individual palette entries (other than black and white) can be edited; right-click the selected color.
Graph in black: Check this to make black the graphing color for all examples.

Fonts
To assign a different font, select it and click “edit”. For the axis-scale font, the hyphen might not look correct when used as a numerical sign. You can request that hyphens be replaced by longer dashes (– instead of -) in the axis scale, and you will probably need to provide an ASCII code for the special character. You might also need to provide a code for pi symbols if you want them (they are enabled in the View|Grid dialog). To apply a single font to all displayed equations, check the box next to “equations”.

Pen thickness
The thicknesses (both displayed and printed) of axes, gridlines, and sketches (freehand drawings) are managed here.
Thicken print: You can add thickness to printed curves (other than axes).

Tolerances
There are four possible adjustments, all of which pertain to differential equations.
(a) Zero vectors: A trajectory is aborted when it encounters vectors shorter than this tolerance.
(b) Loop closing: A trajectory is aborted if it returns to within this tolerance of its starting point. If the tolerance is too small, trajectories that should close will go around and around until interrupted.
(c) Abrupt angles: A trajectory is aborted if it encounters vectors that suddenly change their direction, for it is likely that a zero vector has been encountered.
(d) Infinite slopes: A dy/dx trajectory is aborted if it encounters large slopes that suddenly change sign, for the plotting might have run past an infinite slope. If it is known beforehand that trajectories are not vulnerable to such behavior, then the safeguard can be turned off, especially if trajectories with steep slopes are going to be plotted.

Miscellany
(a) Decimal places: The number of places displayed in dialog boxes, list boxes, etc, is at most 16.
(b) Solid arrowheads: Check this to fill all arrows in the diagram (not just at the ends of the axes).
(c) Background color: When copying to the clipboard, you can elect to include this.
(d) High-resolution copy: Because printer resolution is so much higher than screen resolution, Winplot curves that have been pasted into other Windows applications may print with a jagged appearance. To increase the printed quality, check this item.
(e) Use defaults: To avoid using a possibly damaged initialization (*.ini) file when opening a supplementary graphing window, check this item.


Text menu

If you click Home equations (or press Shift+Home) when the mouse is in text mode, all displayed equations will be returned to their default positions in the upper left corner.

Clicking Show/hide text affects all supplementary text on the screen.

Click Delete text to remove all supplementary text from the file. There is no “undo”!


The Notebook is a text window whose contents are saved with the rest of the file.

Clicking Tables has the same effect as clicking the “Table” button in the Inventory.

Click Inventory to display the entire inventory in a text window.

Paste script: A Winplot script consists of a string of semicolon-terminated fields. As the list below shows, each KEYWORD must be followed by a specified list of numbers and texts. There is no distinction between upper and lower case, and spaces are ignored.

EXPL2; f(x);
PARAM2; x(t); y(t); t0; t1;
IMPL2; equa(x,y);
POLAR; f(r); t0; t1;
POINT2; x; y;
SEG2; x0; y0; x1; y1;
RECUR2; newx(x,y); newy(x,y);
DEQ2T; x'(t); y'(t);
DEQ2X; slope(x,y);
LAGRANGE; num; num pairs x; y;
POINTPOL; r; theta;
SEGPOL; r0; t0; r1; t1;
PARAMPOL; r(t); theta(t); t0; t1;
KAPPA; kappa(s); s0; s1; x0; y0; x0'; y0';

In addition,

LOCK; xlo; xhi;   can follow an EXPL2 definition,
PER;  xlo; xhi;   can follow an EXPL2 definition,
POS;   can follow a POLAR definition,
NOCLIP;   can follow a DEQ2T or RECUR2 or IMPL2 definition,
VALUE; parametername; value;   assigns value to parametername,
COLOR; paletteindex;           assigns color to preceding example, 
CORNERS; xlo; xhi; ylo; yhi;   sets the view and unlinks the axis scales,
CENWID; xcen; ycen; width;   sets the view and links the axis scales,
DEFINE1; name; name(x);   adds a user-defined function to the library, and
DEFINE2; name; name(x,y);   adds a user-defined function to the library.
DEFINE3; name; name(x,y,z);   adds a user-defined function to the library.

TRAJ; initiates a trajectory definition. The list of required fields depends on what example type it immediately follows. The possibilities are TRAJ; x0; y0; num; defines a RECUR2 trajectory, TRAJ; deltax; x0; y0; defines a DEQ2X trajectory, TRAJ; direc; x0; y0; t0; t1; defines a DEQ2T trajectory, where 0 < direc requests a forward trajectory, direc < 0 requests a backwards trajectory, and direc = 0 requests both.

A missing or unintelligible field aborts the script, and an unexpected field is ignored.


The Simulprint dialog box allows you to print several wp2 diagrams on a single sheet of paper with one print command. The program first asks you for the number of diagrams, then prompts you to select the desired diagrams from the file-open dialog box, one at a time. Each diagram is printed according to the information that was entered (and saved) in the File|Format dialog box. The printing begins when your list is complete.


Complex Function Library

The function interpreter built into the z-plane mapping window has been taught to recognize most elementary complex functions, such as

  ln, log, exp;
  sin, cos, tan, csc, sec, cot;
  arcsin, arccos, arctan, arccsc, arcsec, arccot;
  sinh, cosh, tanh, csch, sech, coth;
  argsinh, argcosh, argtanh, argcsch, argsech, argcoth;
  sqr = sqrt [ = square root ], abs;
  arg = standard angle t, for which -pi < t <= pi;
  pi ;

as well as

  root(n,z) = nth root of z;
  power(n,z) = nth power of z;
  iter(n,f(z)) = n-fold iteration of f(z);
  sum(f(n,z),n,a,b) = sum of f(n,z) for n=a to n=b;
  prod(f(n,z),n,a,b) = product of f(n,z) for n=a to n=b;
  sgn(z) = z/abs(z);
  re(z), im(z);
  gamma(z).

For real argments, the program recognizes

  floor , ceil , int [ int(-2.3) = -2.0 ];
  max(a,b,..) and min(a,b,..);                   
  mod(x,y) = x - |y|*floor(x/|y|);
  frac(x) = x-int(x);
  hvs(x) = the Heaviside function (1+sgn(x))/2;
  erf(x) = the standard error function;  
  binom(n,r) = n!/r!/(n-r)!;
  rnd(x) = random value between -x and x;
  log(b,x) = ln(x)/ln(b);
  abs(x,y) = sqrt(x*x+y*y);
  gauss(x) = exp(-0.5x*x)/sqrt(2*pi); 
  and !

The library also has constructors for piecewise (spliced) functions, namely

  joina, 
  joinb, 
  joinc, 
  ..., 
  joinz. 

For example, the value of

  joinx(f(x)|c,g(x)|d,...,h(x))

is

  f(x) if x <= c,
  g(x) if c < x <= d,
  ..., 
  h(x) otherwise.

For example, try graphing

  y = joinx(x+1|0,1-xx|2,-1). 

In a similar fashion, for constructions that depend on the parameter m, the value of

  joinm(f(m)|c,g(m)|d,...,h(m))

is

  f(m) if m <= c,
  g(m) if c < m <= d,
    ...,
  h(m) otherwise.

The name of the piecewise constructor tells the program which variable is to be used to make splicing decisions. This notation is necessary because f, g, ..., and h may be expressed using several variables, as in

  f(b,m,x) = mx+b.

A similar decision-making construction is

  ifpos(f|v,g) = f if 0 < v, 
                 g otherwise. 

Notice the special cases

  hvs(x) = ifpos(1|x,0)

and

  joinx(f(x)|c,g(x)) = ifpos(f(x)|c-x,g(x)).


The characteristic function of the closed interval [a, b] is

  chi(a,b,x) = 0 for x < a,
               0 for b < x,
               1 otherwise.

To insert derivatives into expressions, you can use

  derz(n,f(z)) = nth derivative of f(z) with respect to z.

For other independent variables use

  dery, 
  dert, 

and so on.


In addition to pi, the constants

  ninf = negative infinity
  pinf = positive infinity
  deg = pi/180

are occasionally useful. For example,

  y = sin(x deg)

produces the sine graph “in degree mode.”


The usual signs of algebra are used. Exponentiation is denoted ^. The multiplicative * can usually be left out. For example, 2z is interpreted to mean 2*z. Do not use piz instead of pi*z, however. Notice that it is easier to write zz and zzz than to write z^2 and z^3.

Any letter can be used as a numerical variable, and assigned a specific value at any time. For example, azz + bz + c stands for a general quadratic function, whose coefficients may be adjusted. The default value for e is 2.718281828459045..., the base of natural logarithms.

Any string of letters and numbers will be treated as a product of constants and variables, if it is not found in the library of function names. Translation starts at the left end of every string. Thus zpi is read as z*pi, whereas piz is read as p*i*z.

Upper and lower cases are not distinguished. Spaces are ignored.