# Missing solution in homogeneous equation

```
var('x y')
solve(x*y, [x, y])
```

returns only the solution x=0, missing y=0. Is this a known bug? I am using sage 5.13.

1

First, the workaround.

```
sage: var('y')
y
sage: a = x*y
sage: solve([a,1==1],[x,y])
[[x == r1, y == 0], [x == 0, y == r2]]
```

There is an open ticket about this I will try to find later. But at least now I know the reason.

This is interesting - apparently we assume that if one passes in a single expression, there is a single variable that should be solved for.

```
# There *should* be only one variable in the list, since it is
# passed from sage.symbolic.relation.solve() and multiple variables
# there don't call this function.
if isinstance(x, (list, tuple)):
x = x[0]
```

That explains your result. However, @moroplogo's is even more interesting. What happens is that all arguments get passed to `xy.solve()`

```
if is_Expression(f): # f is a single expression
ans = f.solve(*args,**kwds)
return ans
```

But these are *not* unpacked! So we have something that actually passes in to Maxima. But what? It's not passing in this:

```
(%i2) solve(x*y,[x,y]);
(%o2) [[x = %r1, y = 0], [x = 0, y = %r2]]
```

and some debugging indicates it should just be passing in the same as `solve(x*y,x)`

. I'm not sure how that extra `[1]`

gets in there.

Asked: **
2014-02-11 21:45:46 -0500
**

Seen: **198 times**

Last updated: **Feb 14 '14**

solve solution change after cell evaluation

What is the best way to return only real solutions?

Cannot solve equation with two radical terms

solve x*exp(x)==0 and x*exp(-x)==0

Inequalities, solving problems

Computations in a Quotient Ring

How to solve this algebraic equation by SageMath (rather than by hand)

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.

It's a strange problem indeed! However this is not a well-formed code , you can write this : solve([x*y==0], x , y) and the answer is : ([x == 0], [1]) . If you write this : solve([x*y==0], y ,x) the answer is : ([y == 0], [1]) .