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 “@” 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 external 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 in most windows. 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.
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 “?” 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. To make this the default color for subsequent examples, leave the color-selection window open as you close the dialog. To clear the default, open the color-selection window, click a different color, then close the window before closing the dialog box.
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 designated 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 “@” 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. This is done by looking for sign changes. Once a starting point 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.
A curve that is defined in this way by an initial point can be affected by changes to the view:
(1) The initial point may disappear, which will make the entire curve disappear.
(2) If the frame boundary clipped the curve, thereby defining its endpoints, these points can clip the curve inside the new frame.
In situations like these, you may want to enable automatic implicit redrawing.
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.
A List can be input in two ways — “from clipboard” and “list”. The former extracts points from clipboard text, in which each numeric field is interpreted as a coordinate. The latter defines a sequence of points, by expressing their coordinates as functions of a selected parameter. The attributes of the points should be selected before clicking “plot”.
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 a 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.
A planar curve is defined Intrinsically by its curvature (kappa), expressed as a function of arclength s. The curve is initialized at s = 0 by specifying a point and tangent vector.
The Shading explicit inequalities dialog box is available only if there are explicit examples in the inventory. Curves of the form y = f(x) can be used to define shaded regions. Each such region is obtained by shading “above” or “below” a selected curve, or “between” two selected curves — the radiobuttons select one of the three cases. To restrict the x-values to lie between extremes, check the “x interval” box and type the extreme values into the edit boxes. It is possible to associate the shading limits with animation parameters. For example, writing “–2.72@k” into the “left” edit box tells the program to assign –2.72 to the parameter k. When the value of k is adjusted, the various displays respond accordingly. Shading is done by a pattern of small dots, whose “color” can be selected. Once the region has been described, click “shade” to see the result and to add it to the list of regions. It is also possible to fill regions with solid color, and to vary the effect produced by overlapping colors. To do so, open the Misc|Settings dialog box.
The Shading implicit inequalities dialog box is enabled only if there are implicit examples in the inventory. Any such example can be converted to an inequality by selecting it in the first list box and clicking either of the “change” buttons. The resulting region is added to the display, using the currently selected color. To shade the region that is common to two or more existing regions, select these regions in the region list and click “intersect”. If “centroid” is checked instead of “shade regions”, all shading disappears, and nothing happens until you click the “throw” button, which is enabled only when a single region is selected. This button generates the specified number of uniformly random points inside the selected region. If the region is completely visible, the displayed average coordinates approximate the centroid of the region. The random points themselves do not appear unless “show darts” is checked. The display of darts is only temporary.
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 “.wp2” 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:
“web” — overlays a web diagram on an example of type y = f(x). The seed value can be animated by associating it with one of the parameters A–W in the drop-down list box. The initial segment will cross the x-axis if you check “initial segment”. The direction of the web will be designated by arrows if you check the indicated box. “Steps” refers to the number of times the function is applied to the seed value. To undo the overlay, close the dialog box with “undefine”.
“|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.
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,n) = the integral of f(v) with respect to v from a to b.It is required that a and b not depend on v. The optional parameter n is proportional to the number of subdivisions, and can be used to adjust for accuracy or speed. Its default value is 40.
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.
Use the left mouse button to drag the defining dots around the screen. Use the right button to add new dots or remove old ones.
When the item Coordinates is checked, right-button clicks allow you to edit coordinates precisely.
Use the Attribute dialog box to change the color and style of the graph, and the sizes of the defining dots. Check “dots always visible” if you want the dots to remain when the polynomial is not being edited.
Click See Equation to display the coefficients of the polynomial in a text window.
Click Quit (or press Ctrl+Q) to exit editing mode and restore the normal 2-dim menu.
Click “corners” to specify extreme values for both variables independently (axis scales unlinked);
Click “center” 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 Factor.
Click In to shrink the range of visible coordinates on both axes by the same factor.
Click Square to relink the scale on the axes, while keeping everything in view. This is enabled only when the axes are unlinked to begin with.
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 window to make all active drawings fit within the window. Because this might not be possible, results are unpredictable.
Restore returns the default window settings.
Redraw does what the name says.
If the item Implicit redraw is checked, all implicit graphs are recalculated (the program tries to find a new starting point for each component of the graph) whenever there is a window change.
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.
The Grid dialog box controls many details relating to the underlying coordinate system, namely
“axes”: a check indicates that they are activated, in which case there are four possible options—show
both axes,
only the x-axis,
only the y-axis, or
only the polar ray (the positive x-axis);
“ticks”: if this is checked, the axes will have ticks on them;
“interval”: the distance between successive ticks;
“scale”: a check indicates that the numerical scale is marked with the ticks;
“places”: how many used to display the scale;
“frequency”: how often to display scale values (the value 1 requests that every tick be shown);
“pi”: a check mark means that the scale will be expressed as rational multiples of pi. To see actual pi symbols, you must set the axis scale font (see the Misc|Settings dialog box) to a font that has the symbol, and enter the character code for it. (The default character code might not work for your choice of font.) Fractions are displayed with the numerator directly over the denominator; if you want a one-line fraction display instead, put “@” at the end of the text in the “interval” field for the designated axis.
“arrows”: a check puts arrows at the ends of the axes.
“dots”: this background pattern is determined by the tick intervals.
“labels”: puts “x” and “y” at the ends of the axes.
“tick length”: set as a percentage of the width of your computer screen. This determines the size of the arrows as well.
“rectangular grid”: this background pattern is determined by the tick intervals; check the quadrants in which you want the gridlines to appear.
“polar grid”: radii are determined by the x-axis tick interval. The number of sectors is obtained from the edit box. Notice that the polar grid can be on at the same time as the rectangular grid.
When you have all the data as you want it, click “apply” to see the changes.
If you want to affix degree symbols to the numeric scale on an axis, put “@” at the end of the text in the “places” field. It may be necessary to tell the program the scale-font character code for the degree symbol; if so, put the code after “@”, as in “@176”.
If you want the axis scale to be written when the axes are drawn (and perhaps be overwritten by the graphs), put “@” at the end of the text in the “freq” field.
The program sets an upper limit on how many ticks can appear on an axis. When this value is exceeded, the tick interval will automatically be increased to compensate.
To write O as a third-quadrant label for the origin, put “@” at the end of the tick-length description.
There are seven modes for the mouse.
LB drag box: You can create a new view frame by left-clicking and dragging a rectangle within the current frame. This unlinks the scale on the two axes. “RB zoom recenter” means that a right-click on any point in the window will recenter the view frame at that point, and the size of the frame will be reduced to a certain multiple of the current size. This does not unlink the scales on the axes.
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.
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.
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).
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.
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.
Sketch: Left-clicking and dragging produces a trace on the screen, which persists until you click Erase. 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 opening the Misc|Settings dialog box.
Things you can do with one example:
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.
Measurement menu
The Integration dialog box can be used for numerical evaluation, and also for illustrating a variety of simple methods. Click “definite” to calculate an approximate value for the indicated integral, using the methods indicated by the check boxes, and the indicated number of subintervals. If “overlay” is also checked, the program attempts to draw a system of rectangles (or trapezoids, or parabolic arcs) that corresponds to the first checked item in the list. The display is useful only if the number of subintervals is a fairly small number. The overlay is replaced by a solid fill as soon as a rectangle interior is smaller than one pixel.
If you click “indefinite”, the antiderivative of f that corresponds to the “lower limit” is added to the inventory (no symbolic formula — just an indication that the graph is an antiderivative).
It is possible to associate the integration limits with animation parameters. For example, writing “–2.72@k” into the “lower limit” edit box tells the program to assign –2.72 to the parameter k. When the value of k is adjusted, the various displays respond accordingly.
The “parabolic” method requires an even number of intervals, so the program fits quadratics by calculating an extra point for each of the requested intervals. Warning: Evaluating convergent improper integrals is a sensitive process. In particular, the program might produce unreliable results if it is asked to evaluate a function at or near an infinite singularity.
The Sector area dialog box evaluates the area of the sector (centered at the origin) swept out by a selected arc. The displayed answer is always positive, but area produced by clockwise motion cancels area produced by counterclockwise motion.
With the Arc length dialog box open, select a curve from the drop-down list. Start and stop points on it are set by typing high and low values for x (or t, if the curve is parametric) into the edit boxes. Click “length” to see the answer. The approximation is affected to some extent by the number of “subintervals” you use. Points of non-differentiability will also affect accuracy (for example, if the integrand involves sqrt(x) and the integration interval starts at x = 0).
With the Volume of revolution dialog box open, select an axis of revolution ax + by = c by typing in the coefficients a, b, and c, or click “x-axis” or “y-axis” for an automatic setup. Select the curve to be revolved from the drop-down list. Select “start” and “stop” points on the curve. If the curve has the form y = f(x), this means selecting two x-values; otherwise (parametric and polar curves) this means selecting two t-values. Each point on the curve determines a segment that is perpendicular to the axis, and this segment generates a circular disk when it is revolved around the axis. Click “volume” to see the volume of the resulting solid. The accuracy of the numerical integration is influenced by the number of “subintervals”.
The operation of the Surface area of revolution dialog box is described by the preceding paragraph.
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. Be aware that trajectories with steep sections can cause difficulty.
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.
If you expect the trajectories in the diagram to respond quickly to window resizing or parameter changes, beware of any trajectory that needs to be terminated by pressing Q. You should always “watch” such a trajectory when it is added to the inventory (which gives you enough time to stop it at a convenient place), rather than letting it develop invisibly in the background; it will take just as much time to retrace that trajectory every time a redrawing is required, making the program response quite sluggish.
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 xdot(n) 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 t-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.
Use the Translation dialog box to translate graphs by specific vectors.
Use the Reflection dialog box to reflect graphs across specific mirror lines. For convenience, three special cases can be designated using the radiobuttons. Check the “mirror” box if you want the program to add the mirror line to the diagram.
Use the Rotation dialog box to rotate graphs around a specific center, through a specific angle in radians (for a description in degrees, put “deg” at the end). For convenience, one special angle can be selected using a radiobutton.
Each of the preceding three dialog boxes has a check box named “image axes”. Check this if you want to see the result of applying the transformation to the coordinate axes. This has a cumulative effect — if you apply a transformation to a transformed example, the transformation is also applied to its image axes.
The Evolute dialog box is enabled for non-implicit examples. For any nonlinear curve, the evolute is the locus of the centers of curvature.
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.
The Revolve surface dialog box is like the volume-of-revolution and surface-area-of-revolution measurement dialog boxes, except that implicit curves are allowed, and the result is a 3-dim graphing window that displays the surface. For non-implicit curves, it is possible to associate the four domain parameters “arc start”, “arc stop”, “angle start”, “angle stop” with animation parameters. For example, writing “6.2832@k” into the “angle stop” edit box tells the program to assign 6.2832 to the parameter k, which is then inserted (invisibly) into the surface equations. When the value of k is adjusted in the 3-dim window, the surface responds accordingly.
A volume-of-revolution diagram can be replaced by a system of approximating cylinders, as follows:
1. Use the Revolve surface dialog box to draw the surface.
2. Use the 3-dim Inventory dialog box to edit the surface.
3. Type “8@1” into the t divisions edit box and click “ok”. You will see 8 cylinders, which result from revolving a left-endpoint, 8-subinterval, Riemann sum around the axis. Use “8@2” and “8@3” for midpoint sums and right-endpoint sums, respectively. To cap the ends of the cylinders, use “8@11”, “8@12”, and “8@13”, respectively.
Every new request is added to the same 3-dim window, so you can see multiple surfaces simultaneously.
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.
The Integration dialog box is virtually the same as the one-function version, except that the difference between two functions f and g is being integrated.
Use the Volume of revolution dialog box to calculate the volume that is obtained when the region between two curves y = f(x) and y = g(x) for a < x < b is revolved about a line that is parallel to a coordinate axis.
To evaluate a Line integral, select a vector field from the first drop-down list, and a parametric curve from the second. Click “value” to obtain the result of integrating the field along the arc defined by the high and low values for t. The numerical approximation is affected to some extent by the number of subdivisions you request.
Use the Sections dialog box to calculate the volumes of 3-dim solids with known cross-section, or to display the solids. Given two curves y = f(x) and y = g(x) for a < x < b, the region between them is divided into strips parallel to the y-axis, and each strip is used as the base of a shape built perpendicular to the xy-plane. The resulting solid can be drawn (“see solid”) or have its its volume calculated (“volume”). You must enter the values of a and b into the “low x” and “high x” edit boxes. The number of strips is “x-sections”, while “z-sections” refers to the other system of rulings on the surface. Neither item affects the volume calculation; they affect only the drawing. Except for elliptical (or circular) sections, the value of “z-section” is better left equal to 1, but it has to be 20 or so if ellipses are to look smooth. Click the radiobuttons to choose the shape of the desired cross-sections. In the last three options, the height of the shape must be specified, as a function of x. In any case, you can double the size of the solid by reflecting it in the xy-plane — check the “double” box. It is possible to associate the domain parameters “low x” and “high x” with animation parameters. For example, writing “4@k” into the “high x” edit box tells the program to assign 4 to the parameter k, which is then inserted into all the surface equations. When the value of k is adjusted in the 3-dim window, the surface responds accordingly.
The Distance dialog box is enabled only when there are points in the diagram.
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 box, 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, enclose the numerical description 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.
Click Linked window to open a new window, whose parameters are controlled by the Parameters A–W slider of its parent window. During automatic play, only the parent window responds, however.
Click Simultaneous to open a dialog box that allows you to make two or more parameters move through their ranges when any one of them is played automatically.
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.
The Settings dialog box has five sections.
Colors
Individual palette entries (other than black and white) can be edited; right-click the selected color.
Fill explicit inequalities: Check this to replace the dotted patterns with solid color.
Fill mix modes: There are three, which vary the effect produced by overlapping colors.
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 only those 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.
The Background is usually a solid Color, but it is also possible to use a bitmap as a background. You can Open a bitmap file from disk, or you can Paste one from the clipboard. When the wp2 file is saved, it will include a reference to the bitmap file (which itself will have to be created if the original was pasted from the clipboard). Click Remove to make the window forget that there was ever a bitmap in the background.
DEq Miscellaneous menu
The Slider dialog box traces trajectories. This is enabled only if there is at least one field trajectory on the screen. Select a vector field from the top list. Its trajectories appear in the second list box. A cursor marks a point on the selected trajectory, and the corresponding field vector is displayed. The position of the cursor is controlled by the slider, or by entering a t-value into the “t =” edit box. Both coordinates and components appear below the slider. You can alter the displayed length by typing a new value into the edit box next to “vector length” and checking this control. The buttons allow you to insert permanent objects into the inventory. Remember that the coordinates of the cursor point are the result of numerically solving the differential equation, and hence are only approximations.
For time-dependent equations, it makes sense to graph x and y separately as functions of t. Click x(t)-window or y(t)-window to open a time window. The window graphs all solutions that correspond to trajectories already drawn in the parent window. The time window is automatically updated whenever a new trajectory is added. To see x and y graphed on the same system of axes, click xy(t)-window.
Instead of plotting solution curves, it is possible to plot isolated points at specified intervals of time. Check the menu item Strobe to activate this mode, and click Interval to set the desired time interval. It is necessary to press Q to stop such a trajectory.
Data menu
Click Inspect to open a text window that displays all data collected for each example in the inventory (intercepts, extremes, etc). The menu for the text window allows you to move from example to example.
Click Mouse if you want left clicks to be recorded as (x, y) data for a specific example. The radiobuttons turn the feature on or off, and the drop-down list is where you choose the example that receives the data.
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. It also rescues text that should have been holding its position in the frame, but that (somehow) now finds itself outside the frame.
Click Delete text to remove all supplementary text from the file. There is no “undo”!
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 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.
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.