# 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: **186 times**

Last updated: **Feb 14 '14**

Smallest positive numerical solution of an equation in one variable

Can someone help in finding code for solve function

Method for solving a large system of under-determined equations?

Cannot solve equation with two radical terms

unable to numerically solve an equation (basic question)

How to get all (numerical) solutions of an equation?

What is the best way to return only real solutions?

How to properly declare indeterminates so that they exist in the coefficient ring.

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]) .