invertseries(a), REAL vector a with non-MISSING elements |

Suppose A(x) is a function with A(0) = 0 and with Taylor series a1*x + a2*x^2 + a3^x^3 + ..., where a1 != 0. Then in a neighborhood of 0 there is an inverse function B(y) is defined such that B(A(x)) = x for y near 0. Let b1*y + b2*y^2 + b3*y^3 ... be the Taylor series for B(y). The coefficients bj are unique functions of a1, a2, ..., aj; in particular, b1 = 1/a1. b <- invertseries(a), where a = vector(a1,a2,...,an) is a REAL vector, computes the coefficients b = vector(b1,b2,...,bn) of the Taylor series for B(y). Because of numerical instability, higher order coefficients in b may not be accurate. Example: Let A(x) = log(1-x) = -x - x^2/2 - x^3/3 - ... . Then B(y) = 1 - exp(y) = -y - y^2/2 - y^3/6 - y^4/24 - y^5/120 - ... satisfies B(A(x)) = 1 - exp(log(1 - x)) = 1 - (1 - x) = x. Cmd> a <- -1/run(10); a # coefficients of -log(1-x) (1) -1 -0.5 -0.33333 -0.25 -0.2 (6) -0.16667 -0.14286 -0.125 -0.11111 -0.1 Cmd> b <- invertseries(a); b # coefficients of 1 - exp(y) (1) -1 -0.5 -0.16667 -0.041667 -0.0083333 (6) -0.0013889 -0.00019841 -2.4802e-05 -2.7557e-06 -2.7557e-07

Gary Oehlert 2003-01-15