1
$\begingroup$

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.

$\endgroup$
  • 2
    $\begingroup$ 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. $\endgroup$ – Jens Sep 15 '15 at 2:56
4
$\begingroup$

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.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.