Ask Your Question
1

assume() seems not to work for a specific case...

asked 2011-10-14 09:11:25 +0100

supertat gravatar image

Hi, experts

I tried the following commands:

var('a, b, c')
assume(a>0, b>0, c>0)
solve([a*(b+c)==0, b*(c-a)==0, c*(a+b)==0], a,b,c)

expecting sage to return only (a,b,c) = (k, -k, k).

However, sage returned
(a,b,c) = (k, 0, 0), (0, k, 0), (0, 0, k), (k, -k, k).
though I typed 'assume(a>0, b>0, c>0)'.

Is there any way to invalidate the first 3 answers ?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2011-10-14 09:32:19 +0100

kcrisman gravatar image

Not really. The assumption and solve frameworks are both just using Maxima, and Maxima is pretty clear (though hard to find) about the fact that they do not use assumptions in their solving.

I think the idea is that Maxima's solve considers all variables as dummy variables (the same thing happens with their integration, I think), in which case it doesn't matter if they happen to have the same name as the assumed variables. This is a design decision, but one we don't have control over.

We did implement a basic version of this, but as it says in the documentation, "There is still room for improvement." Multivariate examples like yours are one example of this. If you have some specific ideas for improving that code, let us know and we can open a ticket for it.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 2011-10-14 09:11:25 +0100

Seen: 452 times

Last updated: Oct 14 '11