Numerically solving a transcendental equation as a series

Given a transcendental equation f(x,y)=0f(x,y)=0f(x,y)=0, is there a way for Mathematica to automatically solve the equation as a series? I already know that I can use

NSolve[f(x,y)==0,y]

if I substitute a value for xxx. However, what I’m specifically wondering is if Mathematica can output something that looks like:

y=c0+c1x+c2x2+⋯y=c_0+c_1x+c_2x^2+\cdots

or

y=c0+c1x−1+c2x−2+⋯y=c_0+c_1x^{-1}+c_2x^{-2}+\cdots

where cic_i is a numerical constant.

=================

2

 

It depends on the function f, so you’d have to be more specific. If, e.g., you can solve for x, then the series for y can be obtained directly using InverseSeries.
– Jens
Sep 15 ’15 at 2:56

=================

1 Answer
1

=================

Possibly, expand f to first order in y

Series[f[x, y], {y, y0, 1}] // Normal;
(Solve[(% /. y – y0 -> z) == 0, z] /. z -> y – y0)[[1, 1]]
(* y – y0 -> -(f[x, y0]/Derivative[0, 1][f][x, y0]) *)

Then, the right side of the last expression can be expanded in x to the desired power. For instance,

Series[%[[2]], {x, x0, 2}] // Normal
(* -(f[x0, y0]/Derivative[0, 1][f][x0, y0]) +
((x – x0)*(-(Derivative[0, 1][f][x0, y0]*Derivative[1, 0][f][x0, y0]) +
f[x0, y0]*Derivative[1, 1][f][x0, y0]))/Derivative[0, 1][f][x0, y0]^2 +
((x – x0)^2*(2*Derivative[0, 1][f][x0, y0]*Derivative[1, 0][f][x0, y0]*
Derivative[1, 1][f][x0, y0] – 2*f[x0, y0]*Derivative[1, 1][f][x0, y0]^2 –
Derivative[0, 1][f][x0, y0]^2*Derivative[2, 0][f][x0, y0] +
f[x0, y0]*Derivative[0, 1][f][x0, y0]*Derivative[2, 1][f][x0, y0]))/
(2*Derivative[0, 1][f][x0, y0]^3) *)

yielding a power series, here to third order, in x – x0.

Incidentally, an illustration of the approach is given in my answer to question 94663.