@DATABASE "Eqn solver.guide"
@REMARK $VER: Eqn solver  manual

@NODE MAIN "Eqn solver Guide Main Menu"


                               Eqn Solver V 1.0

                                     by

                                 John Ogden

                                    1994

                                 User Manual



                          @{"      Introduction       " LINK Eqn-intro}
                          @{" How to Change Equations " LINK Eqn-change}
                          @{"        Main Menu        " LINK Eqn-mmenu}
                          @{"   Interial Bisection    " LINK Eqn-bin}
                          @{"     Decimal Search      " LINK Eqn-dec}
                          @{"     Newton Raphson      " LINK Eqn-newt}
                          @{"    Iterative method     " LINK Eqn-itter}
                          @{"       The Grapher       " LINK Eqn-graph}
                          @{"     The setup Page      " LINK Eqn-setup}
                          @{"   How the methods work  " LINK Eqn-HowWork}
                          @{"     Future Versions     " LINK Eqn-Fut}

                          @{"       The Author        " LINK EQN-ME}
@endnode
@node Eqn-intro "Introduction"

                             Introduction

This is EQN SOLVER V 1.0 as at Feb 1994
Eqn Solver is a handy little program,  written in Amos Professional, used for
solving complicated equations that can  not  be  solved  in  the usual way or
those which would take much too long to solve in the normal way (you can't be
bothered to do it properly in  other  words),  it does not solve simultaneous
equations.
example.

  Sin x - Ln x + ( Cot x * Cosec x ) + 2 = 0

Would be a real pain to solve using mathematical theory, if you don't believe
me try it, Eqn Solver will solve just about any equation that has real roots,
it does not however find imaginary  roots, YET.

Eqn solver will also display 紳 壬retty 壬icture 塵f 腎he @{"Graph" link Eqn-graph} of the 
equation.

Note: Eqn solver may not get the EXACT  root,  it will only get a pretty good
estimate of the root.

This program can be used when  doing  coursework for pure maths module three,
if numerical methods are on your A level syllabus.
Eqn solver can use any one  of  four  algorithms to solve the equations these
are :

         @{"Interial bisection" LINK eqn-bin }
         @{"  Decimal Search  " LINK eqn-dec}
         @{"  Newton Raphson  " LINK eqn-newt}
         @{" Iterative method " LINK eqn-itter }

@endnode

@node Eqn-change "How to change an equation"

                            1) How to change the equation

To change an equation you will 刃eed  腎o  親dit  the actual program, at this 
閣ime
this is un avoidable, sorry for any problems in doing this.
1) Look through the program  for  the  神EQN[X#]  procedure,  open this if it 
格s
closed by pressing F9.
2) Chose which equation you wish to alter, there are four as a default.
3) Delete everthing on the line after Def Fn F (X#) =
4) Type in your equation in here.
5) In the _DYDX[X#] procedure change the 尽ame equation number as you altered 
格n
step 3 and type in the differential of your new equation.
6) In the _XEQUALS[X#] procedure 芯hange 腎he  尽ame 親quation, but this time 
各nter
what X equals in the function.

@endnode
@node Eqn-mmenu   "The Main Menu "

                            2) Main Menu

To select an option press the option's  number and then press the return key,
for example to chose option number 3 press  the key with 3 printed on it then
press the big grey key with the arrow  on  it,  do not type the word three to
find out what the option number  is  look  at  the number next to the options
name, it is the same.
Spooky!    What a coincidence!    I bet it's aliens who did that !

@endnode
@node Eqn-bin   "Interial Bisection"

                            3) Interial Bisection

This method is similar to the decimal search, except it works in base two not
10.
First you must enter the number of  itterations  you require, you can use any
number between 1 and 28, arround 10 is usually enough.
You must then enter the two X values,  one  at  each side of the root you are
trying to find, if you are not  sure  which  values to chose you should check
the graph of the equation.
The program now checks to see if there  is  a root between the two points, if
there is, the results will be displayed, if not you will be told and asked if
you want to try again.

@{"How does it work ?" LINK eqn-howwork}

@endnode
@node Eqn-dec "Decimal search"

                            4) Decimal Search

First the program asks  how  many  itterations  (decimal places) you require,
type in the number, you will then  be  asked  for the x position to start the
search. The program then displays the results.
Each decimal place will be displayed seperatley,  to  go on to the next place
press any key.

@{"How does it work ?" LINK eqn-howwork}

@endnode
@node Eqn-newt "Newton Raphson"

                            5) Newton Raphson

You will be asked for the number of itterations you require, and then for the
start X position, the program then displays the results.

@{"How does it work ?" LINK eqn-howwork}

@endnode
@node Eqn-itter "Iterative method"

                            6) Iterative method


You are asked for the number of itterations you require, then for the start x
position, the results are then displayed.

@{"How does it work ?" LINK eqn-howwork}

@endnode
@node Eqn-graph "The Grapher"

                            7) The Grapher

The graph menu has 6 options to configure the graph to your needs, these are

X scale       The number of pixels in the graph per unit of the X axis
Y scale       The number of pixels in the graph per unit of the Y axis
X line        Along the X axis there  are  lines that tell you the scale this
              tells the program how often to put them use 0 for no lines
Y line        Same as X line except along the Y axis
X axis        Tells the grapher where the X axis is, the default is 0.
Y axis        Tells the program where the y axis is, default is 0


Once the graph is drawn you can zoom  in  by  fifty percent by pressing the I
key, To zoom out press the O key.
To save the graph as a 2 colour interlaced hires iff picture press the s key
To scroll arround the graph use the arrow keys.
To leave the graph screen press the escape key


@endnode
@node Eqn-setup "The setter upper"

                            8) The setup Page


This lets you change the values of  everything,  and where the text files are
saved,
Load and save let you load and save the setup in a text file.
Equation type is used to switch between the equations


@endnode
@node Eqn-howwork "How they all work"

                            9) How the Methods work

How the methods work - @{"Interial bisection" LINK eqn-bin  }

1) This method inputs two initial values  of  x, it is presumed that you know
that the is a root between the two points.
2) The mid point of these two values is then found.
3) These three values are then put into then equation you are trying solve.
4) The program then checks if the root  is  between the first x value and the
mid point, or between the mid point and the second x value.
5) If it is between the first and  the  mid point, then the second x value is
made equal to the mid point, and we go  back to stage 3, if not the root must
be between the mid point and the second x value, so the first x value is made
equal to the mid point and you go back to stage 3.
6) When you think that you have a good enough estimate of the root, you stop


How the methods work - @{"Decimal search" LINK eqn-bin  }

1) This method inputs an initial  X  value,  it  then  adds one to this value
until the value of the  equation  changes  sign,  one  is then taken from the
equation.
2) 0.1 is then added to the X  value  until the value of the equation changes
sign.
3) 0.01 is added and so on until you have a good enough estimate of the root.


How the methods work - @{"Newton raphson" LINK eqn-newt  }

This method was thought of by Isaac Newton and somebody called Raphson
To understand how  it  works  you  need  to  understand  how to differentiate
equations, if you don't, then use  another  method  or ask someone to explain
how, basically it is a way of finding the gradient of a line,

1) The method works by finding the equation of the tangent at point X.
2) You then find where this line cuts the X axis.
3) This point is your new X value, and you go back to stage 1
4) You repeat this as many times as you feel is needed.

Here is a short table of common differentials.

 --------------------------------------------------------------------
 |  Expression           |   Differentiates to                      |
 --------------------------------------------------------------------
 |                       |                                          |
 |  X squared            |    2 times X                             |
 |  X cubed              |    3 times X squared                     |
 |  A * X to the N       |    A * N * X to the N-1                  |
 |  Sin X                |    Cos X                                 |
 |  Cos X                |    -Sin X                                |
 |  Tan X                |    Sec squared X                         |
 |  Ln X                 |     1/X                                  |
 |  e to the X           |    e to the X                            |
 |  Sin X over X squared |    ( X * Cos X - 2 * Sin X ) / X Cubed   |
 |  Any number           |    0                                     |
 |                       |                                          |
 --------------------------------------------------------------------


How the methods work - @{"Iterative method" LINK eqn-itter  }

For this method you need to define  another  function,  G of X to do this re-
arrange your initial equation to find an expression for X equals.
1) You input a value of X.
2) This value is put into G of X,
3) The value that is returned is put back into G of X
4) You repeat this process until you have a good estimate or get bored
Note: this method usually diverges away from the root into infinity

@endnode
@node Eqn-fut "Future Additions"

                            10 Future Additions


A system where the  user  does  not  have  to  look  through the program, and
manually define each function, this could  be  in  the form of a mouse driven
calculator like device,  but  I  don't  know  how  to  turn  a  string into a
function. If anybody does I would like  to  know how, please let me know, you
will get a mention in this manual if you do!

The above Idea could be extended so  that  the user does not have to manually
differentiate the equation.

The setup page  should  really  display  the  current  equation  and  not the
equations number

Direct printer support added

A GUI needs adding to make the  interface  more user friendly, and slower and
more complicated to use.

The method of putting the interval lines on the graphs axis needs improving.

A little program could  be  added  that  hacks  into  the  banks computer and
credits the user's account with around 」 1,000,000,000, and is completely un-
traceble except if John Major is using it, in which case if phones the police
man or woman that is always  standing  outside  his  front door and around 50
reporters from various paper and television  companies, then invites them all
in for a quick coffee. Any ideas how to do this ?
@endnode
@node eqn-me "The Author"

                          The Author - Me

This program was initially written to 仁ake Pure maths 3 coursework easier 
but its a bit late for that after all this work.

If you have any comments, bug reports (and preferably fixes) or you know how
to turn strings into functions or you want to donate huge amounts of money to
me let me know at


                                                  
                                 John Ogden       
                                                  
                              68  Babylon Lane    
                                  Anderton        
                                  Chorley         
                                 Lancashire       
                                  England         
                                  PR6 9NW         


@endnode