Contents

Graphmatica

Version 2.0h

by Keith Hertzer

ksoft@graphmatica.com
http://www.graphmatica.com/

Sun 14 Aug 2011

Copyright © 1992-2011 kSoft, Inc.

Help by topic

  • Introduction <-- Read me first!
  • The Display
  • Graphing Equations
  • Using the Redraw Queue
  • Using Command Line Arguments
  • Shareware Information
  • Acknowledgments

Help by menu item

  • File Menu: File and printing operations
  • Edit Menu: Exporting text and images; managing graphs
  • View Menu: Changing the grid range and toggling display of sub-windows
  • Options Menu: Viewing and setting special options
  • Tools Menu: Numerical analysis and other tools
  • Calculus Menu: Differentiating and integrating


Introduction to Graphmatica

INTRODUCTION to Graphmatica for Windows

Graphmatica is an interactive algebraic equation grapher that can be used as an aide to plotting mathematical curves. While it is designed to be extremely simple to use, its advanced features may not be readily apparent to the first-time user. Please take a moment to acquaint yourself with them:

  1. The Redraw Queue. Graphmatica remembers up to the last 999 equations you typed in or loaded from a file. You can save your work for use in a later session or with any text editor.
  2. Advanced equation parser follows mathematical rules--not the computer's. You can use implied multiplication, a complete library of math functions (including trig), and even leave out those annoying parentheses in appropriate places. Forget about isolating variables before graphing! Graphmatica will isolate the dependent variable for you, if possible, and even graph many relations that can only be specified as implicit functions.
  3. Powerful graphing engine. You can choose between six styles of graphing: regular Cartesian, polar, parametric, and slope-field and initial-value approximations for up to fourth-order ODEs (and fourth-order linear systems as well), all detected automatically based on which variables you use in your equation. Cartesian inequalities are supported as well. Most graphs appear instantly on Pentium-class machines.
  4. Data plotting and curve fitting support make it easy to highlight points on a curve or enter experimental data sets and find the equation of best fit.
  5. Easy to use controls, including a toolbar, right-click popup menus, the status bar, which displays relevant information and help messages, and the Redraw Queue combobox, which lets you select any equation in memory to graph, delete, or edit to form a new equation.
  6. Pause and Point tables options let you see the coordinates of points on your graphs... as they are drawn. The Point tables show values at an interval and precision that you control, so you can get detailed numerical results or practice sketching curves yourself.
  7. Convenient mouse-oriented operations. You can use the mouse to select a new range or view the coordinates of a point, select the initial value for an ODE, and even find the tangent line of a curve or integrate a function without pressing a single key.
  8. Flexible graph paper. Choose between regular graph paper and paper appropriate for trig, polar, and logarithmic functions, at four levels of detail.
  9. Powerful symbolic and numerical calculus features. Find intersections between curves, derivatives, integrals, and critical points for any Cartesian function.
  10. Lots of output options. Graphmatica lets you copy equations, point tables, and graphs to the clipboard [See Edit Menu options for details], and you can choose from two levels of print quality for faster or better printouts when you print your graphs. [See Printing Pictures of your Graphs].
  11. Every automatic option is also user-settable to give you absolute control over your graphs. The Options Settings dialog not only shows you the current settings, but also acts as a master control panel to let you change any customizable option from one dialog box. Your preferences are automatically saved and restored whenever you run Graphmatica (but you can also disable autosave on exit and use the Save Setup Info command to save your preferences manually).
  12. Instructive help topics explain the basics of each type of graph...and included demo files show you examples of each form of equation. See Demo Files for a list of these files.


ELEMENTS OF THE DISPLAY

The toolbar at the top of the window contains buttons that allow you to perform the most common commands with one click of the mouse.

The Redraw Queue combobox serves two functions: first to accept input of new equations (you can type in a new equation at any time as long as you aren't currently graphing one) and second to retrieve old equations from the queue. If you want to enter a new equation, just type it in and press enter or click Graph to graph it. If a previous equation is highlighted on the input line, just start typing to start from scratch or press a direction key to clear the selection and edit it. To retrieve an old equation, use the up and down arrow keys to scroll through the list one equation at a time or click on the icon to the right of the edit field to drop down the list box for mouse selection (if there are more equations in the queue than fit in the box, it will have a scrollbar so you can see them all). You can also select equations just by clicking on their graphs!

The bottom of the main window holds the status bar, which displays help messages from the menus, the result of the latest action completed, the status of a selected equation, and during graphing, the equation being graphed, any warning error messages (if desired), and the pause message. So as not to obstruct the graphs, any message that does not require immediate attention or input will be posted in the status bar.

The Point Tables window (toggled on or off by the Point Tables item in the View menu or the toolbar) shows the coordinates of selected points from the last graph(s) drawn with the option on. You may scroll through this list at will. Select Copy Tables from the Edit menu to copy the text of the tables to the Clipboard, so you can insert them into a document, print them, etc. You can make this window wider or narrower by clicking and dragging its left-most edge with the mouse to until it is the desired width.

The Data Plot Editor occupies the same space as the Point Tables window; you cannot show both at the same time. However, you can toggle back and forth between the two easily using their toolbar buttons.

Finally, there are also several floating dialog boxes which you can display or dismiss as desired:

  • The Variables Panel, which can be displayed from the View menu and allows you to modify the values of parameters without editing the equation(s) manually.
  • The Draw Tangent Line dialog box, accessible from the Calculus menu, allows you to enter or modify the coordinates of the tangent line manually instead of clicking on a point with the mouse.
  • The Integrate Curve dialog box, also accessible from the Calculus menu, allows you to enter the curve(s) and region to integrate over without using the mouse.

You can switch the keyboard focus among the windows (equation editor, Point tables/Data Plot editor, and the various floating dialog boxes) using the standard Windows shortcut Ctrl+Tab. Each press of this key combination will move to the next window in sequence until you cycle back to the starting point.


THE TOOLBAR

Along the top of the screen below the menu bar is the Toolbar. This provides a quicker way to perform a number of tasks that can also be done using the menus, plus a couple of extra tasks. Following is a list of the buttons and their functions (note that Zoom in and Zoom out have different meanings when you have selected a region with the mouse):

New grid | Open an equation list (same as File, New).
Open | Open an equation list (same as File, Open).
Save | Save an equation list (same as File, Save).
Print | Print the current graphs (same as File, Print).
Copy graphs | Copy grid to clipboard in last format selected from Edit menu (defaults to WMF monochrome).
Graph | Draws an equation you typed in or redraws the currently selected equation. Equivalent to pressing Enter.
Pause | Activated only when you are drawing a graph. Clicking this button (or pressing enter or escape) pauses the current graph. When you are pausing, the Graph button becomes ABORT. Click it to quit graphing or Pause again to restart.
Redraw all | Redraws every graph in the queue that is currently hidden.
Clear screen | Clears the graphing screen. Same as selecting Clear Screen from the View menu.
Hide graph | Same as selecting Hide graph from the Edit menu. Hides the graph of the selected equation (but does not remove it from the queue).
Delete graph | Same as selecting Delete Graph from the Edit menu. Deletes the currently selected equation from the queue and the screen.
Zoom in | Same as Zoom In on the View menu.
Zoom out | Same as Zoom Out on the View menu.
Default grid | Sets the grid back to the default specified in your graphmat.ini file, or if you don't have one, "the factory-set" default. This is useful if you have selected a weird range that is really large or small, not centered, or not squared and you want to quickly resize the grid to reasonable proportions.
Coord cursor | Turns on the coordinate cursor, which allows you to use the arrow keys to move the crosshairs and find the numerical coordinate of any point on a graph using the mouse.
Find derivative Draw tangent Integrate | Same as the Calculus menu items
Point Tables Data Plot Editor | Same as the View menu items


GRAPHING HELP TOPICS

Graphing Equations: Basic Knowledge

These help topics apply to all types of graphs.

  • Entering Equations
  • Operator Table
  • Drawing Graphs
  • Error Messages

Graphing Equations: Advanced Topics

These topics describe advanced features available for most types of graphs.

  • Specifying a domain for graphs
  • Using Free Variables
  • Graphing Families of Functions

Different Graphing Techniques

Each topic describes how to draw one type of graph. Overview provides a brief description of each type with a link to the full topic.

  • Overview
  • Normal Cartesian coordinate graphing
  • Implicit Cartesian Functions
  • Graphing Inequalities
  • Data Plots
  • Polar-coordinate Graphing
  • Parametric Graphing
  • Differential Equations
  • Systems of ODEs


ENTERING EQUATIONS

There are few restrictions on the form of your equations, and those are probably pretty familiar to you if you have ever worked with BASIC.

Your equation must include: *

  • exactly one dependent variable (y, x, or r)
  • exactly one equality or inequality operator (=, <, <=, >,or >=)
  • some sort of expression on each side of the equals sign

The rest is up to you. You can also include:

  • as many instances of the independent variable (x or t) as you like, or none.
  • special free variables a, b, and c
  • constants (decimal numbers, pi, d, and e are valid)
  • basic math operations (+, -, *, / for division, ^ for exponents). Multiplication can be implied.
  • nested parentheses to any extent
  • trigonometric, exponential, and other functions
  • a domain, which may be open or closed on both sides
  • a comment, so you can make notes to yourself or others

(* Parametric equations, because they are inherently different from most others, have different requirements which are explained in detail in Parametric Graphing. Also, note that many implicit Cartesian functions can be graphed even though they contain multiple references to both x and y.)

For an exact list of these operators, see the Operator Table.

The order of operations is the standard algebraic left to right of:

  • Functions
  • Parentheses
  • Exponents
  • Unary minus (-)
  • Multiplication and division
  • Addition and subtraction

In order to simplify your expressions, Graphmatica supports implied multiplication, as in 3x or 5(2x+3). It will handle constants followed by identifiers without a space in between, but you must separate alphabetic identifiers with a space, paren, or an arithmetic operator (except for the single special case "xy"). In addition, numbers which follow a variable or function must be separated from it by an operator or space, in order to support variables and functions with numerals in their names (currently only d2x, d3x, etc.)--x3 would have to be expressed as x*3 or x 3.

You also do not have to surround arguments to functions with parentheses in most cases. If you choose not to use them, the first term following the function name (e.g. up to the first + or - sign outside of parentheses) will be taken as the argument.

For brief or in-depth information about each of the types of graphs Graphmatica supports, read the Overview of Graphing Techniques.


Operator Table

OPERATORS

Graphmatica uses an operator set almost identical to BASIC's, with several additions to make it more powerful and user-friendly. Almost all of the math functions provided in the C library are available. The supported operators, functions, and variables are as follows:

Operator | Meaning
= | equals sign
< > | strict inequality
<= >= | less than or equal, greater than or equal
+ | addition
- | subtraction
* | multiplication
/ | division
^ or ** | Exponentiation
| | | Absolute value of expression between "|" characters
[( )] | Parentheses*
; (semicolon) | Separate halves of a parametric equation
' (single quote) | Make rest of the equation a comment
{m, n} | Specify domain**

* parentheses may be nested to any extent, but the parser won'tdifferentiate between ( and [.
**m is the start of the domain and nis the end. Either end may be left open by omitting an operand.

Function | Meaning
abs | absolute value (same as | | operator)
acos, asec | arc cosine (inverse cosine), arc secant
asin, acsc | arc sine, arc cosecant
atan, acot | arc tangent, arc cotangent
ceiling | least integer greater than the argument
cos | cosine
cosh | hyperbolic cosine
cot | cotangent (1/tan x)
csc | cosecant (1/sin x)
exp | Euler's number to the given power
floor | synonym for int (greatest integer less than or equal to the argument)
gamma | The statistical function Γ, defined by the recurrence relation Γ(x+1) = x Γ(x)
gammaln | The natural logarithm of the gamma function. This may be used to prevent overflow when the desired expression is actually something like gamma(x)/e^x.
int | greatest integer ([x] notation not supported)
ln, log | natural logarithm, logarithm base 10
max(a,b) | maximum (greater of the two arguments)
min(a,b) | minimum (lesser of the two arguments)
rand | pseudo-random (time-based) number between 0 and arg
sin | sine
sinh | hyperbolic sine
sec | secant (1/cos x)
sqrt (sqr) | square root
step | Heaviside step function: step(x) = 0, for x < 0, 1/2 for x = 0, 1 for x > 0
tan | tangent
tanh | hyperbolic tangent

Note that you may also define your own functions using the Functions item in the Tools menu. You may reference these functions in the same way as the built-in ones, except that you must always use parentheses around the argument to custom functions, while they are optional for built-ins.

Variables | Usage
x, y | rectangular coordinates
r, t | r and θ in polar coordinates
x, y, t | x and y as functions of t in parametric form
t, x, dx | dif-eq mode, solves first order ODE*
x, y, dy | (alternate notation)
d2x, d3x... | or higher order ODEs**
t,x,y,z,w,dx...dw | systems of ODEs
t,x1...x4,dx1...dx4 | (alternate notation)
a, b, c, j, k | user-settable free variables

*dx is actually dx/dt in dx/dt = f(x,t)
**d2x is d²x/dt²

Constant | Value
d | converts degrees to radians = π/180
e | Euler's number = 2.718...
pi (or p) | π = 3.14159...

Note: by default, all trig functions work in radians, not degrees. You can convert using the constant d:

  • sin (45d) = sin (π/4)
  • cos (x*d) = cosine of x, in degrees

You will need to change the range of x to 0 to 360 to get the full graph.


DRAWING A GRAPH

Once you have successfully entered an equation, Graphmatica will proceed to draw it. If warning messages are on, any non-fatal errors that are encountered will be displayed in the status bar. If you want to pause the graph at any time, just click the Pause button, or press ESC or enter on the keyboard. Graphmatica will display the message

Pause at var1=value1, var2=value2. Press ESC to abort or enter to restart...

which displays the current values of the variables in the equation. Since Graphmatica cannot start a new task while it is in the middle of drawing a graph, while you are pausing you have only two options: turn off Pause and continue graphing by Clicking the Pause button again or pressing enter, or abort the graph by clicking the ABORT button or pressing ESC. You may find that you prefer using the keyboard to clicking the pause button with the mouse, because the response time is somewhat better (i.e. graphing will actually stop sooner) when the computer doesn't have to do the 3-D pushbutton effect.

You may work on other applications while drawing or pausing a graph, but Graphmatica will not respond to anything but pause, restart, and abort requests. (It may look like you can select menu items, but they will not be executed. In fact, drawing will stop while you are in the menu, so don't waste your time trying make Graphmatica do anything else while it is graphing.) You may also move or minimize and restore the Graphmatica window. Do NOT, however, attempt to resize the window while you are graphing. Although Windows will not try to stop you, Graphmatica will ignore any attempts to resize the window as this would likely change the size or shape of the grid and render any points already plotted invalid. This will result in a grid which does not fit the size of the window (if this happens, just minimize and restore the window once graphing is completed and Graphmatica will recalculate the screen size properly).

When the graph for your equation is complete, the status bar will change from "Graphing: xxx" to "ON SCREEN: xxx" to indicate drawing is done. Also, the pause button will be dimmed and the other buttons in the button bar re-enabled. If you'd like to start all over with a completely different equation, just start typing (the last equation is automatically selected in the edit field so the text is automatically cleared once you start typing). If you'd rather modify the last equation, click the mouse or press a direction key to turn off the selection and then go right ahead; it's already stored safe and sound in the redraw queue (for more information see The Redraw Queue). Or you can modify any previously entered equation by using the drop-down listbox. (Clicking the mouse on the down arrow icon to the right of the graph prompt drops down a scrolling listbox from which you can view and select equations with the mouse.) You can also use this capability to redraw a graph that is in the queue but not presently on the screen: just select the equation you want and press enter or click the Graph button.

Since you can draw as many graphs on the same grid as you want, Graphmatica does not provide for having multiple grids on screen at the same time. However, if you would prefer to look at two graphs side-by-side instead of superimposed, just run two copies of Graphmatica next to each other. (You can share data between them using the clipboard or by saving and opening graph documents.)


ERROR MESSAGES

Fatal Errors occur when either the parser of the evaluator cannot make sense of and expression you have typed in. They are presented in a popup message box and require you to edit your equation.

Warning Messages are errors encountered trying to evaluate specific point(s). By default they are not displayed but you can toggle this with the Warnings Option.


FATAL ERROR MESSAGES

A number of error messages may be encountered when graphing (apart from messages ingrained in the library functions which I cannot control). Most of them are fatal; the equation cannot be graphed and you must edit it. They will present a popup message box so you know there is a problem.

[Please note that all messages which refer to the variables 'x' or 'y' will actually be 't' or 'r' when you are dealing with a polar equation.]

"Please type an equation in the edit field (or select one from the listbox) first; then press enter or click the Graph button."

You pressed enter on the graph line without selecting or typing in an equation. You need to type in an equation or select one in the list box before you can graph.

"The parser couldn't interpret your equation because of a bad operator or mismatched parentheses. Please edit your equation and try again."

You either left out a paren somewhere, left out one or both of the operands for a binary operation or the argument for a function, or typed some other weird thing the parser and evaluator couldn't digest. Examine your equation carefully and fix whatever seems to be the problem.

"Your equation included a variable or function that Graphmatica does not support, or you mis-typed a function name. Please edit your equation and try again."

Unfortunately, the evaluator isn't set up to return what caused the error, so you'll have to look for it yourself. Check that your equation contains only valid identifiers (see the Operator Table) and that you separated each of them with an operator, space, or some other punctuation.

"The parser couldn't find one of the operands of a binary operation like '+' or the argument to a function you used. Please edit your equation."

The parser couldn't find any identifiers or expressions to use as one of the operands to a binary operation (+, -, *, etc.) or as the argument for a function, like cos(x). All of Graphmatica's functions require one argument following the function name, preferably enclosed in parentheses.

"One or both sides of the equation seems to be blank. Please check that there is an expression on both sides of the equals sign."

Make sure there is some sort of expression on each side of the equation. Obviously, an entry like y= can't produce a meaningful graph.

"No equals sign or more than one found. Press any key to edit equation."

To be a valid and graphable, your equation must include exactly one equals sign [=]. If you get this error, you either left out the = or accidentally typed two or more of them. For parametric equations, there must be an = on each side of the dividing semicolon.

"No dependent variable or more than one 'y' found. Please edit your equation."

Although Graphmatica can isolate ONE 'y' or 'x' variable and graph some relations, it cannot perform the factoring needed to isolate the a variable when both 'x' and 'y' occur more than once. It also cannot plot polar graphs as a function of r instead of t or isolate 'r' when more than one instance is found. If you can adjust the equation so it uses only one instance of the dependent variable, do so; otherwise it can't be graphed. In parametric graphing, this message may also indicate that no 'x' variable was found in the x(t) equation.

"Graphmatica only supports inequalities for single rectangular equations. Please replace the < or > with = and try again."

Inequalities cannot presently be evaluated for polar, parametric, or differential equations. You may still be able to draw the graph if you can express the inequality in rectangular form. Also, the meaning of an inequality operator is ambiguous for an equation containing the "family of functions" parameter a.

"Can't find the inverse of this function of 'y'. Please edit your equation."

You tried to graph an equation like int(y)=x for which y cannot be isolated by taking the inverse of the function. The functions which cannot be isolated are cosh, sinh, tanh, and int. If you can't adjust the equation so this error does not occur, it is not graphable.

"The domain you entered could not be parsed or did not evaluate to one or more constant values. Please edit your equation and try again."

The domain you entered either could not be parsed, or was found to contain a non-constant identifier, like x or y. Valid domains must have at least one side of the range defined and can't contain variables, although any other expression that evaluates to a constant is OK.

"Parametric equation requires that you specify domain! See Parametric Graphing in help file for details."

You typed in a parametric equation (or accidentally hit the semicolon) and neglected to include a closed domain [like {1,6}]. Because the diversity of parametric equations makes it hard to pick a default domain, you have to include one with each parametric graph. [See Parametric Graphing or Specifying a Domain for more help.]

"Not enough initial values supplied to draw graph. Make sure this ODE. includes ## IVs and try again."

Although first-order ODEs may be graphed as a slope-field without providing an initial value, second and higher order equations require that you provide initial values for t, x, dx..., up to the derivative one order less than the highest one in the equation. Make sure that you have specified the right number of valid initial values.

"Drawing flow fields is not supported when using logarithmic graph paper. Change back to linear paper to graph this ODE."

Since it would have required extra work to handle this case, and the meaning of slope on a logarithmic scale is somewhat dubious anyway, I elected not to bother. Please tell me if you have a problem with this.

"Cannot accurately draw the graph of a discontinuous function (like y=w^x, w<0)"

The correct graph of this class of functions has singularities all over the place and thus cannot be drawn accurately using the algorithms Graphmatica normally uses on smooth curves.

"Cannot perform exponential curve fitting on data <= 0."

The exponential equation type fits the linear equation y=ax+b to the logarithms of the data set. Since the logarithm is only defined for values greater than 0, you may not use this curve-fitting technique for data sets that include numbers <= 0.

See also Warning Error Messages


WARNING ERROR MESSAGES

Theses messages apply only to specific point(s) for which a y-value cannot be generated. They will not appear unless you ask for them using the Warnings option and then they appear silently.

[Please note that all warning messages which refer to the variables 'x' or 'y' will actually be 't' or 'r' when you are dealing with a polar equation.]

"Overflow at x=#.##."

Some function or operation generated a number too large to fit into a 8-byte floating point variable. The point at x=#.## was not graphed. This error is not fatal, so the graphing process is continued, but if the message is repeated and no image is graphed, you may need to abort graphing and look at your equation again.

"Division by zero at x=#.##."

At x=#.## your equation included division by zero so that point was skipped. Unless you get this error repeatedly, there's no real problem.

"Can't raise a negative number to a fractional power. [x=#.##]"

Due to the possibility of getting an even root of a negative number (like -16^(1/2) which actually equals the square root of -16), the C Library pow() function refuses to process any arguments like these. This is not a fatal error, and the portion of your graph (if any) where the base is not negative or the power is not fractional should be graphed perfectly. This error also occurs when you try to take the square root of a negative number with the "sqr" function.

"Can't find the logarithm of a negative number. [x=#.##]"

The natural logarithm (ln) and base 10 logarithm (log) functions are defined only on x greater than zero.

"Inverse of abs() not defined on negative numbers. [x=#.##]"

This reminder warning occurs when you graph a curve like abs(y)=x without restricting the domain of the expression equal to abs(y) to be positive.

"Domain error: asin/acos are defined only on -1<=x<=1, acsc/asec on x < -1 or x > 1. [x=#.##]"

The arcsine (asin) and arc cosine (acos) functions are only defined between -1 and 1 (the range of the sin and cos functions). The asec and acsc functions are only defined outside this range.

"Lost accuracy in approximation before reaching value. Solution might not exist."

When processing ODE or Newton's method approximations, Graphmatica sets a limit on the number of iterations to avoid going into an infinite loop in a poorly-behaved (e.g. discontinuous) part of the curve. When this happens you will see this message.

"Curve-fit did not converge within #### iterations; these results might not be accurate. You might try increasing the maximum number of iterations or decreasing the order of the equation."

The curve-fitting process stops automatically when Graphmatica detects that the chi^2 value (variance) of the data set from the fitted curve has stopped decreasing significantly from one iteration to the next. If the maximum number of iterations is reached before the chi^2 value stabilizes (which can happen with some data sets, especially if you are fitting to a polynomial and the maximum order is set rather high), this warning message is displayed to alert you to the fact that there might be a better solution available if you are willing to increase the maximum number of iterations and wait a bit longer for it to be computed. The fitted curve will still be displayed, though.

See also Fatal Error Messages


Specifying a Domain

SPECIFYING THE DOMAIN

Graphmatica allows you to specify the domain of each equation independently. This allows you to draw only a particular part of a graph or change the domain without using the Range or Theta range functions to change the default domain. To specify a domain for an equation, type anywhere on the line the expression

{ m, n }

where m is the start of the domain and n is the end. If you want the domain to start at the default start, leave m out. Then, whatever you change the start of the default domain to, that will always be where the equations starts graphing. To leave the end of the domain open, leave out n. So if the range on-screen is (-10,10), specifying a domain of { ,5} will graph from -10 to 5, and one of {-4, } will go from -4 to 10.

To graph a parametric equation, you must specify a domain that is closed (i.e. one that has neither number left out). When entering a parametric equation, you also have the option of specifying the step rate for the equation by adding a third clause to the domain. ({start, stop, step by})

The domain is parsed like any other expression, so you can use all of the arithmetic operators and functions available in the rest of the equations, as well as numbers and the constants d, e, and pi. The only restriction is that you may not use a variable (including free variables--see the Operator Table for a list) in your domain, since this would yield ambiguous results.

When specifying domains for polar functions, you may find it easier to give the domain in radians as a multiple of pi (such as {-2pi, 2pi}) or in degrees (like {0, 180d}, where d is the built-in constant that converts degrees to radians).


USING FREE VARIABLES

In any equation, in addition to the pre-programmed constants such as e and pi, you can also include the free variables b, c, j, and k which you can define yourself. These parameters are effectively symbolic constants that make it easier to "play around" with the exact shape of the curve without editing the equation extensively.

The values of parameters used in each equation must be specified along with that equation, but if you don't type them in explicitly, Graphmatica will take the value(s) from the Variables Panel and insert this information in the equation for you. If you want, you can type in a value manually using a format similar to the normal domain specifier, for example:

{b: 1}
{c: -1/2}
{k: -pi/4}

As usual, enclose the "domain" in curly braces. You must specify which parameter you want to set by its name (b or c) and a colon, followed by a value, which can be any expression that evaluates to a constant. You may not use other parameters either, since this could become self-referential.

The special free variable a is described in Graphing Families of Functions.

You can change the value of a free variable after you have typed in equations and Graphmatica will automatically update and redraw all of the graphs using it with the new value. See Variables Panel for details.


GRAPHING FAMILIES OF FUNCTIONS

The free variable a is fundamentally different because you can specify not just a single value, but a range of possible values that it can take. This allows you to graph families functions or level curves of a 3-D surface easily. For instance, y = a*cos(x) will graph cosine curves of varying amplitudes, and x^2+y^2 = a will draw level curves of the surface f(x,y) = x^2+y^2.

You don't even need to know the syntax described below to use this feature, since you can enter the needed values in the Variables Panel and Graphmatica will insert them in the equation for you. If you don't specify a range for a, Graphmatica will take the current values from the Variables Panel for the start of the range, end of the range, and amount to step by. Graphmatica starts by graphing the function with a set to the start of its range, and then increments a by the step value and draws another graph until a exceeds the end of its range. (You can also specify a negative step value as long as the end of the range is less than the start.)

To type this information in on the command-line, add the domain specifier {a: start, end, step} to your equation, replacing start, end, and step with the desired values. For example, y=a*cos(x) {a: 1,6,2} will draw graphs of y=cos x, y=3cos x, and y=5 cos x.

Although the program does not put any limit on the number of curves in the "family" you can graph, be aware that this feature uses memory rapidly. In any case, the screen will likely become too cluttered to be useful if more than ten or so graphs are drawn, so try to make your step rate proportionate to the size of the range.

Note that your equation may be rejected, even after drawing the graph for some values of a, if the program detects an error that makes the equation ungraphable for another value of a. For instance, y =(1-a)^x {a: 0,2,1} cannot be graphed because for a=2, it does not describe a continuous function.

The other free variables b and c are described in Using Free Variables.

You can change the value of a free variable after you have typed in equations and Graphmatica will automatically update and redraw all of the graphs using it with the new value. See Variables Panel for details.


OVERVIEW OF GRAPHING TECHNIQUES

Graphmatica offers the following methods for graphing equations. Each method is detected automatically by the use of distinctive variables.

Normal Cartesian (rectangular) Functions Typical graphs like y=x^2 including only the variables x and y. Also includes relations like x^2 + y^2 = 36.

Implicit Cartesian Functions Implicit functions are those in which neither x nor y can be isolated as the dependent variable. These are only supported for Cartesian coordinates. Includes relations like x^2-xy+y^2=10.

Inequalities Most Cartesian equations can be graphed as inequalities as well by replacing = with <, <=, >, or >=.

Example: y < x^2

Single Points To graph a single point, just specify the x and y coordinates as shown below.

Example: x = 4; y = 2 plots (4,2).

Data Plots Enter a set of (x,y) coordinate pairs, and optionally find the best-fit curve to predict the data.

Polar Graphs Graphs using the polar coordinate system and the variables r and t (for theta).

Example: r=cos t

Parametric Graphs Graphs using the rectangular coordinate system but specified by equations of a third variable or "parameter," t. These graphs must include a domain.

Example: y = sin t ; x = cos t {0, 2p} draws a circle.

Differential Equations Approximate numerical solutions to differential equations; use variables dx (for the differential dx/dt), x, and t, or dy, y, and x. You can draw slope fields for first-order equations, and initial value approximations for first-order up to fourth order ODEs.

Example: dx = x^2 + t plots a slope field for "dx/dt = x^2 + t."

Example: d2y + y = 0 {0,0,1} plots a sine wave, the solution to "d²y/dt² + y = 0" with initial values y=0 and dy/dx =1 at x = 0.

Systems of ODEs Approximate numerical solutions to linear systems of differential equations, up to fourth order; use variables dx,dy,dz,dw (for the differentials dx/dt, etc.), x,y,z,w, and t, or x1...x4 and t.

Example: dx = 3t-y ; dy = y-x {0,0,1} plots the solutions x(t) and y(t) for initial values x=0 and y=1 at t=0.

Graphmatica comes with pre-defined equation lists demonstrating each of these graph types. See Demo Files for details.

While some curves can be drawn by Cartesian relations, polar coordinates, and parametric functions, each technique is better suited for some graphs than for others. For instance, a circle with radius 5 around the origin which can be produced by the equation

x^2 + y^2 = 25

can be drawn faster by the parametric equations

x = 5 cos (t) ; y = 5 sin (t) {0, 2p}

and can be drawn faster and much more simply by the polar graph

r = 5.


NORMAL CARTESIAN EQUATIONS

Graphmatica's equation parser will automatically isolate the variable y wherever it is in the equation. It will graph some relations, like circles (x^2 + y^2 = 36) and ellipses (x^2/3 + y^2/4 = 20), as well as hyperbolas, sideways parabolas (x = y^2) and many other conic sections. (Consult a good Algebra II textbook for help on their formulas.) The only limitation for functions is that there must be a single occurrence of one of the variables y or x. Graphmatica cannot perform the factoring needed to isolate the variable y when it occurs more than once (e.g. x+cos x = y^2+3y). The relation graphing module (for graphs which may have more than one y-value for a given x value) works like this: if in isolating the y in an equation Graphmatica finds an even power of it (i.e. y^2), it makes two equations for that graph, one with the positive and one with the negative root. This method by no means covers all possible relations, but it is adequate for the most common.


IMPLICIT CARTESIAN FUNCTIONS

Cartesian equations in which neither x nor y can be isolated (because there are two or more instances of each variable) are known as implicit functions. Since there is no easy way to solve these equations for either variable, the standard equation graphing routine cannot be used in this case. Instead, the equation is transformed into an ordinary differential equation and plotted by approximating the solution to the ODE. Because the program only searches for initial values for the approximation within the current grid range, the grid range at the time you enter the equation is very important to the success of the graph. If you have an idea of where the graph should appear, you should focus the grid on that region before you enter the equation.

You can draw almost any graph using an implicit function. However, because the transformation into an ODE requires computing the partial derivatives of the original implicit function with respect to both x and y, this method is not supported when your equation contains non-differentiable functions like int() and abs().

I am still perfecting the code that searches for initial values for the ODEs. (Because many graphs consist of disjoint “lobes” and the ODE approximation cannot be run through sections of the curve with vertical slope, often multiple initial values must be found in order to draw the entire curve.) Under some circumstances, the initial value search may miss one or more “lobes” of the implicit function. If your graph looks incomplete, you may want to try deleting the equation, adjusting the range, and re-entering it to see if you can improve the results of the search for initial values.


GRAPHING INEQUALITIES

You can graph rectangular-coordinate inequalities by replacing the = sign with <, <=, > or >= for many simple functions and relations. This feature is presently only available for Cartesian graphs.

The region that solves the inequality is hatched in with the graph color. (For <= or >= the curve is drawn as a solid line, but for < or > the curve itself is dotted to indicate a strict inequality.) In most cases, asymptotes are detected and a boundary added there as appropriate, so graphs like y < tan x or xy > 1 are drawn correctly. In addition, the valid domain of the function being graphed is detected automatically, so y > log x, for instance, shades only the first and fourth quadrants.

To accommodate intersecting regions, the graphing routine alternates between \ and / hatching. Best results will be obtained when you graph no more than two overlapping inequalities on the same screen.


DATA PLOTTING AND CURVE FITTING

In addition to algebraic equations, Graphmatica allows you to enter and plot data points. When you have finished entering your data, you can attempt to find the best fitting curve as well with a single click.

The Data Plot Editor provides basic tools to enter a set of coordinates to plot. To enter data in any cell in the grid, click on it and start typing to overwrite any data already in the cell, or double-click to position the cursor after the last character already in the cell. You can use backspace to correct mistaken entries.

You can also optionally use the other controls at the top of the pane to modify other aspects of the current data plot or switch to a different one.

Plot | Use this combo box to change the name of the current plot or switch to viewing the points for another plot in the grid control. You can create any number of data plots on the same grid, but you can only edit one plot at a time.
New | Creates a new data plot. The plot is given the generic name "Data plot," which you can change immediately to something more descriptive. (Names can be up to 20 characters.) New plots also get the next symbol and color in the rotation, which you can also customize if desired.
Del | Deletes the current plot.
Symbol | Allows you to choose between the different symbols (circles, squares, or diamonds) available
Color | Allows you to choose a different color for the plotted points.
Insert Point | Inserts a blank row in the grid at the cursor position
Delete Point | Deletes the row (coordinate) at the cursor position

Note that if you prefer, you may import a list of tab-delimited points from a text editor or spreadsheet using the Paste Data Plot operation.

When you have entered all of your points, you can fit the data to a polynomial equation using the Curve Fit button. The resulting equation is graphed automatically, and annotated with the following values describing the results of the curve-fit:
r | The correlation coefficient for the fit. The value is between 0 (no correlation) and 1 (a perfect fit).
chi2 | the sum of the squares of the differences between the curve and the actual y coordinates for all points
iterations | the number of iterations it took to converge to that result.

The Options button brings up the Curve Fit tab of the Settings dialog box, which allows you to adjust the parameters of the curve-fitting algorithm.


Drawing Polar Graphs

INTRODUCTION TO POLAR GRAPHS

Polar coordinates are a fundamentally different approach to representing curves in two-dimensional space. The concept is pretty easy to grasp graphically, but if you have never used polar coordinates and want to understand them, you should probably read the section below.

The traditional Cartesian method relies on an x and a y coordinate to mark how far a point is from the axes in two perpendicular directions; polar coordinates plot the location of a point by one coordinate represented by the Greek letter theta which is simplified to t in Graphmatica and another called r. The t tells what direction to go in from the origin, and the r tells how far to go out in that direction to reach the point. The direction is measured in radians as an angle starting from the positive side of the x-axis and turning around counter-clockwise (like measuring the angle the hand on a clock has traveled starting at the 3 o'clock position and going backwards). There are 2pi radians in a complete circle, corresponding to 360 of the degrees you're familiar with. To put a polar coordinate into Cartesian terms in order to graph it, we use the equations: x = r cos t and y = r sin t.

To make a graph using polar coordinates, we let theta be the independent variable and calculate a distance to plot out from the origin as we let the angle sweep around in the positive direction. The domain for the graphing is 0 to 2pi (the first complete circle in the positive direction), but you can easily change these values using the Theta Range function in the Options menu. Polar graphs can be typed in the equation combobox just like normal graphs. The only difference in what you type, and the way Graphmatica detects a polar graph, is that you must use the variables t and r instead of x and y. The restrictions are still the same: you can have one and only one instance of the dependent variable r, although it can be located almost anywhere in the equation. You can embed the r in a term like r^2 to graph functions that cannot be simplified by normal means and Graphmatica will evaluate both positive and negative roots automatically. You should watch as your graph is drawn, because often the direction it is going is almost as important as the figure it draws. (When you have a "double" equation with r^2 in it, though, note that the positive roots are drawn first and then the negative roots are drawn: theoretically they should be drawn simultaneously but this is not practically possible.)

Please note that the x and y coordinate ranges and the range for the variable theta function completely independently; in normal Cartesian graphing, theta's value is irrelevant, and in polar graphing, theta controls the domain of the graph, but the x and y ranges still control the physical screen you see. If you want to change your view of a polar graph, you use the scale or range functions just as you would normally.

See also Specifying Domains for hints on how to specify an angular domain.


Drawing Parametric Graphs

INTRODUCTION TO PARAMETRIC GRAPHS

Parametric graphing, like polar graphing, uses a different method of calculating points on the plane to come up with curves that may be difficult to compute using normal rectangular coordinates. They are unique in that the Cartesian x and y coordinates are calculated based on a third variable (the "parameter" of x and y) which is traditionally called t (not to be confused with the t used by Graphmatica to represent theta). t is allowed to increase from the start of the domain you specify to the end. At each value, the functions x(t) and y(t) are calculated to give an (x,y) coordinate which is graphed. Graphmatica then connects these points to form a smooth curve--if something you graph begins to look jagged, you probably need to adjust the fineness. (Parametric graph fineness is linked to the same fineness control as Cartesian and polar graphing, and should be decent at the default fineness value, but if you need to, you can increase or decrease this value. Be aware that this will affect the fineness of non-parametric graphs as well. See Adjusting the Fineness for details.)

To enter a parametric graph, you need to remember four basic parts: the x(t) and y(t) functions, the semicolon between them (this is how Graphmatica knows it's a parametric graph), and the domain for t.

       semicolon
x-function | y-function  domain
    |      |     |         |
    x = 2t ;  y = 2t^2  {-10, 10}

Although as in all other Graphmatica equations you don't need to solve for x and y (i.e. t = 5x would be OK), only one x and one y can appear in the whole equation, and "double" equations like x^2 = t where Graphmatica would normally solve for both the positive and negative roots are not supported (you can enter them but only the positive root will be found). You can type the x and y equations in either order, as long as they are separated by a semicolon, and the domain will be recognized anywhere on the line. You must specify a domain for each parametric equation! The variety of curves that can be drawn with parametric equations is great and makes choosing an appropriate default domain impossible. Some curves (like those including the circular functions sine and cosine) tend to work best over a {0,2pi} domain, like polar graphs. Others will match up better with the default domain of the normal graphs, the size of the viewing area. Some have a very compact domain, between say 0 and 1, where they will appear on the screen. If you over- or under-estimate the domain, you can always abort the graph and edit your equation.


Graphing Differential Equations

DIFFERENTIAL EQUATIONS

Graphmatica also provides the ability to approximate the solutions of up to fourth-order ordinary differential equations. [I will not provide background material on this function because if you need to use it, you probably know more about differential equations than I do.] To let the parser know you want to graph a differential equation, you must include the differential dx (which actually represents dx/dt) as one of your variables. If you specify an equation as

dx = f(x,t)

where f(x,t) is some combination of the variables x and t (such as x^3 + t or t * x ) and do not include the domain operator { , }, the program will draw a slope field for dx/dt = f(x,t), with t as the horizontal axis and x the vertical.

If you do include a "domain" {m, n} , however, it will not be interpreted as a domain but will instead indicate that you want to graph a specific solution to the initial-value problem x(m)=n by Runge-Kutta approximation.

Graphmatica will also solve second, third, and fourth order initial-value problems using a Runge-Kutta method for linear systems. To specify a second or higher order derivative, use the variables d2x, d3x, or d4x. Remember that for an nth order equation, you must also specify n+1 initial values. You can type these into the equation using the "domain" notation described above; the order of values is t, x, dx, d2x, d3x. Thus d2x + x=0 {0,0,1} graphs a sine curve as the solution to d²x/dt² + x = 0 for x = 0 and dx/dt = 1 at t=0.

Note: You can also use the notation dy = f(y,x) if you prefer; both sets of variables are automatically recognized as differential equations.

You can also choose the initial value point and first derivative using the mouse. See Setting the initial value... for details.

The algorithm used to compute the approximation is the 4th order Runge-Kutta routine with adaptive step size documented in chapter 15 of Numerical Recipes in C.


SYSTEMS OF DIFFERENTIAL EQUATIONS

Graphmatica can also approximate the solutions of up to fourth-order systems of ordinary differential equations. [Refer to your local textbook for more background information.] You can pose your system in either of two sets of variables: { t, x, dx, y, dy, z, dz, w, dw} or { t, x1, dx1, x2, dx2, x3, dx3, x4, dx4 }. In each case, t is the independent variable, and the variables dX are the derivatives dX/dt. You specify the complete system in a manner similar to parametric equations, namely (for a fourth-order system):

dx=f1(x,y,z,w,t); dy=f2(..); dz=f3(..); dw=f4(..) {t0,x0,y0,z0,w0}

where f1...f4 are some functions of the variables x,y,z,w, and t, and x0...w0 are the initial values of the system at t0. (You need not isolate the differentials on the left of the equals sign, but you can only use one per equation.) Separate equations with semi-colons, and enclose the initial values in curly braces.

If you want to graph a third- or second-order system, just leave out the equations for dw, or for dz and dw, and use the appropriate number of initial values instead.

Note that to simplify the process of parsing the system and associating each equation in the system with a graph, the order of equations dx, dy,dz,dw (or dx1, dx2, dx3, dx4) is required, and the program will not graph a system whose equations are listed in the wrong order.

The values for each curve in the system are calculated simultaneously, but only the curve for x(t) is drawn as it is calculated; the others are displayed as soon as calculation is finished. Each curve plots in a different color, which corresponds to the color of its equation in the system when it is listed in the status bar.

You can also choose the initial value points using the mouse. See Setting the initial value... for details.


Redraw Queue Help Topics

Using AutoRedraw and the Redraw Queue

The Redraw Queue

Using AutoRedraw

Selecting an Equation

Hiding a Graph

Deleting an Equation

Clearing the Whole Queue

Editing Graph Documents


THE REDRAW QUEUE

Every time you type in an equation, the character string you typed and the program's internal representation of that equation get stored in the redraw queue. From this queue, or list, you can call up any of the equations in your current graph document to edit or draw again. The equations in the queue are stored in an order that puts the most-recently-used at the beginning and the least-recently-used at the end. Hopefully, when the queue fills up, the equations that are bumped off the queue at the end will be the ones you won't miss very much.

The screen clears whenever you execute a Range or Scale command. If you execute either of these functions or clear the screen accidentally with the Clear menu option, you can redraw the last equation (if AutoRedraw hasn't already) by selecting Last Graph from the Redraw menu, or you can redraw all of the equations in the queue using the Redraw All menu option or button. Note that the redraw all function does not care which graphs were on the screen before it was cleared; it just redraws all the graphs in the redraw queue that are not currently on the screen. If you cleared the screen manually, and have not changed the size of the grid before you choose Redraw All, Graphmatica will detect which graphs have already been calculated using that grid and redraw them without recalculating their points (this is faster than plotting the graph from scratch).

You can scroll through every equation you have entered into the redraw queue using the combo box at the top of the screen. When you select an equation using the arrow keys or mouse, Graphmatica displays its current status (on or off screen) and the text of the equation in the same color the graph was drawn in at the bottom of the screen in the status bar. Press the down arrow key or pull down the listbox with the mouse to scroll back one equation. Press the up arrow key or button to scroll back up the list if you want to. When you have found the equation you want, press enter or click on it and press enter or click the Graph button (do not modify the equation) and the graph will be redrawn. Afterwards, the equation will be displayed for editing, except now it is at the head of the queue.


USING AutoRedraw

Whenever you change the scale to look at a graph in greater detail or from farther back, or you shift the range of the axes so that the graph you just drew will be centered, the graphs on screen must be recalculated over the new range.

As its name suggests, AutoRedraw will redraw the equations on screen automatically when you change the scale or range. If your machine is an older, slower one and you don't want to wait for the graphs to be redrawn, you can abort the redraw by pressing ESC twice.

You can limit the number of equations AutoRedraw draws by reducing the number on the line

AutoRedraw On--Draw Last ___ equations

in the Options Settings dialog box. This can be anything from 1 to 999, the maximum number of graphs. If this number is greater than the number of equations in memory, all graphs on screen will be redrawn. The default is 25.

Finally, you can turn off AutoRedraw completely by selecting AutoRedraw under the Options menu.


SELECTING AN EQUATION

Once you have entered an equation, you can easily pull it up and manipulate it again at any time. To select an equation in the redraw queue, do one of the following:

  • Using either the down arrow key or the mouse, highlight the equation in the redraw queue combo-box. You can also select the equation by retyping it in the edit field, but it must match exactly.
  • If the equation's graph is currently on screen and is not completely covered by another graph, just click on the curve; the corresponding equation will automatically be selected in the listbox (This works for all graphs except slope-fields. However, you must click on the curve, even if the graph is an inequality.)


HIDING A GRAPH

Sometimes the graph screen may get a little cluttered, but you don't want to clear it and redraw most of the graphs just to get a couple of them off the screen, and you don't want to delete the offending equations completely.

In this case, just select the equation you no longer want to see and choose Hide Graph from the Edit menu. The graph will disappear from the screen immediately, but its equation will remain in the same place in the queue so you can refer to it later.

Shortcut: Right-clicking on a curve will bring up a popup menu with Hide Graph in it as well.


DELETING AN EQUATION

If you enter an invalid equation that can't be graphed, Graphmatica will automatically prevent the equation from being added to the redraw queue. But sometimes, you may need to trim unwanted equations from the redraw queue (for example, before saving a list of equations).

To delete an equation, first select it, and then choose Delete Graph from the Edit menu. If the equation is currently on screen, its graph will disappear immediately.

See also Clearing the Redraw Queue for how to clear the entire redraw queue at once.

Shortcut: Right-clicking on a curve will bring up a popup menu with Delete Graph in it as well.


CLEARING THE REDRAW QUEUE

To clear the entire redraw queue, simply select Delete All Graphs from the Edit menu. All the equations in the queue will be deleted.

This command also clears the screen and the graph titles and annotations, if there are any. Except for the grid settings and special options, which are left alone, it is equivalent to creating a new graph document.

See also Deleting an Equation for how to remove a single equation from the queue.


Editing Equation Lists

EDITING GRAPH DOCUMENTS and GRAPHMAT.INI

Graphmatica does not really provide facilities for maintaining equation lists; although you can edit an equation, delete old ones that are no longer needed, and change the order of equations by redrawing selected graphs, determining the precise order of equations in the list is difficult since they are dynamically shuffled each time an equation is entered or redrawn to make Graphmatica more interactive. However, the equation list is just a text file whose structure is virtually identical to the win.ini file; you can create or modify one with virtually any editor. The structure goes like this:

[saved-setup]
[labels]
title = xxxx    any character string
left = xxxx
right = xxxx
xaxis = xxxx    label for x axis (default is "x")
yaxis = xxxx    label for y axis (default is "y")

[annotations]
x0 = #.##    position of label
y0 = #.##
text0 = xxxx    any character string

...

x9 = #.##    replace '0' with 1-9 for more...
y9 = #.##
text9 = xxxx

[grid]
left = #.##    any decimal number
right = #.##    or "auto" to autoscale
top = #.##
bottom = #.##

[options]
paper = polar, trig, rect, slog [#.##], or llog [#.##]
detail = none, axes, dots, or grid
autoredraw = on or off    "on" or "off"
maxannote = ###    any integer 1-999: max # of annotations
maxeqs = ###    any integer 1-999: max # of equations kept
autonum = ###    any integer 0-maxeqs: how many to redraw
legends = on, off, custom, or scale.
xlegspace = #.##    spacing between grid legends
ylegspace = #.##
ylegpos = center or above    y-axis legend position relative to gridlines
winpos = left,top,right,bottom
color = 1, 2, or mono    colorscheme 1, 2, or monochrome
widelines = on or off    draw graphs with wide lines
widelinewidth = ##    width in pixels of wide lines (default 2)
gridlinewidth = ##    width in pixels of gridlines (normally 1)
drawdots = on or off    draw graphs with dots, not lines
autosquare = on or off
autorange = on or off
labels = on or off
scrollbars = on or off
tables = on or off
tablecols = ##    max number of graphs per table
tablewidth = ###    width in pixels of point tables window
tablecolwidth# = ##    width of each point tables column in pixels
tableincr = #.##    increment between points in tables
tabledecimals = #    number of decimal places to display in tables
warnings = on or off
defaultdirectory = path    Starting directory for Open and Save dialogs
defscale = #.##    any decimal number
fineness = #.##
tstart = #.##
tstop = #.##
cfmaxorder = #    maximum order of polynomial for curve fitting
cfmaxiter = #####    maximum number of iterations to run curve fit
copywmf = on or off    enable Copy WMF items in Edit menu
autosavesettings = on or off
invertinequalities = on or off    Invert the shading of inequalities

[equations]
up to maxeqs equations, each up to 250 characters, each on a separate line.

[eqcolors]
graph# = ##    colors for each of the equations above

[dataplot]
numpoints = ###    number of points in the plot
color = #
shape = #
#.##    #.##    numpoints tab-delimited x and y coordinates

The [saved-setup] tag tells Graphmatica to reset all options to their defaults before loading the new options. It should be left out if you want the current options at the time of loading to be used. The [labels] section specifies the title and y-axis labels. The [grid] section gives the left, right, top and bottom coordinates of the grid. Type "auto" for any one to auto-scale that coordinate based on the other three. Type auto for both the top and bottom to auto-scale the y-axis so the top and bottom coordinates are equal and opposite.

You can omit any item or even a complete section if you don't want to change the default. Type exactly as specified above, including the brackets "[ ]" around the section headings, and replacing the underlined portions with your own values. If you don't know or don't care what the value is for an option, just leave the line out. Don't worry about capitalization, extra spaces, or even extra blank lines. (However, each entry must be on a separate line or some may be ignored.) You can put the options and sections in any order ... the only requirement is that the [saved-setup] tag must come first and the [equations] section must come last, if there is one. Invalid options are also ignored.

If you want to create a file with no titles or options, simply type the "[equations]" header and then type all of your equations. Each equation must be on a separate line.

The GRAPHMAT.INI file, which is loaded whenever you start Graphmatica, uses the exact same format... when you choose the Save Setup Info command, Graphmatica simply saves the setup file as it would an equation list, except the [labels], [annotations], and [equations] sections are omitted.


File Menu topics

File Menu

New | Ctrl+N | Creating a New Graph Document
Open | Ctrl+O | Opening an Existing Graph Document
Save | Ctrl+S | Saving a Graph Document
Save As |
Save Setup Info |  | Saving Setup Information
Page Setup |  | Printing Pictures of Your Graphs
Print | Ctrl+P |
Exit |  | Quit Graphmatica for Windows


CREATING A NEW GRAPH DOCUMENT

To start over from scratch with a clean grid and the default settings, choose New from the File menu (or the toolbar in the 32-bit version). Currently, Graphmatica supports only one open graph document at a time, so you may be asked if you want to save your current work first.

The new grid will have the default values (from your graphmat.ini file) for all document-specific properties--graph paper, grid range, fonts for text on the grid, etc., even if you modified these values in your previous work. However, global properties (such as color scheme, fonts for the edit box, printout window, and status bar, and most of the settings in the Options menu) will remain the same. If you want to change the defaults for document properties before you restart the program, you need to Save Setup Info when you have things set up as you like them.


OPENING AN EXISTING GRAPH DOCUMENT

To open a previously saved set of graphs, choose Open from the File menu (or the toolbar in the 32-bit version). This will give you the standard Windows dialog box for selecting files, with the default extension of .gr. In addition, you will notice an extra checkbox on the right hand side of the dialog, Merge file with current graphs. When this box is not checked (the default), the file is loaded into a new document and the current document is closed (you may be asked if you want to save it first).

When you do check this box, Graphmatica will merge the contents of the file with the current graphs. Merging files is an inexact process, but this is approximately what will happen:

  • The equations loaded from the file get added to the front of the redraw queue. If there are more than 25 equations total in the file and in memory, the oldest ones in memory will be deleted to make room in the queue.

  • If the file being loaded was saved with setup information, the grid, graph paper, and other document-specific properties will be set to the values in the file. (However, in general settings which are the same as the "factory defaults" will not be recorded in the file, so the current setting in memory will remain in effect.)

  • Labels and annotations in the file override those already in memory.

  • The document keeps its original name

You can also start Graphmatica with an existing ".gr" file by double-clicking on it in Explorer or File Manager. Finally, in the 32-bit version, you can drag ‘n drop files from Explorer onto Graphmatica to open them as well.


SAVING A GRAPH DOCUMENT

To save the set of graphs you've been working on, (including text labels and annotations), simply select Save from the File menu (or the toolbar in the 32-bit version). If you haven't specified a filename yet you will be prompted for one at this time.

To save a graph document under a new name, select Save As... from the File menu.

The Save Graph Document dialog box allows you to select a directory and file name in the standard Windows fashion. The file will be saved with an extension of ".GR" (for GRaphmatica) unless you specify differently.

The Save setup information with file checkbox allows you to choose if you want to save the current grid and special document-specific properties along with the equations and labels. By default it is checked. Note that global properties such as color scheme and the options menu settings are never saved with individual .gr files. Instead, they are saved when you exit in your graphmat.ini file.


SAVING SETUP INFORMATION

By default, Graphmatica saves your settings automatically on exit in a file called GRAPHMAT.INI in the same directory the program file is in. Whenever you run Graphmatica again they will automatically be restored. You can save your settings manually at any time by selecting the Save Setup Info item in the File menu.

Note that certain settings (most notably, grid range and document fonts) are assumed to be specific to the current graph document, and are not saved as defaults unless you request that in their respective dialog boxes.

The setup file is just a special equation list that is loaded automatically when you start Graphmatica. It follows the exact same format as a normal equation list (described in Editing Equation Lists) except that when you save it Graphmatica leaves out the labels and the equations (the important parts of normal equation lists).

When Graphmatica saves your options, to simplify things it only records those options that are different from its own internal defaults. (See Default Settings for a list of these.) If your settings are close to the defaults, your setup file will be very short.


PRINTING PICTURES OF YOUR GRAPHS

To print, select Print from the File menu (or the printer icon in the toolbar in the 32-bit version). This will bring up the standard Windows Print dialog box with a few options that are specific to Graphmatica. You can select a different printer or change the properties of the current printer in the standard ways for Windows 3.1 (click the Setup... button) and Windows 95/NT (select a printer from the droplist or click the Properties button).

You can also control the following options. Your selections will be remembered the next time you print, and will be saved permanently in your graphmat.ini file when your settings are saved after printing.

Draft mode--do not recalculate

When printing in Proof quality, Graphmatica recalculates the graphs at your printer's native resolution. This produces the best possible output. However, since Graphmatica must recalculate each of the graphs on-screen before sending an image to the printer, proof quality printing may take a seconds or minutes longer than draft on 386 or slower computers.

To avoid this extra wait, select the Draft mode checkbox

Note that in draft mode, the quality of the printed output is dependent of the size of the window, because Graphmatica scales the graphs you have already calculated on screen to fill the width of the page. This does not take as much time as proof quality printing, since the graphs are not recalculated. The trade-off in quality is that the smaller your grid on-screen is, the more it will have to be expanded to fill the page and the lower its resolution will be.

Draw graphs with wide lines

If you have trouble distinguishing between graphs and other markings on the grid on the printout, you may want to mark this checkbox. This increases the width of the "pen" used to draw graphs from one pixel to two. If you have selected wide lines in the Options Panel, this checkbox is set by default.

Black and white only

If you do not have a color printer, this box will be ignored. On a color printer, select this option to print graphs in black and white (background is white, all other things are black) to get faster printouts or save wear and tear on your printer. Note: if you have not checked this box and your background color is not white, Graphmatica will offer to print using the white background color scheme instead to help avoid expensive accidents.

Print equation list

Check this box to print the list of equations on the grid below the graph. Checked by default.

color-coded

Check this box to print each equation in the same color as its corresponding graph. This setting is ignored if you do not check “Print equation list” or do not print to a color printer.

CANCELING PRINTING

You can abort any print operation by pressing Escape or clicking the Cancel button in the dialog box. However, on Win 3.1 the Print Manager may not close itself as it should after you abort the print operation, and repeated aborts may make the link between Graphmatica and the Print Manager unstable and prohibit printing.

PAGE SETUP

By default, Graphmatica leaves half-inch margins on all four sides of the page, but the Page Setup menu item allows you to set your own margins. In the 32-bit version it uses the standard Windows 95 Page Setup dialog box which also lets you select the paper size and orientation. In the 16-bit version, you can access this functionality by clicking the Setup... button in either the Page Setup or Print dialog boxes.

The margins you select will be recorded in the .gr file if you save your graph document after printing. Also, when you Save Setup Info after printing, the default margins will be set to those in the current document.

NOTES

  1. You can make the grid lines and axes bolder for high-resolution printing by setting the gridlinewidth parameter in graphmat.ini manually to something higher than the default value of 1. See Editing Graph Documents and graphmat.ini for details on doing this.
  2. The grid in your printout may not look exactly like what is shown on the screen. Although it will have the same dimensions, the grid markings and the legends along the axes may be placed at smaller intervals due to the increased resolution.
  3. In Draft mode, it may look like the graphs are being drawn with wide lines even if you did not select this option. This is due to the fact that when the graphs are scaled up, the lines get thicker as well. There is not much I can do about this.
  4. Many printers do not support scaling styled lines. This means that in draft mode, strict inequalities may print as solid lines instead of dashed.
  5. While you are printing in Proof Quality, Graphmatica gives you progress reports on which equation it is graphing using the status line.
  6. If you are unable to print or unsatisfied with the print quality, you can always print indirectly by doing the following: copy a bitmap or metafile to the clipboard using one of the Copy Graphs options in the Edit menu, then paste the image into your paint program or word processor and print from there. Tip: when copying as BMP, the larger the Graphmatica window, the better this process will turn out. See Edit menu options for details.


Edit Menu Options

Edit Menu: Undo, Copy, Paste, and Editing Equations/Annotations

Undo Grid Range |  | Revert grid range to previous settings
Copy Graphs XXX |  | Copy graphs to clipboard as a bitmap or metafile
Copy Tables Copy Equations Paste Data Plot |  | See other clipboard operations
Hide Graph | Ctrl+H | Hide the graph of the selected equation
Delete Graph | Ctrl+D | Delete the graph of the selected equation
Delete All Graphs |  | Clear the whole queue
Edit Annotations | Ctrl+A | Adding Annotations to the Graph


UNDO GRID RANGE

This feature backs out of the last change you made to the grid range using the Grid Range, Zoom in, or Zoom out commands. This option is always available except when you have just started the program or loaded a file. If you select it twice, it will undo your Undo.


COPY GRAPHS

Graphmatica offers a number of options to copy a graphic of the grid and your graphs to another Windows application to incorporate in another document to print or publish.

Copy Graphs BMP copies the current graphing screen into a bitmap and places it into the clipboard. You can then paste it into virtually any paint program and do whatever you like with the image.

Hint: for the best possible image quality, let Graphmatica size the bitmap for you instead of scaling it with the paint program or word processor. The copied image will always be the same resolution as the grid shown on the screen, so if you want a large picture, maximize the window, or for a smaller size, make the window smaller.

Copy Graphs EMF prepares an enhanced metafile of the graphing screen. Unlike old Windows metafiles, enhanced metafiles are designed to handle text properly so you will see the titles and legends when you use Copy Graphs EMF. Note that you need to paste the picture into another 32-bit program that uses enhanced metafiles (e.g. Word 97) to see the advantages over regular metafiles; otherwise Windows will convert your EMF to a WMF which looks worse than if you just copied a WMF directly (Windows 95 loses the size information attached to the image and Windows NT ignores pen-width settings when doing this conversion).

For each of these options, a cascading menu allows you to choose between color or monochrome:

Color uses the current color scheme (the default gray scheme if in monochrome mode).

Monochrome uses only black and white, so you can insert the image into a document and print it on a normal printer.

Note: for the best possible image quality, Graphmatica re-renders the graphs at the maximum possible resolution for your screen when producing metafile output. If you intend to print the image, you should copy the graphs as a metafile if possible.

Support for standard Windows Metafiles has been disabled by default for the 32-bit version, but can be turned back on if you require the ability to export graphs to older applications that do not handle the enhanced metafile format properly. Use of the WMF format is not recommended, though, as there are serious defects in its text handling capabilities that make it impossible to position annotations, legends, or other graph labels reliably. To enable WMF support:

  • Exit the program if it is running.

  • Add the line “copywmf=on“ to the [options] section of your graphmat.ini file

  • Restart the program. You should now see a “Copy Graphs WMF” menu in between Copy Graphs BMP and Copy Graphs EMF.


OTHER CLIPBOARD OPERATIONS

Copy Tables copies all of the text in the Printout window to the clipboard. If the Point Tables option is not selected, this menu item is disabled.

Copy Equations copies the selected equation (or, if no equation is selected, all of the equations entered in the redraw queue) to the clipboard, from which you can paste the text into any Windows application.

Paste Data Plot pastes a table of tab-delimited x, y coordinates (one per line) into the current data plot (or creates a new data plot if necessary). If the first line cannot be parsed as numeric data, it is ignored. This option allows you to copy and paste two-column regions from a spreadsheet (e.g. Microsoft Excel) rather than re-entering the data in Graphmatica.


ADDING ANNOTATIONS TO YOUR GRAPH

Graphmatica also lets you place up to ten short text labels directly on the graph surface. This allows you to attach annotations to specific points on the graph, such as intersections, zero-crossings, etc. to convey extra information to the users of your .GR files or printed graphs. Note that the annotations are attached to real-number coordinates on the graphing screen, not any specific equations. At this point, determining the text labels is up to you, although in the future there may be the option to label intersection points automatically.

To add an annotation, choose the Annotations item from the Edit menu and type in a short phrase. Press enter or click the Place button to position the text. You will notice that the mouse cursor changes to an arrow dragging a block of text. Click the mouse where you would like the upper-left corner of the text to start. (Or, use the arrow keys and press enter to drop the text at the cursor position.)

You can also edit the annotations list. In the Annotate Graph dialog box, first click on the label you want to modify. To delete it, click the Delete button. To modify the text, change the text in the edit control and click Change. If you want to change the placement of the selected annotation, click the Place button to end the dialog; otherwise press the Close button.

Shortcut: double-clicking on a displayed annotation will bring up the Annotate Graph dialog box. Also, right-clicking on any annotation will display a popup menu with options to edit, move, or delete the annotation.

Annotations are saved with an equation list, as are the text labels, regardless of whether you choose to save setup info with the file. Also, annotations are always displayed; the setting of the Show Labels option is ignored.

You can select the font used for annotations using the Fonts tab in the Graph Paper dialog box.


View Menu topics

View menu: Changing the appearance of the screen

Clear Screen | Ctrl+L | Clearing the Screen
Zoom In |  | Zooming In and Out
Zoom Out |  |
Grid Range | Ctrl+R | Adjusting the Range
Find All Graphs |  | Finding the Range of On-Screen Graphs
Point Tables |  | Printing Point Tables
Data Plot Editor |  | Data Plotting and Curve Fitting
Variables Panel |  | Interactively modifying the values of free variables
Scrollbars |  | Scrolling Around the Coordinate Plane
Title and Labels |  | Showing Title and Labels on-screen


CLEARING THE SCREEN

Since Graphmatica allows you to superimpose one graph on top of another indefinitely, after a while the grid may be a huge mess. At this point you might want to select Clear Screen in the View menu to clear the screen. Everything will be erased and the grid will then be redrawn. By default, up to 25 equations you have typed are still stored and can be redrawn even after you have cleared the screen. In fact, every graph that was on the screen prior to clearing can be recalled instantly and will not even need to be recalculated until the grid size changes.

You can also clear the screen using the Clear button on the button bar.


ZOOMING IN AND OUT

The Zoom In and Zoom Out commands provide a convenient way to focus on a portion of or show more than is visible in the current grid range. You can invoke both of them from the View menu, toolbar buttons, or from the popup menu that appears when you right-click on the background of the grid.

Both commands have different interpretations depending on whether you have already selected a region on the grid with the mouse. (See Selecting a Range with the Mouse for details.)

Zoom In

  1. If you have selected an area with the mouse, zooms in to make this region the new range.
  2. If no area is selected, zooms in on the center of the current grid using the default scale factor. (When you start Graphmatica, the default scale factor is 2.)

Zoom Out

  1. If you have selected an area with the mouse, center the grid on that region and zoom out by the default scale factor.
  2. If no area is selected, zooms out on the current grid using the default scale factor. Similar to Zoom in above.


Adjusting the Range

ADJUSTING THE GRID RANGE

Graphmatica allows you to adjust the start and end of the x- and y-ranges independently, so as to create a perfect fit for whatever function you are graphing. Or, you can constrain one or more of the coordinates to produce a graph with a square aspect ratio without actually figuring out all of the values by hand.

Choose the Grid Range item from the View menu to modify the grid. To create a "custom" grid, estimate the top-, bottom-, left- and rightmost extremities of the graph, and fill in these values in the appropriate edit fields. The new grid may be somewhat expanded or compressed depending on the aspect ratio, but it will show the part of the graph you're interested in the best possible detail.

To create a "square" grid where both x and y axis have the same scale, just leave any of the four coordinates blank and mark the "Autoscale fourth coordinate" checkbox, and the fourth coordinate will automatically be scaled properly to fit the other three. If you pick the least significant coordinate to AutoScale, you can match the other three exactly, framing your graph almost as well as a custom range, but with a more natural aspect ratio. If you want to show the same range both above and below the x axis, you can leave both top and bottom coordinates blank, and they will be generated to fit the current aspect ratio.

Select the Reset button to reset the range to the default grid saved in your graphmat.ini file (the preset default is (-8, auto) – (8, auto)).

You can also easily change the range using only the mouse; see Selecting a Range with the Mouse.


FINDING THE RANGE OF ON-SCREEN GRAPHS

Sometimes after entering an equation or scrolling or zooming around the grid, you may discover that you have lost one or more of the graphs you were interested in. To quickly “find” them again, you can often use the Find All Graphs item in the View menu to adjust the y-axis range to encompass the range of all the plots that are technically on-screen even though their plot may not show up within the current range.

If you find yourself using this command frequently, you may want to turn on the AutoRange feature, which essentially performs the Find All Graphs command for you whenever more than 20% of the plot for a new equation you have entered falls outside of the current grid range.

Note: Find All Graphs only works for Cartesian functions of x. Since the mechanism used to quickly “find” the extrema of the functions on-screen depends on performing Newton’s method, which is only supported for this subset of graphs, functions of y, polar and parametric plots, ODEs, and implicit functions of x and y are not taken into account when computing the bounding range.


PRINTING POINT TABLES

This feature allows you to see a table of coordinates as the program is drawing your graph. When you select the Point Tables option, the rightmost part of the screen is devoted to the Point Tables window: a grid displaying the coordinates of graphs as they are drawn. Later you can copy the contents of the Point Tables window to the clipboard for importing into a document, printing, etc. using the Edit Copy Tables feature. This option is available to aid the drawing of graphs by hand and provide a reference for labeling the axes if you print the graph without the legends on. Also, the results of calculating specific points using the Evaluate, Find Intersection, or Find Critical Points dialog boxes, or finding the area under a curve using the Integrate menu item are accumulated here.

By default, the point tables option is OFF; it restricts the space available for the grid and the process does slow graphing a bit. You can turn it on or off by selecting Point Tables in the View menu.

For Cartesian functions only, Graphmatica can display points for several graphs in the same table to assist in comparing curves point-by-point. Applicable graphs will automatically be added to an existing table until it fills up.

By default, the increment between calculated points in the table is automatically adjusted to be the same as the spacing between grid lines. However, you can customize both the increment between calculated points and the number of graphs allowed in the same table in the PointTables tab of the Settings dialog box. See Tables Options for details.

The width of the Point Tables window (and the individual columns within it) is resizable via the standard Windows metaphor of dragging the column boundaries. When the mouse cursor changes to the left-right arrow, click and drag from side to side to change the width of the selected column or entire table.


VARIABLES PANEL

The variables panel allows you to modify the value of any free variable and update several graphs without editing a single equation.

Edit boxes

In the top ("a=") section,

from | is the value to start calculating the value of the parameter a from.
to | is the maximum value a can take (or minimum if step by is negative)
step by | is the amount to increment a by between each graph.

Uses of a are described in Graphing Families of Functions.

b = | is the value to assign to the free variable b
c = | is the value to assign to the free variable c
j = | is the value to assign to the free variable j
k = | is the value to assign to the free variable k

Uses of b, c, j, and k are described in Using Free Variables.

The other lines are reminders of the values of the built-in constants.

Buttons

Update finds all equations using the free variables you have most recently modified and makes a copy of each one using the new value(s), then graphs the new equations. This allows you to modify the value of a parameter in several equations simultaneously without editing any of them!

Help calls up this help screen


SCROLLING AROUND THE COORDINATE PLANE

To help make it easier to find just the right domain and range for the function you are graphing, Graphmatica provides scrollbars for the grid which let you pan around the coordinate plane. To leave more room for the graphs, these can be hidden or displayed by choosing the Scrollbars toggle in the View menu. To change the default, make sure you choose Save Setup Info from the File menu after selecting the mode you prefer.

Here's how they work: clicking on the arrow buttons scrolls by 5% of the screen, a "page up" or "page down" click on the scrollbar track scrolls by 25% of the grid, and dragging the thumb all the way to the end scrolls by 50% of the grid. Each time you finish a scroll the "thumb" resets itself to the middle of the scrollbar again, so you can keep scrolling indefinitely.

Note that all graphs must be recalculated after you scroll, just as if you had changed the range by any other means. This may be a little slow on something slower than a Pentium. To make it a little quicker when you scroll by dragging the thumb or holding down on the mouse button for a while, only the graph paper is redrawn until you finish scrolling.


View Title and Labels option

SHOWING TITLE AND LABELS

Selecting the Title and Labels option from the View menu or marking the "Show title and labels on-screen" checkbox in the Labels tab of the Graph Paper dialog box makes Graphmatica always leave space on the screen to display the graph labels (title and left- and right-side), as well as display them if you have entered any. When this option is on, the labels will also be copied to the clipboard along with the grid whenever you perform the Copy Graphs BMP command. (By default they are ignored except when you are printing.)


Options Menu topics

Options menu: Viewing and setting special options

Graph Paper | Background Graph Paper and Other Per-Document Settings
Settings | Settings Dialog Box
Theta Range | Changing the Range of Theta
AutoRedraw | Using AutoRedraw
Warnings | Turning Warning Messages on/off
AutoSquare | AutoSquare Feature
AutoRange | AutoRange Feature

The default values of each option are listed in Default Settings of Options


Document Settings Dialog Box

DOCUMENT SETTINGS

The Document Settings dialog box contains the following tabs that allow you to change settings which affect the appearance of the current graph document. You can make your choices for many of these options the default for all documents, but except for the Colors and Fonts tabs, you must use the Save Setup Info menu item to do so.

Graph Paper | Changing the Background Graph Paper
Log Options | Logarithmic Graph Paper Options
Legends | Turning Axis Legends on/off
Labels | Adding a Title to the Graph
Colors | Changing Color Schemes
Fonts | Selecting Fonts for text elements


CHANGING THE GRAPH PAPER

Graphmatica provides several styles of background graph paper to enhance the different types of graphs it can draw. Since Graphmatica allows you to put equations of all types on the screen at once, it does not attempt to guess what kind of graph paper you prefer for each graph you enter. But you can easily switch between styles using the Graph Paper item under the Options menu.

Besides the default rectangular coordinate paper, you can also select the following styles:

Polar paper Lined with radiating circles and straight lines at angles of +/- pi/6 and pi/3 (i.e. every 30 degrees). The traditional choice for polar and some parametric graphs. Select by marking the Polar radio button. (Note that polar and rectangular paper look the same when you set the grid detail level to none.)

Trig paper Rectangular grid, but x-axis is marked in multiples of pi to make it easier to work with trigonometric functions. Select by marking the Trig paper radio button.

Logarithmic Scales one or both axes logarithmically, so that, for instance, 0.1, 1, and 10 are equally spaced. You can set the base and switch between semi-log and log-log using the Log Options tab. If you are using base 10, you will see 9 lines per decade just like real graph paper if there is enough space to display them (generally when less than four decades are shown). Otherwise, the graph paper will look just like normal, with gridlines at integer powers of the base.

You can also control the level of detail of the grid on your graph paper. There are four possibilities:

None | No gridlines are drawn
Reference Dots | Show dots where the gridlines would cross
Gridlines | Dashed lines like real graph paper; this is the default
Solid lines | Same as the above, except the lines are solid

You can control the following "decorative" aspects of the graph paper using the check boxes in the lower-right corner of the dialog box. By default all of these options are selected. If you prefer a grid with less decoration, you can turn some of them off:

Draw Border | Check to draw a border around the grid
Draw Axes | Draw x and y axes when they are on-screen
Arrows on Axes | Draw arrows in the positive direction at the end of the axes. Will not appear unless Draw Axes is checked also.

Remember that even with Draw Axes turned off, legends may still be displayed along the invisible axes unless you turn them off independently using the Legends option.

When you change the style of graph paper, the screen is redrawn immediately. Usually, all of the graphs on it are redisplayed as well, but when you switch to or from log paper, the shapes of the graphs change also, so they must be recalculated. Thus, only the number of graphs you have specified for AutoRedraw will be redrawn automatically after changing to or from log paper.

Since the logarithm of negative numbers is not defined, when you switch to log paper Graphmatica will sometimes have to alter the range displayed. If the low end of the range is below zero, it will be reset to approximately 6-8 major separations below the high end of the range. If the high end of the range is also below zero, you will be required to modify the range yourself before proceeding.

The style of graph paper that you are currently using is recorded when you save a graph document with setup information included, and the appropriate graph paper is automatically displayed when you load the file again (see POLAR.GR, TRIG.GR, and DIFEQ.GR for use of this feature).

Note that the default graph paper saved in GRAPHMAT.INI does not change unless you check the box “Make graph paper settings the default for all graph documents”. Checking this box also saves the current log paper and legends options as the new defaults.


Log Options Dialog

LOG PAPER OPTIONS

Graphmatica supports a number of variations of logarithmic graph paper. In order to simplify the Graph Paper dialog box, these choices have been placed in a sub-dialog, Log Paper Options. To reach it, click on the Log Options tab in the Graph Paper dialog box.

You can set the base for your logarithmic paper using the top part of this dialog. For convenience, base 10 and natural log can be selected using radio buttons, or you can enter an arbitrary (greater than zero, though!) value for the base in the edit field.

You can also choose between bode plot, semi-log and log-log paper using the bottom half of this dialog. (Bode plot paper is logarithmic in scale along the x-axis only. Semi-log means logarithmic along the y-axis only, the x-axis remains linear.)


AXIS LEGENDS

By default, Graphmatica labels the hatch marks across the graph with the number of their coordinate so that you can more easily locate points or find the coordinates of a graphed point. In some cases, though, especially when doing graphs near the axes, the numbers can be confusing and you may want to turn them off. To do this, select Graph Paper in the Options menu. In the Legends tab, select the No legends radio button.

Depending on your grid, window size, and screen resolution, you may find you need to tweak Graphmatica’s Automatic spacing to get the best results. There are two sliders available to do this, one for legends and another for gridlines. Moving a slider to the left makes the spacing coarser (farther apart) and to the right finer (closer together). Note that since you are controlling the minimum spacing, and because in automatic mode the legends are constrained to be 1, 2, or 5 times a power of 10, and the gridlines are constrained to be whole units in between the legends, you may not always see a difference between two settings for a slider depending on the current grid range and window size.

If you find that, even after tweaking, the interval that is automatically chosen for the grid spacing is not well-suited to your task, you can set Custom spacing increments for legends independently for the X and Y axes by filling in the one or both of the edit boxes. (When you have selected Trig graph paper, you will probably want to use the constant “p” in the custom spacing you enter for the x axis so it is a multiple of π.) You may also enter custom grid spacing for both axes. If you leave any of these fields blank, automatic spacing will be used for that value.

If you select custom spacing, you can choose between two behaviors when the grid size changes: 1) Lock the legend spacing to the values you selected, or 2) Scale the grid spacing along with the grid itself. Unfortunately, neither option will be likely to satisfy you if you change the grid spacing by a non-integer factor or by too much, so you may have to reset the spacing to more suitable increments again manually.

You can also choose between positioning the vertical-axis legends above the gridlines (the default) or centered with respect to the labeled gridline.

Shortcut: You can modify the legends easily by right-clicking along the x and y axes (to get a popup menu with Edit Legends… on it) or double-clicking in the same location.


Adding Labels to your Graph

ADDING A TITLE AND LABELS TO YOUR GRAPH

If you want to add a title line to your graph, or add labels to the bottom or left or right sides, use the Graph Paper item in the Options menu to bring up the Graph Document settings dialog box, and then select the Labels tab. You can type in a new title, or edit one you typed in previously. When you print, the title is written across the top of the graphs, and it is automatically centered. When you are graphing, unless you have selected the Title and Labels option in the View menu, the labels are not shown on the screen. The space for the bottom label is automatically collapsed if you have not entered one.

Graphmatica can add text labels (rotated 90 degrees) to both sides of your graph. Like the title, these labels are automatically centered (vertically) on the graph.

Click the Clear All button to delete all four fields. If you do this by mistake, just Cancel the dialog box and the labels will not be affected.

Unless the Show Labels option is on, Graphmatica does not draw these labels immediately, since they are intended mainly to enhance printouts and no space is reserved for them on the screen.

You can also change the labels for the axes if you don't like the default labels ("x" and "y"). These can be any strings up to 25 characters long. Note that changing the labels has no effect whatsoever on which variables you need to use in your equations. Also, note that if you choose not to display the axes, their labels will not be displayed either.

You can select the fonts used for all of the labels using the Fonts tab in the Graph Paper dialog box.

Shortcut: When the labels are displayed, you can edit them easily by right-clicking on either the title or axis labels (to get a popup menu with Edit Labels… on it) or double-clicking them.


CHANGING THE COLOR SCHEME

If you prefer different colors for the graphs and grid elements than the defaults, you can change any of these color selections using the Colors dialog box. Select Graph Paper from the Options menu and click on the Colors tab to bring up this dialog.

Graphmatica has four pre-selected color schemes: monochrome (black on white), and color with a gray, white, or black background. You can choose one of these by selecting the appropriate radio button along the top of the dialog box. In addition, you can create your own custom color scheme. Just select the item whose color you want to modify in the listbox on the left, and then select the color you want to use in the listbox on the right. (At this time, the color selections are limited to the default 16-color Windows palette.) The results of your selections are displayed in the preview window on the right side of the dialog box. When you are satisfied with the new color scheme, click OK, and the graph window will be redrawn to match it.

The grid elements you can select colors for are the following:

Background | background of the graphing area
Border | border around the graphing area
X/Y Axes | lines for the x and y axes
Gridlines | dashed lines or dots (depending on the detail level selected) of the graph paper
Legends | numbers along the axes which give the coordinate of the corresponding vertical or horizontal line
Annotations | free-form text elements you can create using the Annotations... option in the Edit menu
Graph 1-Graph 7 | seven slots for graph colors

Your color selections are saved in your graphmat.ini file. The color scheme is not saved with the setup information of a normal graph document, so you cannot lose your color setup by loading a graph document that was saved under a different color scheme.

The selected color scheme applies to the screen and color bitmap output. Black-and-white printers and monochrome bitmaps are always black-on-white. A white background is suggested (but not used automatically) for color printing, for obvious reasons. Color printing is only supported in Proof Quality mode at this time. You can copy either a monochrome or color bitmap at any time by selecting the appropriate option in the Edit menu. Color bitmaps are drawn using the default color scheme (gray) if you have selected the monochrome color scheme.


SELECTING FONTS FOR TEXT ELEMENTS

Graphmatica allows you to change the typeface and size of all the text labels on the grid, and for most of the controls independently. To do so, select the Fonts tab from Graph Document Settings dialog (Graph Paper… in the Options menu) . This pane of the dialog box allows you to preview and change any of the currently-selected fonts.

You can select any screen font installed on your PC for the following parts of the user interface:

Equation editor, Printout window, and Status bar.

You can also change the fonts for all the text used on the grid. For these items, you must select a WYSIWYG font (TrueType or printer font with matching screen font installed) to ensure that your graphs look the same when printed.

Item | Notes
Legends | The axis legends, except for...
Legends symbols | x axis legends when trig spacing is selected
Axis Labels | The axis labels by the arrows (usually x and y)
Annotations | Freeform annotations on the grid
Title | The title on the top of the graph
Left-side label | must be a TrueType font, so the labels can be rotated
Right-side label | must be a TrueType font, so the labels can be rotated
Bottom label | The label at the bottom of the graph
Printed equation list | This font is used for the equation list, user defined functions, and other text outside of the grid when printing with the Print equation list option selected. For best results, select a fixed-pitch font like Courier.

To change an item's font, select it in the listbox of the Fonts dialog and click the Select Font button. This will bring up the standard Windows font dialog box. After you OK this dialog, when you have selected all the fonts you want to use, choose OK in the Fonts dialog to accept the new settings or Cancel to forget them.

If you want to make your font selections for the legends, labels, and annotations permanent, check Make these fonts the defaults for all graph documents. (If you do not have Save Settings on Exit enabled, you must also use the Save Setup Info option in the File menu to save these changes to disk before you exit the program.)

The fonts you selected for text on the grid will also be saved along with any equation list for which you select the Save setup information with file option.


Settings Dialog Box

GLOBAL SETTINGS DIALOG BOX

The Global Settings dialog box (Settings item in the Options menu) allows you to control just about every global option available in Graphmatica. These settings are saved in your graphmat.ini file, rather than in any particular graph document. The available options are grouped by the following tabs:

General | General checkbox options
Point Tables | Customizing Point Tables
Tangent Line | Input method for Draw Tangent Line feature
Integration | Controlling the method and accuracy of integration
Curve Fit | Curve-Fitting algorithm options


General Settings Tab

GENERAL TAB

The General tab in the Global Settings dialog box allows you to control many of the options available in Graphmatica. Following is a description of its controls, from top to bottom:

Zoom Factor This value controls the behavior of the Zoom in and Zoom out commands. When you zoom in, the grid range is shrunk by this factor; when you zoom out it is increased by the same factor. For instance, with the default value of 2, zoom in cuts the width and height of the grid range by half. Zooming out by a factor of two makes the grid twice as wide and high. Zoom factors <= 1 are not allowed because they produce meaningless results. Decimals greater than 1 are valid, though (e.g. a factor of 1.05 changes the dimensions of the screen just slightly).

Fineness Factor Allows you to change the fineness factor, which balances graph smoothness with computation time. See Adjusting the Fineness for details.

Checkboxes

Save settings on exit

Mark to save all global options to graphmat.ini when you exit Graphmatica. This is set by default; you should probably only uncheck it if you want to configure the defaults for a network installation manually and prevent students from changing the defaults on individual workstations.

Draw graphs with wide lines-- pixels

Mark to draw graphs with extra-wide lines for better visibility (slows down graphing and redrawing; not recommended on slower machines). This option has no effect when Draw graphs with dots, no lines (below) is selected. You may also optionally increase the width of these wide lines (by default 2 pixels) for extra visibility

Draw graphs with dots, no lines

Mark to draw only calculated points on graphs, not the segments connecting them. This option may speed up drawing somewhat, although visibility of graphs is reduced. Not recommended with full gridlines graph paper on. This option has no effect on inequalities; they must be drawn with lines, or the shading will "leak out" of the proper region.

Print warning error messages

Mark to display warning error messages while graphing. Off by default.

Print point tables

Mark to show the Point tables window and show calculated points graphed while graphing. Off by default.

AutoRedraw On--Draw Last ___ equations.

Mark the checkbox to turn AutoRedraw on. When it is on, you can also type in the maximum number of equations you would like to redraw.

AutoSquare grid when zooming

Mark to enable AutoSquare behavior. On by default.

AutoRange--Adjust y-axis to show new equations

Mark to enable AutoRange behavior. Off by default.

Shade Inverse of solution for inequalities

Check to shade the portion of the grid that is not in the solution when graphing inequalities. This option is enabled by default in the French version only.

Buttons

OKAccept the current changes.

CancelForget the changes made in the Settings dialog box..

Reset to DefaultsSet all the options to their default (as specified by Graphmatica, not your GRAPHMAT.INI file) settings. See Default settings for details. To reset the Grid Range and Theta Range, however, you must call up and use the Defaults buttons in their own dialog boxes.


CUSTOMIZING POINT TABLES

There are two options you can control for the point tables (Printout window): the increment between calculated points and the maximum number of graphs per table. Both of them are considered global options so their state is not saved in individual graph documents (.gr files) but they are saved in graphmat.ini when you choose Save Setup Info from the File menu.

To set these options, choose Settings from the Options menu and select the Point Tables tab. Of course, you must also display the Point Tables window by checking the Point Tables menu item before your settings will be visible.

You have three choices for the interval between points:

  • Legends spacing Add a point to the table for each coordinate marked with a number along the x-axis (y axis for Cartesian functions of y).
  • Grid spacing Each point in the table corresponds to a gridline or reference dot marked on the graph paper along the appropriate axis. This is the default.
  • Custom spacing You specify the desired increment manually. You can choose when you zoom in or out whether you want it to remain the same (Lock increment) or zoom with the grid range (Scale along with grid).

Note that the legends and grid spacing options work the same regardless of whether the legends or gridlines are actually displayed. Also note that if you set custom spacing for the legends, these two tables spacing options will react appropriately, so you may not need to set Custom spacing for point tables as well.

You can specify the number of decimal places (between 2 and 14) to display for points in the tables. This setting also controls the precision of the results displayed for other numerical calculations, for example those performed by the Evaluate, Find Intersection, and Find Critical Points functions.

You can also set the maximum number of Cartesian functions which may share a table using the edit box at the bottom of the Point Tables dialog box. You may choose between 1 and 9. Graphs are automatically added to an existing table up to this limit if possible.

Note that to avoid confusion, only Cartesian functions of the same variable (y or x) are allowed to share a table. Cartesian relations use 2 columns in their own table to display the two "halves" of the relation (e.g. the top and bottom of a circle). Other types of graphs already use more than one column and often have different independent variables, so they aren't well suited to sharing a table with another graph.

If you specify more columns than fit in the space you’ve allotted to the Point Tables window, you will also need to check the “Show horizontal scrollbar” box to see all of the columns. (If you do not, you must increase the width of the window in order to see the additional data.)


ADJUSTING THE FINENESS

The fineness factor determines how high the resolution of the graph will be, and in effect, also the amount of time it takes to complete the graph. The fineness factor of 1 is quite adequate in most circumstances, but you can still manually control the fineness to fill the need for especially sharp graphs or for extra-quick renderings. As the fineness is increased, more of the curve will be smoothed out, but remember that if you increase the fineness factor to 5, the computer will be slowed down to 1/5 its normal graphing speed under the load of all the extra calculations.

Fineness is also linked to the rate at which the angle is allowed to change in polar graphs, and both Cartesian and Polar graphs will be of comparable quality at the same fineness factor. Fineness is also linked to the step rate of parametric graphs and differential equations; because they vary so much, it is harder to insure that all parametrics and ODEs will graph well at the default fineness, but those that I have tested look fine.

When graphing differential equations (slope fields), the fineness factor controls the interval at which the hatch marks are drawn. If you use too high of a fineness value on this type of graph, you may not only get an awful mess on the screen, but also exceed the capacity of the data structure that records the points that were graphed for later redrawing. [At this point Graphmatica simply stops recording, so no harm can be done, but the graph will not redraw properly when the screen is repainted but not recalculated.]

To change the fineness factor, choose Settings from the Options menu and enter a new value in the edit box. Any value greater than zero is valid; the default value is 1.0. Theoretically there are no other limits on the fineness, and you can type any value into the edit field you wish, but the scroll bar slider is limited to the reasonable range of about 0.2 to 6. I would recommend not going below 0.25, as the image quality suffers and the graphs begin to look like modern art. Also, a factor greater than 5 will likely exceed the resolution available on your screen, in addition to taking proportionately longer to calculate.

If you increase the fineness, the graphs on screen will be redrawn at the higher resolution. If you decrease the fineness, the change will take effect the next time you draw a graph.


TANGENT LINE OPTIONS

The Tangent Line tab of the Settings dialog box allows you to choose between several different input methods for specifying where to draw tangent lines:

Select initial point/curve with mouse This option is checked by default. When this box is checked, choosing Draw Tangent Line from the menu or toolbar will capture the mouse until you click on a point on a curve to draw the tangent line at.

Keep selecting points with mouse until click on background to stop When checked, the mouse remains captured and you can click on different points to see the tangent line at various positions without re-issuing the Draw Tangent Line command again, until you click on the grid background to indicate that you are done. This option is not meaningful unless you also check “Select initial point/curve with mouse.”

Show Draw Tangent Line dialog box This option is checked by default. When checked, the Draw Tangent Line dialog box, which allows you to select an equation and type in the coordinates of the point to draw the tangent line at, is displayed. If you have also checked “Select initial point/curve with mouse,” the dialog box will initially be displayed after you select the first point with the mouse. The Draw Tangent Line dialog box allows you to type in the coordinates and select the equation to draw the tangent line for using only the keyboard.


INTEGRATION OPTIONS

The Integration options can be changed by selecting the Integration tab of the Settings dialog (Options/Settings menu), or more directly by clicking the Options button on the Integrate Curve dialog box. This dialog box allows you to change the following options:

Method of Integration

You may choose between the following methods of integration:

Rectangles AboveRegion is broken up into rectangles whose upper and lower bounds are strictly above the curve(s) being integrated.

Rectangles BelowRegion is broken up into rectangles whose upper and lower bounds are strictly below the curve(s) being integrated.

Left-hand SumsRegion is broken up into rectangles whose upper and lower bounds are determined by the points where their left-hand sides touch the curve(s).

Right-hand SumsRegion is broken up into rectangles whose upper and lower bounds are determined by the points where their right-hand sides touch the curve(s).

Trapezoidal RuleRegion is decomposed into trapezoids with the base of the trapezoid on the x axis and the slanted edge of the trapezoid approximating the curve

Simpson's RuleEach segment of the curve is approximated by a quadratic function. Generally more accurate for smooth curves.

Number of Segments

By default, the program chooses how many segments to use based on the amount of screen space the region covers. The number chosen provides the fastest calculation which is accurate to the precision of the displayed result using Simpson's rule. Alternatively, you can specify the number of segments you wish to use in the approximation in the edit box. This number must be a positive integer, and must be even if you want to use Simpson's Rule.

If you specify the number of segments manually and the individual segments are wide enough (more than 5 pixels wide), Graphmatica will draw in the boundaries of each segment separately for all methods except Simpson's rule. Although the result of the calculation will probably be inaccurate with segments this wide, the graphic makes the way the result was obtained more intuitive.

Input Method

Use the two checkboxes at the bottom of the dialog to choose between the two different ways of specifying which equation(s) to integrate over which region. You can select one or both of them.

Select initial curve/region with mouse After you choose the Integrate menu item, click on a curve at one end of the region and drag out the region to integrate (release the mouse over a second curve to find the area between the curves).

Show Integrate Curve dialog box This is a modeless dialog box which lets you choose one or two equations (to find the area under a curve or the area between two curves) and enter the boundaries of a region to integrate over, then displays the result of the calculation. If the box above is checked as well, this dialog comes up (if not already up) after you make your initial selections with the mouse. If not, it comes up immediately when you select the Integrate menu item. This dialog box stays up until you dismiss it, or until you hide or delete the equation(s) for which the integral shading is displayed.

The integration options you select are saved in GRAPHMAT.INI when you choose Save Setup from the File menu. They are not included in normal equation list files.


CURVE FITTING OPTIONS

Graphmatica performs curve-fitting using a very flexible algorithm known as the Levenberg-Marquardt method (see Numerical Recipes in C, section 15.5). Depending on your data set and expected results, you may need to experiment with setting some of these options to get the best results. All options can be set on the Curve Fit tab of the Settings dialog box.

Maximum number of iterations The Levenberg-Marquardt method is an iterative algorithm. Up to a point, the longer you run it, the more accurate the result. Graphmatica monitors the value and difference between the chi2 value on each iteration and automatically stops when the calculation appears to have converged within the limits of precision of this implementation. If your approximation converges, increasing the number of iterations will not make any difference. However, some data sets may not converge within this number of iterations, in which case the program stops the curve-fitting process to prevent it from taking too long. In this case, you may want to increase this option and see if you can achieve any significant reduction in the chi2 value with further iterations.

There are also several different forms of equations you can attempt to fit your data to:

Polynomial This option fits a curve to the generalized polynomial

y = A0x^n + A1x^n-1 + … + An-1x + An

You can control the number of coefficients that the program will attempt to fit (i.e. the value of n in the above equation) using the box for Maximum order of polynomial. Note that if the maximum number of iterations is high enough, you will probably get the same result even if this value is set higher than it needs to be (i.e. if you set it to 4 and the curve is best fit by a quadratic equation). However, the algorithm runs to completion much more quickly if you set this number as low as needed because there number of possibilities to consider increases exponentially as you increase this value.

Sinusoidal Use this option to fit the curve to the generic sinusoidal equation

    y = A sin (Bx + C) + D

That is, find the best values for amplitude, period, phase shift, and y offset to fit the data set to a sine curve. Note that due to the periodicity of this curve, the curve-fitting algorithm doesn’t work so well if it is not given a relatively close estimate of the parameter B to start out with (it tends to get stuck in the local minimum for an erroneous value of B). To help it out fill in the field marked estimate number of periods with your best guess at the number of peaks or valleys in the data set. The program will automatically calculate a starting value for B based on this and the domain of the data set. Usually if you are off by one in either direction, the curve-fitting algorithm will still work, but if you fail to provide this parameter or are off by more than that, you will get a result that is obviously wrong.

Exponential Use this option to fit the data to an exponential growth curve of the form

y = e^(ax + b)

Since the curve fitting in this case is performed by fitting the polynomial y = ax+b to the logarithms of the y values, you may not use this option with points whose y coordinate is less than or equal to zero.

Logistic

This is an S-shaped curve of the form

    y = k / (1 - ce^bx)

Where the coefficient k is the peak carrying capacity, and b and c determine the rate at which the curve tends from zero to k. (For graphs in the first quadrant, b and c will usually be negative.)

Power function Use this option to fit the curve to the equation

    y = a x^b

Note that since the curve-fitting is actually performed on the logarithms of both coordinates in each point, all of your data points must be in the first quadrant (i.e. > 0 on both axes).


CHANGING THE RANGE OF THETA

Because the independent variable (theta) in polar coordinates is fundamentally different from the x of Cartesian coordinates, the Cartesian x/y ranges can only be used to determine the size of the screen and not the domain of the equation graphed for polar graphs. Although the default 0 to 2pi range is the typical range of theta used for most graphs that go on forever (like spirals) and some closed graphs (like circles), other graphs cannot be completely drawn in this range of theta. For instance, the figure-8-shaped r^2=64cos(2t), because it is undefined where the right half is less than zero, is missing a couple of spots unless theta's range is extended to -2pi to 2pi. To allow the greatest flexibility, Graphmatica allows theta's range to be changed independently of all other options.

To change the range, select Theta range from the Options menu and enter the start and end of the range you want. For each end of the range, you can specify whether to use radians or degrees by marking the appropriate radio button. (The default is radians.) You can also specify that a number is given as a multiple of pi by marking the "x pi" box of each coordinate.

You can reset the domain to the default (0.0 to 6.28) by pressing the Defaults button.

The Theta Range dialog box can also be obtained by pressing the Change button next to the Theta Range display in the Settings dialog box.

If you would rather not change the default domain but simply change the domain for a single graph, see Specifying a Domain.


Turning Warning Messages On/Off

WARNING MESSAGES

By default, the error messages which do not require the equation to be retyped are suppressed, because they slow down the graphing process, cover up the equation, and are somewhat annoying when you know the graph shouldn't produce any values in some area. (Also, it saves you the effort of specifying the domain for each equation.) If something goes wrong (e.g. the graph doesn't show up on screen when it should and the reason isn't readily apparent), you can turn on the warning messages (using the Warnings function of the Options menu) and redraw it to see what the problem is. You can use the same menu option to turn the messages off later.

See Warning Messages for a complete list of warning error messages.


AutoSquare FEATURE

Since working in a window that can be resized means that not only the size but also the shape of the grid can change at any time, the coordinates of the grid must be managed dynamically to prevent unwanted effects on the aspect ratio (simply put, whether a square on the grid looks square or is actually "scrunched" one way or another into a rectangle). Graphmatica has a feature to handle this called AutoSquare.

Whenever you resize the window, turn the point tables or data plot editor on or off, or turn the graph labels on or off, the dimensions of the grid rectangle change. To keep the grid square when it matches the logical coordinates to the physical screen, Graphmatica keeps the logical width of the grid the same and figures out how much height must be added or subtracted to maintain good aspect ratio. It then divides this height difference by two and adjusts both the top and bottom of the grid by that much. (This way, whatever point on the grid was centered stays centered.)

The state of the AutoSquare option has several important side effects as well. When you save an equation list and include setup information, Graphmatica checks the AutoSquare option. If it is OFF, the dimensions of the grid will be recorded exactly. If it is ON, at least one coordinate will be recorded as "auto" so that no matter what shape the grid is when you load the file again, it will be squared correctly. (If the top and bottom coordinates are equal and opposite, they will both be saved as "auto" so they will be regenerated that way; if they are not, only the bottom coordinate will be saved as "auto". The x-coordinates are always saved exactly.)

When you select a new range using the mouse and one of the Zoom buttons, Graphmatica also refers to AutoSquare. If it is on, the height of your selection will be modified automatically as you draw it so that square aspect ratio is maintained. If AutoSquare is off, you're on your own.

AutoSquare is ON by default. You can turn it off by selecting it in the Options menu.

When you turn AutoSquare off, the coordinates of the grid will stay the same no matter what size it is. However, this does not prevent the need to recalculate graphs before displaying them again, since to conserve memory graphs are remembered as a list of physical points, not logical coordinates. Future versions of Graphmatica may support translation of coordinates between different physical grids, making faster redraw possible (at the expense of quality), but presently it does not.

The status of the AutoSquare option does not affect automatic coordinate calculation when loading an equation list that contains a [grid] section. If AutoSquare was on when the file was saved (or it specifies "auto" for either or both y-coordinates), the grid will be squared. Otherwise it will be drawn with the exact dimensions it had when saved, regardless of x/y ratio.


AutoRange FEATURE

If you often find that you enter an equation only to wonder where it went (because none of the curve was on-screen with the current grid range), you may want to try the AutoRange feature. When this checkbox in the Options menu is selected, any time you enter a new Cartesian function of x and more than 20% of the graph’s on-screen domain maps to a y-coordinate that is outside of the current range, the program will automatically adjust the y-axis range to show as much as possible of all on-screen curves (see the discussion of the Find All Graphs menu item for an explanation of the process). With the curve no longer hiding out of sight, you may then zoom or scroll as you like to focus on the portion of interest.

AutoRange is off by default. Since it may involve recalculating all graphs when the range is recomputed, it may not be appropriate for slower machines.


THE DEFAULT SETTINGS

When you first run Graphmatica without a GRAPHMAT.INI file, the following settings are in effect. Using the Defaults button in the Range, Theta Range, or Settings dialog boxes resets the options to these "factory" settings.

OPTION | DEFAULT
Grid Range | Start (-8.0, ___*) End(8.0, ___*)
Graph Paper | Rectangular/Gridlines, with border, axes, arrows, and labels
Fineness | 1.0
Legends | ON
Always Draw Labels | OFF
Wide Lines | OFF
Drawing Mode (Lines or Dots) | Lines
Warnings | OFF
Point tables | OFF
Show Scrollbars | OFF
AutoRedraw | ON
max # of eqns to redraw (AutoNum) | 25
Color Scheme | gray background
AutoSquare | ON
AutoRange | OFF
Theta Range | 0 to 6.28 (2pi)
Default Zoom Factor | 2.0

Title, left, and right labels, and annotations are all cleared by default.

* Y ranges vary to provide a square aspect ratio; they are by default equal and opposite.

This provides a basic rectangular grid of decent size with the origin centered, a square aspect ratio (a 1x1 square on the grid really looks square), and a good resolution graph.

VIEWING THE SETTINGS

You can quickly see the settings of the on-off options by seeing if they are checked in the menus. You can also look at almost all of the settings at once by selecting the Settings dialog box from the Options menu.


Tools Menu topics

Tools Menu: Numerical analysis and other tools

Evaluate | Ctrl+E | Numerically evaluating points on a graph
Find Intersection |  | Finding the points of intersection between two functions
Functions |  | Defining your own reusable functions
Coordinate Cursor | Ctrl+U | Using the coordinate cursor
Set Initial Value |  | Setting the initial value for difeq approximations
Set Domain |  | Using the mouse to select an equation's domain


EVALUATING POINTS ON A GRAPH

The Evaluate option in the Tools menu allows you to quickly find the value of any equation you've entered at a specific point. Before choosing the Evaluate command, you may select an equation to work with by highlighting it in the redraw queue. Differential equation slope fields cannot be evaluated at a point since they are not explicit functions of one variable.

If you've selected a valid equation, the Point Evaluate dialog box will appear, and the equation you are working with will be displayed on the status line. You can now type in points at which you want to find the value of the function at leisure. For angle measurements, your input values are assumed to be in radians; multiply by the constant d to convert from degrees. You can also use the constant pi to make entering precise radian numbers easier. In fact, any expression you could type in as part of an equation that evaluates to a constant is valid.

When you press enter or click the Calculate button, Graphmatica will calculate the value of the dependent variable(s) at this point and display the result. For families of functions using the parameter a, only the starting value of a will be used, since only one result is displayed. (Note: if an error occurs when evaluating at the point, a message will be displayed on the status line regardless of the state of the Warning Messages option.) Continue typing in numbers and observing the results as long as you wish, then press ESC or click the Close button to dismiss the dialog box.

For Cartesian functions, you can also enter a value for the dependent variable and solve for the independent variable. (This is found using Newton’s method; hence it is not available for relations that are not functions.) In this case you may enter a value to use as a guess for the independent variable, and the program will find the solution closest to that guess.

For implicit functions, Graphmatica calculates and displays up to 5 y values for a given value of x.

If you want to see the values of points on multiple equtions at once, turn the Point Tables option on. Each result that is printed in the dialog box will also be added to the Point Tables window.


FINDING THE INTERSECTION BETWEEN TWO FUNCTIONS

The Find Intersection dialog box allows you to select any two Cartesian functions that are on-screen and solve for the point(s) where they intersect. Simply select two equations from the droplists, optionally type in an initial guess for the independent variable, and press the Calculate button (or enter key). If you do not type in an initial guess, the program will find all intersection points within the domain that is currently on-screen. If you believe that there may be more intersection points that are not displayed, you need to specify a guess for the solution to seed the approximation.

Note: Because the Find Intersection feature uses Newton’s method to solve the system of equations, both equations must be differentiable functions of the same variable for it to work. You cannot find the intersection of an equation that is graphed as a function of x and another that is graphed as a function of y.


DEFINING YOUR OWN FUNCTIONS

Graphmatica allows you to define your own custom functions, which you can then reference in any equation. You may want to do so to add functions derived from those built-in to the program to its library, or to make entering equations with several instances of a common subexpression faster and more accurate.

Use the Functions item in the Tools menu to bring up the Functions dialog box, which lists all of the custom functions you have defined and allows you to define or delete functions.

Entering Functions

Enter your custom function in the following format:

function(variable)=expression

The function name may be f, g, or a multi-letter word up to 20 characters. Valid function names start with a letter and are followed by letters, numbers, or underscore (“_”). You may not use a name which is already assigned to a built-in function or variable. (See the Operator Table for a complete list of these.)

The variable name in your function definition must be either x or t. Regardless of which variable you pick, you may use the function in any equation; the value you pass to the function when you use it does not need to use the same variable.

Your function definition may be any expression that uses only the variable you specify and any constants or free variables (a, b, c) you need. You may also use any built-in function, or a custom function you have previously defined in your function definition.

For example, some useful functions you could define include:

Logarithm base 2log2(t)=log(t)/log(2)

Hyperbolic secantsech(x)=1/cosh(x)

Removing Functions

To remove a function that is no longer needed, select a function in the top listbox and use the Delete button. Note that when a function is referenced by other functions, you must delete each of those (or modify them to no longer reference the function you are trying to delete) first. If the function is still referenced by one or more equations, the program will offer to delete the equations as well or allow you to cancel the operation.

Redefining Functions

If you want to replace the definition of a function, simply type in the new definition and press Define as usual. The program will ask you for confirmation if you attempt to redefine a function that already exists. Any graphs that depend on the redefined function will be redrawn once you close the dialog box.

Function Library

Graphmatica supports two levels of custom functions: those defined in the current graph document only, and the Function Library, which is available to any graph document created on your machine.

To move functions from your current graph document into the Function Library, select a function in the top listbox and use the Add button. Note that you cannot add a function that depends on other functions defined at the document level to the Function Library; you must move those functions into the Function Library first. Also, you will be prompted for confirmation if a function of the same name already exists in the library. (This can happen when you open a graph document which redefines one of the functions in the library.)

To remove a function from the library (it will remain defined in the current document), select a function in the bottom listbox and use the Remove button. Note that when other functions in the Function Library depend on a function, you may not move it out of the Function Library until they have been removed as well.

When you save settings (either by the Save Setup Info command or exiting the program), the contents of the Function Library are saved in your graphmat.ini file, where they are available to any new graph documents you create.

Sharing Functions

When you save a graph document, all of the functions defined in that document, as well as any functions in the Function Library that are referenced by the current document’s functions or equations, are saved along with the document. This means that you can freely share graph documents that reference functions in your personal library without worrying about whether the recipient of the .gr file also has the same definition for that function.

If you want to share your complete Function Library with another machine, you can either cut and past the [functions] section of your graphmat.ini file, or create a graph document that uses each of the functions in an equation, open that file on the other machine, and move each of the functions into the Function Library there using the Add button in the Functions dialog box.


THE COORDINATE CURSOR

The coordinate cursor allows you to use the mouse to select any point on the graphing screen and display its coordinates. This feature is available both in the button bar and in the Tools menu. To turn on the coordinate cursor, select the Coordinate Cursor option in the Tools menu, click the Coord cursor button, or press Ctrl+U. The mouse pointer will change into crosshairs to make it easier to spot particular points and the coordinate that it is currently at will be displayed in the status bar. As you move the pointer around, the status bar will continue to display its current position. Note that this display is in polar coordinates when you have polar graph paper selected.

If you want finer control of the exact cursor position, you can use the arrow keys to move one pixel at a time (holding down on a key moves progressively faster).

When you move the cursor close enough to one of the curves on-screen, it will automatically "lock on" to make it easier to trace the path of the curve. When this happens, the equation of the curve being traced is also displayed in the status bar. The crosshair will stick to the curve you chose, even if it intersects other graphs, as long as you move the cursor gently in the general direction of the curve. If you use the arrow keys appropriate to the slope of the curve (up/down for a steep slope or left/right for a more horizontal slope) and don't hold down the keys too long, the cursor will also stick to the curve. To release the cursor from a curve, move perpendicularly to the slope of the curve at that point, or just move quickly in any direction.

Note that you cannot access the menu or move the pointer out of the graphing screen while the coordinate cursor is active. Turn the coordinate cursor off by clicking either mouse button or pressing Ctrl+U.

As a shortcut, you can also turn the coordinate cursor on by holding down the RIGHT mouse button while positioning the crosshairs over the point you want to inspect. The coordinate cursor is on, exactly as described above, until you release the mouse button.


Setting the Initial Value for Dif-eqs

SETTING THE INITIAL VALUE FOR ODEs

Instead of typing in the initial value for a differential-equation approximate solution, as described in the differential equations topic, you can also select the coordinates using the mouse.

First, type in a dif-eq or select one from the equations combobox to modify. Choose the Set Initial Value item from the Point menu. The mouse cursor will change to a crosshair. Click the left mouse button to choose a point on the graph screen as the initial value (or use the arrow keys and press enter to choose a point). Graphmatica will insert the text representation of this choice into the currently selected equation, replacing any IV specification that it contained already. Now press enter in the equation editor or click the Graph button to graph the solution.

For second-order or higher ODEs, you can also specify the first derivative using the mouse. After you click on the IV point, Graphmatica displays a "rubber band" line from this point to the current mouse position until you click on a second point. The coordinates of the first point are then taken to be the t and x values for the, and dx/dt is initially set to the slope of the line between the two points. Thus on a square grid, drawing a line at a 45º angle yields a slope of 1. But, since the slope is calculated based on the logical coordinates of the line segment, if the grid is compressed or logarithmic along one axis, this will not always be the case. To make things easier, the slope of the current line is displayed numerically in the status bar while you move the cursor.

For systems of ODEs, this function allows you to click on 2, 3, or 4 initial value points, one for each equation in the system. Since all IVs are required to be at the same coordinate for t, after selecting the first IV you are restricted to selecting points on the vertical line defined by the t-coordinate of your first click. Graphmatica marks each IV as you select it so that you will not forget how many IVs you have placed already and how many you have left.

Be aware that, like the coordinate cursor, the accuracy of this function is limited by the resolution of your display; on the default grid, the granularity may be as much as 0.05 graphing units.

The Set Initial Value menu item is only available when Graphmatica detects that an equation with one of the differential "variables" (dX) is selected.


Setting the Domain Graphically

SETTING THE DOMAIN

In addition to typing the domain for an equation by hand, for some types of equations you can also select the domain graphically using the mouse or arrow keys. First select the equation you want to add a domain to in the combobox (or type in a new one). Then choose Set Domain from the Point menu and drag out the region along the x-axis you want to plot. (Using the keyboard, use the arrow keys to move the crosshair to one end of the domain, and then hold down shift while moving to the other end.)

The corresponding textual form of the domain will be added to the equation on the edit line (or will replace the previous domain). You can now graph the new equation, which will be added to the queue (it will not replace any previous entries which differ only by domain).

You can use this feature with Cartesian rectangular equations (functions of x) and ODE's. It is not available for polar or parametric curves, since the domains for these equations do not naturally correspond to horizontal regions on the grid. If the text of the current equation is incomplete and can't be recognized as any particular type of equation, Graphmatica will let you add the domain, assuming that you are typing in a Cartesian equation.


Calculus Menu topics

Calculus Menu: Differentiating and integrating

Find Derivative |  | Displaying the derivative of a function
Draw Tangent | Ctrl+T | Drawing the tangent line to a curve at a point
Integrate | Ctrl+I | Performing numerical integration to find the area under a curve
Find Critical Points |  | Finding critical points (zeros and extrema)


FINDING THE DERIVATIVE OF A FUNCTION

Graphmatica is able to perform symbolic differentiation on most common functions and to display the derivative of a given curve in both text and graphical formats. To differentiate a function, select it in the queue and then Choose Find Derivative from the Calculus menu. (If the function you want to use is not in the queue, you must graph it first.) The program will then manipulate its internal representation of the equation to produce its derivative, add the resulting equation to the queue, and immediately graph it.

Note that while the curve produced by this process will always be correct, the equation of the curve may not be very well simplified, especially for complex equations. Therefore, the best way to check a derivative you found by hand is to overlay its graph with what the Find Derivative function generates.

Finding the derivative is only supported for Cartesian, polar, and parametric functions. For relations such as equations containing y^2, the derivative is only found for the function with the positive root. Also note that for an implicit function which the program can transform into an explicit function of y, but not x (e.g. x+y=y^2), the derivative found will be dx/dy, rather than dy/dx.

Finally, the derivatives of equations containing the following functions cannot be found, for the given reasons:

int | not a continuous function
abs | not guaranteed to be a smooth function
rand | not predictable, by design


DRAWING TANGENT LINES

At times you may be interested in knowing the slope of a curve at a given point. Graphmatica will provide this information both numerically and graphically about any curve on the screen with just a few clicks of the mouse.

To calculate the slope of a curve and draw the tangent line at a specific point, select Draw Tangent from the Calculus menu. If you have chosen to select the initial point and curve using the mouse, use the mouse or arrow keys to move the crosshairs to any point on a curve on the screen, then click or press enter to select it. The program will draw the tangent line and display the point selected and the slope on the status line as well as in the Printout window if it is on. The tangent line will be displayed only until you hide or delete the equation it belongs to, clear the screen, or draw another tangent line.

If you have chosen to show the Draw Tangent Line dialog box (also true by default), it will appear now if it is not already on screen. This dialog box allows you to choose the equation for the tangent line, plus adjust the x and y coordinates. You can use it to “straighten up” the coordinate produced using the mouse, or to enter an entirely different coordinate. When entering new coordinates manually, you may either:

  1. Enter a value for the independent variable (usually x) only, and leave the other one blank.
  2. Enter a value for the dependent variable (usually y), and optionally an estimate of the independent variable. The program will solve the equation for the exact independent variable value for you. When the function is not one-to-one, there may be more than one solution for a given value, so you should always include the independent variable estimate to indicate which solution you want to use.

You can only find the exact tangent line for differentiable (i.e. those which do not include the int() or abs() functions) Cartesian and polar equations. At this time, there is no efficient way to produce accurate results for other curves (for parametric equations you will get a rough approximation based on the slope between the two consecutive points nearest where you clicked).

In addition, I do not recommend drawing tangent lines when using logarithmic graph paper (since, of course, straight lines are not straight with a logarithmic scale).

The input method for drawing tangent lines is adjustable using the Tangent Line Options dialog box.


Integrating to Find the Area under a Curve

FINDING THE AREA UNDER A CURVE

Graphmatica can perform numerical integration to find the area under the curve for any function on the screen. Just select Integrate from the Calculus menu. The cursor will change to the crosshairs. Now position the cursor over any point on a curve on the screen to select the function to integrate and the beginning bound of integration. Then click and drag the cursor along the x axis to highlight the interval you wish to evaluate and release the mouse button. (Using the keyboard, maneuver over the initial point, then hold down shift as you use the arrow keys to select the desired region.) To find the area between two curves, position the cursor over the second curve as you finish selecting the region.

The program will shade in the area that was found and display the numerical result in the status bar, as well as in the Printout window if you have it on. If you select a region under the axis, or highlight the region above the axis from right to left, you will get a negative area. The shading will be cleared as soon as you hide or delete the equation it belongs to, clear the screen, or perform another integration.

You can choose from several methods of integration, as well as specify how many segments to divide the region into, to select a more accurate computation or a more instructive graphic. You can also enter the curve(s) and the region using a dialog box for greater accuracy rather than using the mouse. See Integration Options for details.

Any integral shading you create will appear on the grid when you print or copy to a bitmap. Currently, there is no provision for saving or restoring integration regions, or for showing more than one shaded region at a time.


FINDING ZEROS AND CRITICAL POINTS

Graphmatica can find approximate solutions (zeros) and extrema (critical points) for most Cartesian functions. (Since Newton's method of approximation is used to find these values, the function must be differentiable to find zeros and double differentiable to find critical points.) To calculate zeros and critical points, choose the Find Critical Points option from the Calculus menu. This will present you with a dialog box which allows you to do several things:

  1. Select an equation to use. The drop-down list allows you to select from all applicable equations on screen. Initially, the currently selected equation is chosen, if it is a Cartesian function. Otherwise the first applicable equation in the queue is chosen.
  2. Enter a guess to use as the seed for Newton's method. This may be anywhere within the domain of the function.
  3. Select whether you want to guess for zeros or extrema (maxima/minima).
  4. View the results. The listbox is divided up into three columns: type of point, solution, and value of the function at that point. The type of point is either Zero, Max, or Min. The solution value is only printed for maxima or minima since for zeros it is (of course) always zero. If you have the Point Tables option on, the results will be logged to the Point Tables window as well.

When you initially select an equation, Graphmatica will automatically calculate and display all of the critical points and zeros it could find within the portion of the domain of the function which is currently on-screen. That is, values which lie outside the region currently on-screen will not be calculated. This is because the program makes guesses about potential critical points using information generated in the process of drawing a graph. To find more zeros or extrema outside the currently displayed region, either enter guesses manually or zoom out to collect guesses over a wider area.

CAUTION: Although Graphmatica will not allow you to use this feature when it can not find the first or second derivative of an equation, it cannot detect when one of these is not a smooth function. This may affect the accuracy of the results displayed. Consult a textbook for an explanation of why Newton's method is not accurate in this situation.


DEMONSTRATION FILES

Graphmatica comes equipped with the following demonstration files to show you examples of each kind of graph it can draw. Each file contains a group of related equations, and each equation has a comment attached describing the curve it generates.

Try loading each file up (with the Open List command in the File menu), manipulating the view of the equations, redrawing, and modifying some equations.

CornuSpiral.GR | a beautiful--but advanced--example of using systems of ODEs with the alternate-variables feature to draw a graph which would otherwise be intractable(new in 2.0d; see http://mathworld.wolfram.com/CornuSpiral.html)
DATAPLOT.GR | sample data plot (new in 2.0)
DIFEQ.GR | slope field and Runge-Kutta approximations of a first-order differential equation.
FUNCTIONS.GR | example of custom functions and their use (new in 2.0)
GRAPHMAT.GR | draws Graphmatica's name, to demonstrate parametric equations
IMPLICIT.GR | sample of relations defined as implicit functions (new in 2.0)
INEQUAL.GR | sample of several inequalities
LOGLOG.GR | sample of using logarithmic graph paper
ODE2.GR | common second-order ODE approximations for simple harmonic motion
POLAR.GR | graphs using polar coordinates
TRIG.GR | graphs of trigonometric functions
XYDEMO.GR | Cartesian-coordinate equations, quadratic equations, relations


COMMAND LINE ARGUMENTS

Specifying the name of a valid equation list file (with or without the ".GR" extension) loads that file upon startup. Unless autoredraw=off is specified in the [options] section of the file, the graphs are drawn as soon as the grid is drawn. You can abort the whole redraw by aborting one of the graphs.

You can provide any number of files for loading; the only restriction is that if they contain a total of more than 25 equations, some of the first equations loaded will not be stored. Also the graph title and options will be set to those found in the last file specified, and any other file's settings may be forgotten.

If you associate the .GR extension with Graphmatica (using the File Manager Associate command or by adding a line to you win.ini file), you can load a file by double-clicking on it in the File Manager.

By default, Graphmatica looks for a configuration file called GRAPHMAT.INI in the same directory as the program file. If you prefer, you can use a file with a different name or in a different directory. This allows you to maintain multiple configurations on the same computer and access them easily by creating separate program items in Program Manager or shortcuts in Explorer.

To specify an alternate .ini file to use, add

/i:filename.ini

to the command-line you use to start the program, where filename.ini is the name of the file to load. You can specify a full path or just a filename in the starting directory. You must specify the file extension; it is not assumed.

If you use the /i switch to point a number of locally-installed copies of the program to a single. shared copy of graphmat.ini on a network volume, you should disable the “Save Settings on Exit” option and then mark that file read-only after configuring the program the way you like it to prevent unwanted modification when the program is run on another workstation.


Shareware Screen

SHAREWARE

Feel free to distribute copies of Graphmatica to your friends and upload it to bulletin board systems as long as 1) you charge no fees for its use or distribution and 2) you do not modify the program or documentation files in any way. Shareware vendors may distribute the program with the additional restrictions that 1) you charge less than $5 per diskette, for materials and handling only, and 2) you contact me to be sure you have the current version first.

You have license to use this program as you see fit but it is to be taken as is with no warranties, express or implied. I know of a few minor bugs, but nothing serious that could cause loss of data. Please tell me about any bugs you may find so that I can correct them for the next release.

If, after using Graphmatica, you find that it is easy, helpful, and convenient to use, please support the release of future versions by printing and filling out the registration form included (either REGISTER.RTF [WordPad] or REGISTER.TXT [ASCII text]) and sending your contribution (payable to Keith Hertzer, in U.S. funds) to the address below:

    kSoft, Inc.
    345 Montecillo Dr.
    Walnut Creek, CA 94595-2654

If you send $25 or more, you will be registered to be notified when the next version of Graphmatica is available (and receive a complimentary copy on diskette if you request it). For releases after that, you will be notified and may download the new version for free or receive it on disk for a nominal fee.

Site licenses are also available at a substantial discount for users of multiple copies; ask me for details if you are interested. Government and school purchase orders are acceptable for site licenses.

On the Internet, look for the latest version on the kSoft homepage at:

http://www.graphmatica.com/

You can order on-line with any major credit card using the SWREG secure ordering service. Just go to the following URL:

http://www.graphmatica.com/order.html

CREDIT CARD ORDERS ONLY

To insure that you get the latest version, SWREG will notify me the day of your order and I will ship the product directly to you. Unless you select electronic delivery, I am required by my contract with DigiBuy to ship you a disk immediately regardless of whether you have the current version already. Therefore, if you order online, you will receive the most current version right away, as well as an upgrade to the next major release. To help defray the additional costs, you will be charged an extra $2.50 shipping/handling if you order online and select physical delivery.

If you have any questions or feedback, please send me e-mail at ksoft@graphmatica.com. You can also send me a fax any time at 1-508-519-8936.

Even if you cannot send any money, please help me out by filling out the response form found in REGISTER.TXT and (e-)mailing it to me, especially if you have any suggestions about what I should add to the next upgrade.

WHAT'S NEXT? Your input has been essential to the process of developing and improving Graphmatica. Please drop me an e-mail if you find a bug or have suggestions for future improvements.

If you would like a copy of the source code for Graphmatica (developed using Visual C++® version 6.0), please send the fee of $25 and a short note explaining why you would like it.


ACKNOWLEDGMENTS

The LL(1) predictive parser used to build expression trees from textual equations is based on an example grammar used in Aho, Sethi, and Ullman’s Compilers: Principles, Techniques, and Tools.

The grid control used for the Point Tables and Data Plot windows is based on "BabyGrid", copyright (C) 2002 by David Hillard. A printed BABYGRID message reference and tutorial is available. Email mudcat@mis.net or see http://www.codeguru.com/controls/BABYGRID.html for more information.

My implementation of the Runge-Kutta ODE approximation algorithm and Levenberg-Marquardt curve-fitting method would not have been possible without the discussion and code samples found in Numerical Recipes in C. For details about this excellent volume, see http://www.nr.com.


Selecting the Range with the Mouse

SELECTING A RANGE WITH THE MOUSE

Graphmatica allows you to select an arbitrary new range using only the mouse. To zoom in to any part of current grid, first select the area you want to see with the mouse by holding down the left button and enlarging the selection rectangle. Then click the Zoom in button in the Button Bar (or select Grid Range from the View menu). Graphmatica will draw the new grid and display the exact coordinates of the new range on the status line.

To zoom out around a point, click the Zoom out button after selecting the area you want to be at the center of the new grid. (The new grid that results is essentially the same as what you would get by centering the current grid around the selection, then zooming out at the default scale factor.)

The highlighting of the selection will be cleared as soon as you click Zoom in or Zoom out, click the mouse in the graph window, clear the screen, draw another graph, or make a new selection.

You don't have to worry about matching the shape of the selection to the shape of the grid perfectly; the computer will take care of it for you. Depending on how you draw the rectangle, either the top or bottom y-coordinate will be AutoScaled. If you start from the bottom and draw up, the bottom coordinate will be fixed and the top one computed automatically. If you draw downward, the top coordinate will be fixed and the bottom one AutoScaled. Move the pointer horizontally to change the size of the selection; aside from checking whether you move it up or down, Graphmatica completely disregards the vertical position of the pointer and calculates the y-axis size automatically. As you draw the selection, Graphmatica prints out the range numerically on the status line.

Note: If you want to select a grid that is not square, turn the AutoSquare option OFF, and you will be able to select any shape you please, regardless of the effect on the aspect ratio. When you zoom out using a non-square aspect ratio, the region you select is used not only to determine the new centerpoint of the grid, but also the new aspect ratio (the horizontal size remains the same before zooming out, but the vertical size is adjusted to match the aspect of the selection).