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.