Hi
I'm trying to find all solutions to a system of polynomial equations. I've tried using Isolate from the RootFinding package and for some choice of parameters this works well. However changing the parameters (i.e changing some of the coeffients of the polynomials), I get the error message.
Error, (in RootFinding:-Isolate) decreasing address previous=1e0f0020 new=10010020!
Any ideas on what this means? possible ways around it? or other functions in maple that would give me all solutions?
Thanks, Steve.
You need to give us details
Without an actual system for us to 'play' with, we are not likely to be able to help you.
bug
This is definitely a bug in RootFinding:-Isolate. Could you please post the system which produces this error ? As an alternative, you might try the fsolve command. If you post the system I may be able to give you other suggestions as well.
Hi, the problem is to find
Hi,
the problem is to find all solutions to the following set of 10 equations in the 10 real variables x[1]...x[5] and y[1]...y[5]
thanks
no luck using solve directly
This is the system as rendered by my cut and paste and plain text conversion of sb572's post.
sys:= { x[1]^2+y[1]^2-1 , x[2]^2+y[2]^2-1 , x[3]^2+y[3]^2-1 , x[4]^2+y[4]^2-1 , x[5]^2+y[5]^2-1 , x[1]*x[2]+x[1]*x[3]+y[1]*y[3]+y[1]*y[5]+x[2]*x[5]+x[1]*x[5]+x[3]*x[4] +y[3]*y[5]+y[2]*y[3]+x[3]+x[4]+x[1]*x[4]+x[3]*x[5]+y[1]*y[4] +y[1]*y[2]+x[4]*x[5]+x[5]+y[3]*y[4]+y[2]*y[4]+x[1]+x[2]*x[4]+x[2]+ x[2]*x[3]+y[2]*y[5]+y[4]*y[5], -y[3]*sqrt(3)*x[4]+2*x[1]*y[3]*sqrt(3)-2*y[1]*x[3]*sqrt(3)+x[3]*y[4]*sqrt(3) +y[1]*x[5]*sqrt(3)-2*y[2]*sqrt(3)*x[5]+y[4]*sqrt(3)*x[5]+y[2]*sqrt(3)*x[3] -x[2]*y[3]*sqrt(3)+y[1]*sqrt(3)+3*y[1]*y[5]+3*x[1]*x[5] -x[4]*y[5]*sqrt(3)+3*x[3]*x[4]+3*y[2]*y[3]+2*x[2]*y[5]*sqrt(3) -2*y[4]*sqrt(3)+3*x[4]*x[5]+3*y[3]*y[4]+3*x[1]-x[1]*y[5]*sqrt(3) +3*x[2]+y[2]*sqrt(3)+3*x[2]*x[3]+3*y[4]*y[5], -y[3]*sqrt(3)*x[4]+x[3]*y[4]*sqrt(3)+y[1]*x[5]*sqrt(3)-y[2]*sqrt(3)*x[5] -y[4]*sqrt(3)*x[5]+y[2]*sqrt(3)*x[3]-y[1]*x[2]*sqrt(3)-x[3]*y[5]*sqrt(3) +x[1]*y[2]*sqrt(3)-x[2]*y[3]*sqrt(3)+y[1]*sqrt(3)+x[4]*y[5]*sqrt(3) -3*x[1]*x[3]+x[2]*y[5]*sqrt(3)-y[4]*sqrt(3)+y[3]*sqrt(3)-3*x[5]-3*y[1]*y[3] -3*y[2]*y[4]+x[1]*y[4]*sqrt(3)-x[1]*y[5]*sqrt(3)-y[2]*sqrt(3)-3*x[2]*x[4] +y[3]*sqrt(3)*x[5]-y[1]*x[4]*sqrt(3), y[2]*sqrt(3)*x[4]-x[1]*y[3]*sqrt(3)+y[1]*x[3]*sqrt(3)-y[4]*sqrt(3)*x[5] +y[2]*sqrt(3)*x[3]-2*x[3]*y[5]*sqrt(3)-x[2]*y[3]*sqrt(3)+y[1]*sqrt(3) +y[5]*sqrt(3)+x[4]*y[5]*sqrt(3)-3*y[2]*y[3]-3*y[4]*y[5]-3*x[1]*x[3] -3*x[2]*x[3]-x[2]*y[4]*sqrt(3)-3*x[5]-3*y[1]*y[3]-3*x[1]-3*y[2]*y[4] +2*x[1]*y[4]*sqrt(3)-2*y[2]*sqrt(3)-3*x[4]*x[5]-3*x[2]*x[4] +2*y[3]*sqrt(3)*x[5]-2*y[1]*x[4]*sqrt(3), y[2]*sqrt(3)*x[4]+x[1]*y[3]*sqrt(3)-y[1]*x[3]*sqrt(3)+2*y[4]*sqrt(3)*x[5] +y[5]*sqrt(3)-2*x[4]*y[5]*sqrt(3)-3*y[2]*y[3]-3*y[4]*y[5]-3*y[3]*y[5] -3*y[2]*y[5]-3*x[3]-2*y[3]*sqrt(3)-3*x[4]-3*x[2]*x[3]-x[2]*y[4]*sqrt(3) -2*x[1]*y[2]*sqrt(3)-3*y[1]*y[4]-3*x[1]-3*x[1]*x[2]+2*y[1]*x[2]*sqrt(3) +y[3]*sqrt(3)*x[4]-3*x[3]*x[5]+y[2]*sqrt(3)-3*x[1]*x[4]-3*x[4]*x[5] -3*x[2]*x[5]+x[1]*y[5]*sqrt(3)-y[1]*x[5]*sqrt(3)-x[3]*y[4]*sqrt(3)-3*y[1]*y[2] };Maple 12's solve throws FGb at this system and it runs out of memory trying to get a tdeg Gröbner basis. Maple 11's solve uses different techniques and hasn't crashed on it after about an hour and looks doomed to churn for as long as I let it. So, the obvious things don't work...
John
sqrt(3)
My next attempt would involve replacing sqrt(3) by a variable (say s3), adding s3^2-3 to the system of equations. Then I would make sure to put s3 in the 'right' place in the ordering of variables.
After that, I would consider some changes of variables. The above looks like an algebraization of a system in spherical coordinates. Sometimes, going algebraic is the wrong thing to do. Going back to the original equations and dealing with differential equations might be simpler!
quadrics
To me it looks as a system of quadrics and generically they intersect
discrete due to dim = #equations. But the only thing I can 'see' or
guess is that the first 5 are equivalent to "Mittelpunktsflächen"
(= "centered hypersurfaces" ?) and the others seem parabolic. Not sure,
but if one would have the normal form for them, then it may be clearer.
The reason for the question might certainly help ... sqrt(3) smells
a bit like something based on Algebra or Number Theory.
And if the solution is not a discrete set, then it might matter over
which ring this is considered (not that I want to solve it ... never
used that corner of Maple).
circle
The first 5 equations say that (x,y)[i] for i=1..5 are 5 points on a unit circle. The circle has various parametrizations, such as x=cos(t), y=sin(t), or a rational parametrization, say x=(1-t^2)/(1+t^2), y=2*t/(1+t^2). Using any of them, we get only 5 equations instead of 10, and with 5 variables instead of 10.
Alec
Thanks for your
Thanks for your comments,
replacing the sqrt(3) by the variable s3 and adding the equation s3^2-3 worked using the function Isolate. So thanks for that suggestion.
Does anyone know why this might be the case? i.e. why the computation is easier if we add an extra equation and variable but make all of the coefficients integers?
Also, I'm interested in exactly how the "Isolate" function works - in particular how would I use the Groebner bases functions to reproduce the results? For example if I call Groebner[bases] and use the tdeg ordering Maple doesn't finish the computation even after 24 hours (compared to the 1min it takes using the Isolate function).
Steve
Groebner[Basis] and extra equations
The Groebner[Basis] command will actually replace sqrt(3) by new variable Z and insert the equation Z^2-3 to compute the Groebner basis. The difference is that in order to guarantee the correct result in general, Z and any other new variables must be made less important than all the original variables. For example, if your variables were {x,y}, then any term involving x or y to any power would be larger than a term involving only Z. This forces Z to be eliminated from the original system, which is required to get the correct Groebner basis.
When you replace sqrt(3) by a new variable and just compute a Groebner basis of the new system, then all the variables are mixed together and the problem can sometimes be easier. For RootFinding:-Isolate this is fine because you're going to solve for everything anyways. We should probably extend RootFinding:-Isolate to do this automatically.
So to answer your question. When you replace sqrt(3) by a variable and compute a Groebner basis, what you get may not be a Groebner basis of the original system. So there may be no way to reproduce the effect in Groebner[Basis] when sqrt(3) is present in the input.