# Wrong solution?

Anonymous

Hi, could you help me with this solution of two equations on the interval:

x,a=var('x,a')

f1=10/x

f2=x-5*a

assume(a>0,x>0)

print(solve([f1==f2],x))

Solution given by Sage is:

[ x == 5/2a - 1/2sqrt(25*a^2 + 40),

x == 5/2a + 1/2sqrt(25*a^2 + 40) ]

The first solution is obviously not solution for me as it is always strictly negative and I don't understand why the Sage gave me it. Assumptions are clear: x has to be >0 When I change second equation slightly:

x,a=var('x,a')

f1=10/x

f2=x-6*a

assume(a>0,x>0)

print(solve([f1==f2],x))

Solution given by Sage is correct now (only the x>0 are reported):

[ x == 3a + sqrt(9a^2 + 10) ]

Could you help me explain the difference in results. I am not sure if problem is on python side or with some rules how Sage computes the results. Thank you in advance.

edit retag close merge delete

Sort by » oldest newest most voted

This is because in the first case, Maxima is not able to decide whether 5/2*a - 1/2*sqrt(25*a^2 + 40) is negative, and when it does not know, it answers False:

sage: bool(5/2*a - 1/2*sqrt(25*a^2 + 40) < 0)
False
sage: bool(5/2*a - 1/2*sqrt(25*a^2 + 40) > 0)
False


to be compared to:

sage: bool(3*a < sqrt(9*a^2 + 10))
True
sage: bool(3*a > sqrt(9*a^2 + 10))
False


The fun thing, it seems that what Maxima is not able to do is to multiply everything by 2 to get the correct result:

sage: bool(5*a - 1*sqrt(25*a^2 + 40) < 0)
True
sage: bool(5*a - 1*sqrt(25*a^2 + 40) > 0)
False

more

answered 2013-10-20 03:24:45 +0200

This post is a wiki. Anyone with karma >750 is welcome to improve it.

I used the example only for illustration and I think the problem is more serious than just "inability to multiply everything by 2". The correction is easy in posted example, but the correction is more demanding in case of more complicated functions. For me: provided solutions are untrustworthy.

more

I agree with that. There should be a way for Sage to consistently say : "I do not now".

( 2013-10-20 20:28:25 +0200 )edit