The function whose Taylor polynomial is sought. Should accept
a vector of x values.

x : scalar

The point at which the polynomial is to be evaluated.

degree : int

The degree of the Taylor polynomial

scale : scalar

The width of the interval to use to evaluate the Taylor polynomial.
Function values spread over a range this wide are used to fit the
polynomial. Must be chosen carefully.

order : int or None

The order of the polynomial to be used in the fitting; f will be
evaluated order+1 times. If None, use degree.

Returns :

p : poly1d instance

The Taylor polynomial (translated to the origin, so that
for example p(0)=f(x)).

Notes

The appropriate choice of “scale” is a trade-off; too large and the
function differs from its Taylor polynomial too much to get a good
answer, too small and round-off errors overwhelm the higher-order terms.
The algorithm used becomes numerically unstable around order 30 even
under ideal circumstances.

Choosing order somewhat larger than degree may improve the higher-order
terms.