calc: Solving Systems of Equations
11.6.2 Solving Systems of Equations
-----------------------------------
You can also use the commands described above to solve systems of
simultaneous equations. Just create a vector of equations, then specify
a vector of variables for which to solve. (You can omit the surrounding
brackets when entering the vector of variables at the prompt.)
For example, putting ‘[x + y = a, x - y = b]’ on the stack and typing
‘a S x,y <RET>’ produces the vector of solutions ‘[x = a - (a-b)/2, y =
(a-b)/2]’. The result vector will have the same length as the variables
vector, and the variables will be listed in the same order there. Note
that the solutions are not always simplified as far as possible; the
solution for ‘x’ here could be improved by an application of the ‘a n’
command.
Calc’s algorithm works by trying to eliminate one variable at a time
by solving one of the equations for that variable and then substituting
into the other equations. Calc will try all the possibilities, but you
can speed things up by noting that Calc first tries to eliminate the
first variable with the first equation, then the second variable with
the second equation, and so on. It also helps to put the simpler (e.g.,
more linear) equations toward the front of the list. Calc’s algorithm
will solve any system of linear equations, and also many kinds of
nonlinear systems.
Normally there will be as many variables as equations. If you give
fewer variables than equations (an “over-determined” system of
equations), Calc will find a partial solution. For example, typing ‘a S
y <RET>’ with the above system of equations would produce ‘[y = a - x]’.
There are now several ways to express this solution in terms of the
original variables; Calc uses the first one that it finds. You can
control the choice by adding variable specifiers of the form ‘elim(V)’
to the variables list. This says that V should be eliminated from the
equations; the variable will not appear at all in the solution. For
example, typing ‘a S y,elim(x)’ would yield ‘[y = a - (b+a)/2]’.
If the variables list contains only ‘elim’ specifiers, Calc simply
eliminates those variables from the equations and then returns the
resulting set of equations. For example, ‘a S elim(x)’ produces ‘[a - 2
y = b]’. Every variable eliminated will reduce the number of equations
in the system by one.
Again, ‘a S’ gives you one solution to the system of equations. If
there are several solutions, you can use ‘H a S’ to get a general family
of solutions, or, if there is a finite number of solutions, you can use
‘a P’ to get a list. (In the latter case, the result will take the form
of a matrix where the rows are different solutions and the columns
correspond to the variables you requested.)
Another way to deal with certain kinds of overdetermined systems of
equations is the ‘a F’ command, which does least-squares fitting to
satisfy the equations. Curve Fitting.