1

Given a transcendental equation $f(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 $x$. However, what I'm specifically wondering is if Mathematica can output something that looks like:

$$y=c_0+c_1x+c_2x^2+\cdots$$

or

$$y=c_0+c_1x^{-1}+c_2x^{-2}+\cdots$$

where $c_i$ is a numerical constant.

user85503
  • 992
  • 1
  • 9
  • 22
  • 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 02:56

1 Answers1

4

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.

bbgodfrey
  • 61,439
  • 17
  • 89
  • 156