# Some equations fail to solve even with to_poly_solve

In the following, I would expect to obtain [z == 1/y*lambda_w(y)]:

sage: z=var('z')
sage: y=var('y')
sage: solve(log(z)+3*z==0, z, to_poly_solve=True)
[z == 1/3*lambert_w(3)]
sage: solve(log(z)+y*z==0, z, to_poly_solve=True)
[z == -log(z)/y]


But Sage doesn't want to solve the equation for z. Perhaps, in view of the fact that it solves the equation when 3 is in place of z, it doesn't realize that y is supposed to represent a real number. I tried assume(y,'real') but that command did not help.

Does anyone know a workaround?

edit retag close merge delete

1

That's a valid observation. Maybe you (or someone) would be willing to post the issue upstream to the Maxima mailing list?

( 2012-09-02 18:23:03 -0600 )edit

I couldn't even reproduce the correct answers in Maxima, strangely.

( 2012-09-04 08:37:06 -0600 )edit

Sort by ยป oldest newest most voted

sage: from sympy import *
sage: y,z=symbols('y z')
sage: from sympy.solvers import solve
sage: solve(log(z)+y*z, z)
[LambertW(y)/y]

more

thanks, that works.

( 2012-09-04 16:53:27 -0600 )edit