Re: Solve: More solutions faster in 3.0!?
- To: mathgroup@smc.vnet.net
- Subject: [mg10341] Re: Solve: More solutions faster in 3.0!?
- From: Daniel Lichtblau <danl@wolfram.com>
- Date: Thu, 8 Jan 1998 23:41:02 -0500
- Organization: Wolfram Research, Inc.
- References: <68csh5$a91@smc.vnet.net>
Matthias Weber wrote: > > A happy, bug-free new year to everybody. > > I tried to solve the system of polynomial equations below > > Solve[{2*a2^2*x0 + 2*a2*a3*x1 - 4*a1*a2*x0*x1 - 2*a1*a3*x1^2 + > 2*a1^2*x0*x1^2, 2*a2*a3*x0 - 2*a1*a2*x0^2 + 2*a3^2*x1 - > 4*a1*a3*x0*x1 + 2*a1^2*x0^2*x1, > 2*a2^2*x0^2 + 4*a2*a3*x0*x1 - 2*a1*a2*x0^2*x1 + 2*a3^2*x1^2 - > 2*a1*a3*x0*x1^2, -2*a1*a2*x0 + 2*a2*a3*x0^2 + 2*a1*a3*x1 + > a0^2*x0*x1 + 2*a1*a3*x0^2*x1 + 2*a2*a3*x1^2 + 2*a1*a2*x0*x1^2, > a2^2*x0^2 + 2*a2*a3*x0*x1 - 2*a1*a2*x0^2*x1 + a3^2*x1^2 - > 2*a1*a3*x0*x1^2 + a1^2*x0^2*x1^2} == {0, 0, 0, 0, 0}, {x0, x1}] > > in Mathematica 3.0 > on a PowerMac and got a bunch of solutions, including > > {x0 -> 0, x1 -> a2/a1} > > which is not a solution unless a2 and a3 are both zero. This feature > does not exist in version 2.2, which displays all solutions (the > singular points of a Kummer surface in an affine ccordinate chart of a > singular plane) correctly (needing more time for it, however). I > realize that the system above looks overdetermined, and I have the > impression that Mathematica is content in solving the equations for the > variables using *some* of the equations (maybe after reduction using > Groebner bases) without checking that the thus found solutions do > indeed solve all equations. I couldn't find a hint for that in the > documentation. Is there a way to eliminate this behaviour? > > Regards, > > Matthias Weber It's a bug (sorry to violate your salutation). The cause is that we spawn nongeneric solutions (that is, they have parameter constraints, as you noted), then we fail to see that they are nongeneric. This will be fixed. A work-around might be to factor the equations, use Logical Expand after changing Times to Or where appropriate, and solve the resulting system. The lines below will do this. I took the liberty of destroying multiplicity in the last equation, which factors as a square. eq2 = Factor[eqns] eq3 = Map[If [Head[#]===Power, #[[1]], If [Head[#]===Times, Apply[Or,#], #]]&, eq2]; eq4 = Apply[List,LogicalExpand[Apply[And, eq3]]] sol = Solve[eq4==0, {x0,x1}] Daniel Lichtblau Wolfram Research