Bug introduced in 9.0 and fixed in 10.0.0
Here is a trivial system of equations in three unknowns for which FindInstance
obtains a solution:
FindInstance[
c3 + c2 == 1 && c1 == 0 && -c2 == 0, {c1, c2, c3}]
(* ==> {{c1 -> 0, c2 -> 0, c3 -> 1}} *)
But in my application, I have a linear system where I want to rule out the trivial solution c1==c2==c3
with an inequality:
FindInstance[
(c3 != 0 || c2 != 0) && c1 == 0 && -c2 == 0, {c1, c2, c3}]
(* ==> {{c1 -> 0, c2 -> Indeterminate, c3 -> 1}} *)
This incorrectly returns Indeterminate
for c2
only in Mathematica version 9, whereas it gives a correct result c2 -> 0
in version 8. In general, my variables are complex so that I can't restrict the domain to Reals
(which solves the problem in this simple example).
My current solution to this issue is to replace the inequality by an equation, e.g., Norm[{c1, c2, c3}] ==1
. But I would like to understand (if at all possible) what change between versions is causing the Indeterminate
result. I have a version-8 notebook that suddenly produced Indeterminate
in over half its calculations, and there is no documented change in FindInstance
that I'm aware of. So I'd like to hear what the safest and/or most efficient way would be to rule out the trivial solution in FindInstance
for a system of linear equations.
Indeterminate
if you ask for 1 result. Ask for 2 and take the first one. $\endgroup$Norm
still gives a simpler result. $\endgroup$