2
$\begingroup$

Has anyone implemented a function in Mathematica that computes Puiseux expansions of algebraic curves?

Using something like

Series[y /. Solve[poly == 0, y], {x, x0, order}]

where "poly" is a polynomial expression in x and y works as long as poly is sufficiently low degree or x0 avoids a branch point.

The right way to do it would probably be via the Newton-Puiseux algorithm but I could only find Maple code to do it.

$\endgroup$
1
2
$\begingroup$

I think you can use the new in M12 function AsymptoticSolve for this. For example, suppose the polynomial is:

SeedRandom[1]
poly = x^Range[0, 5].RandomInteger[1, {6, 6}].y^Range[0,5]

1 + x^3 + (1 + x + x^3) y + (1 + x + x^5) y^3 + (x^4 + x^5) y^4 + x^2 y^5

Then, using AsymptoticSolve:

AsymptoticSolve[poly == 0, y, {x, 0, 3}] //N

{{y -> -0.682328 + 0.417238 x - 0.206844 x^2 - 0.143415 x^3}, {y -> (0.341164 - 1.16154 I) - (0.208619 - 0.183825 I) x + (0.603422 - 0.710109 I) x^2 - (0.928292 - 0.263678 I) x^3}, {y -> (0.341164 + 1.16154 I) - (0.208619 + 0.183825 I) x + (0.603422 + 0.710109 I) x^2 - (0.928292 + 0.263678 I) x^3}, {y -> (0. + 0.5 I) + ( 0. + 1. I)/x - (0. + 0.625 I) x}, {y -> (0. - 0.5 I) - (0. + 1. I)/ x + (0. + 0.625 I) x}}

I used N to avoid worrying about how to format root objects.

$\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.