EXPLANATION FILE OF PROGRAM RECIPRO
===================================
Polynomial Inversion
--------------------
The next utility algorithm we will consider is the polynomial approximation
to l/P(x). We will denote the approximating polynomial as Q(x). The relation-
ship to satisfy is
P(x) Q(x) = 1
or
2 2
(a0 + alx + a2x + .. )(bo + b1x + b2x + ... ) = 1
By again equating like powers of x, we ob tain the following sequence of equa-
tions:
0
x : a0b0 = 1
1
x : a0b1 + a1b0 = 0
2
x : a0b2 + a1b1 + a2b0 = 0
---------------------------
n
x : a0bn + a1bn-1 + ... + anb0 = 0
By solving the first coefficient equation, enough information is obtained
to solve the second, and so on throughout the sequence. There is an infinite
number of equations to be solved, but they can be processed only one degree
at a time, starting with b0. Therefore, in principle, any level of approxima-
tion is possible. The one restriction on this is that the infinite series for
Q(x) will not converge for values of x that correspond to roots of P(x). Also,
the truncated approximation to Q(x) behaves in a manner similar to a truncated
Taylor series--the error tends to grow with increasing x.
The solution to the coefficient equations can be numerically implemented as
shown in program Recipro. This inversion subroutine accepts as input the de-
gree (N) of P(x), the corresponding coefficients [A(1)], and the degree (M) of
the reciprocal polynomial, Q(x). The M + 1 coefficients calculated for Q(x)
are returned in the array B(I).
Three examples are given. These particular examples were picked because each
displays a different type of approximation error.
In the first example, the full inverse series diverges at x = ±1/2, even
though P(x) has only one root: x = -1/2. However, for [x] < 0.2, the truncated
series accurately approximates 1/ P(x).
The second example shows an inverse polynomial that diverges at x = ±1. This
expected in that both points are roots of P(x).
The third example is curious, P(x) has no real roots, but Q(x) clearly
diverges at x = 10 and roughly x = -12. However, the approximation to 1/ P(x)
is very good over the range -5 < x < 5.
Program Recipro is fairly reliable. It will always give an approximation to
1/P(x) which is good close to x = 0 as long as a0 <> O. A divide-by-zero error
will occur if a0 = O. As we saw from the examples, the approximation to Q(x)
will surely diverge at the roots of P(x). However, it may also diverge at
other values. Therefore, it is wise to empirically check the range of validity
of the calculated polynomial before using it.
From [BIBLI 01].
----------------------------------------------
End of file Recipro.txt