Help solving a more difficult multivariate polynomial system
mcody · Tue Oct 29, 2013 6:30 am
Greetings,
I have been using Singular over the last month or so to try to solve some systems of multivariate polynomial equations. I have been successful, to some extent, solving some systems, such as the following:
The results are about as I expected, although I am surprised to see the two complex results that are actually points. An explanation for those results would be appreciated, but that is not my main questions.
What I am trying to do now is solve for a more difficult system of multivariate polynomials, which I provide the following example:
This is where, with my current understanding of the mathematical concepts and of Singular, I am lost. I don't really quite understand what is meant by "zero-dimensional" versus non-zero-dimensional". Nor do I really understand how to determine the dimension of my systems of equations. Is this the Krull dimension or the Gelfand-Kirillov dimension? For that matter what is the difference between the two? Why is the ideal I "no standard basis", but dim(I) equals 2?
I would really appreciate some assistance in trying to solve this system of equations. I have searched through previous postings on this forum and read hints that perhaps only a reordering of the polynomials may be needed. I'm not exactly sure.
Regards,
Mac Cody
I have been using Singular over the last month or so to try to solve some systems of multivariate polynomial equations. I have been successful, to some extent, solving some systems, such as the following:
Code:
LIB "solve.lib";
// ** loaded /usr/share/Singular/LIB/solve.lib (13733,2010-12-06)
// ** loaded /usr/share/Singular/LIB/triang.lib (13499,2010-10-15)
// ** loaded /usr/share/Singular/LIB/elim.lib (14661,2012-03-05)
// ** loaded /usr/share/Singular/LIB/ring.lib (15322,2012-10-12)
// ** loaded /usr/share/Singular/LIB/primdec.lib (14732,2012-03-30)
// ** loaded /usr/share/Singular/LIB/absfact.lib (14191,2011-05-04)
// ** loaded /usr/share/Singular/LIB/matrix.lib (13658,2010-11-16)
// ** loaded /usr/share/Singular/LIB/nctools.lib (14246,2011-05-26)
// ** loaded /usr/share/Singular/LIB/random.lib (14661,2012-03-05)
// ** loaded /usr/share/Singular/LIB/poly.lib (14852,2012-04-30)
// ** loaded /usr/share/Singular/LIB/inout.lib (13499,2010-10-15)
// ** loaded /usr/share/Singular/LIB/general.lib (14191,2011-05-04)
ring R = real,(x1,y1,x2,y2),dp;
poly eq1 = 16.00000*x1^2+25.00000*y1^2-400.00000;
poly eq2 = 16.00000*x2^2-960.00000*x2+25.00000*y2^2+14000.00000;
poly eq3 = 32.00000*x1^2-32.00000*x1*x2+50.00000*y1^2-50.00000*y1*y2;
poly eq4 = 32.00000*x1*x2-960.00000*x1+50.00000*y1*y2-32.00000*x2^2+960.00000*x2-50.00000*y2^2;
ideal I = eq1,eq2,eq3,eq4;
def AC=solve(I,6,0,"nodisplay");
// 'solve' created a ring, in which a list SOL of numbers (the complex solutions)
// is stored.
// To access the list of complex solutions, type (if the name R was assigned
// to the return value):setring AC;
SOL;
[1]:
[1]:
-0.0000805975
[2]:
-4.0005
[3]:
30.000081
[4]:
-4.000009
[2]:
[1]:
1.666729
[2]:
3.7714
[3]:
28.333272
[4]:
-3.771226
[3]:
[1]:
1.666729
[2]:
-3.7714
[3]:
28.333272
[4]:
3.771226
[4]:
[1]:
-0.0000805975
[2]:
4.0005
[3]:
30.000081
[4]:
4.000009
[5]:
[1]:
15
[2]:
(i*11.313848)
[3]:
15
[4]:
(i*11.313709)
[6]:
[1]:
15
[2]:
(-i*11.313848)
[3]:
15
[4]:
(-i*11.313709)
// ** loaded /usr/share/Singular/LIB/solve.lib (13733,2010-12-06)
// ** loaded /usr/share/Singular/LIB/triang.lib (13499,2010-10-15)
// ** loaded /usr/share/Singular/LIB/elim.lib (14661,2012-03-05)
// ** loaded /usr/share/Singular/LIB/ring.lib (15322,2012-10-12)
// ** loaded /usr/share/Singular/LIB/primdec.lib (14732,2012-03-30)
// ** loaded /usr/share/Singular/LIB/absfact.lib (14191,2011-05-04)
// ** loaded /usr/share/Singular/LIB/matrix.lib (13658,2010-11-16)
// ** loaded /usr/share/Singular/LIB/nctools.lib (14246,2011-05-26)
// ** loaded /usr/share/Singular/LIB/random.lib (14661,2012-03-05)
// ** loaded /usr/share/Singular/LIB/poly.lib (14852,2012-04-30)
// ** loaded /usr/share/Singular/LIB/inout.lib (13499,2010-10-15)
// ** loaded /usr/share/Singular/LIB/general.lib (14191,2011-05-04)
ring R = real,(x1,y1,x2,y2),dp;
poly eq1 = 16.00000*x1^2+25.00000*y1^2-400.00000;
poly eq2 = 16.00000*x2^2-960.00000*x2+25.00000*y2^2+14000.00000;
poly eq3 = 32.00000*x1^2-32.00000*x1*x2+50.00000*y1^2-50.00000*y1*y2;
poly eq4 = 32.00000*x1*x2-960.00000*x1+50.00000*y1*y2-32.00000*x2^2+960.00000*x2-50.00000*y2^2;
ideal I = eq1,eq2,eq3,eq4;
def AC=solve(I,6,0,"nodisplay");
// 'solve' created a ring, in which a list SOL of numbers (the complex solutions)
// is stored.
// To access the list of complex solutions, type (if the name R was assigned
// to the return value):setring AC;
SOL;
[1]:
[1]:
-0.0000805975
[2]:
-4.0005
[3]:
30.000081
[4]:
-4.000009
[2]:
[1]:
1.666729
[2]:
3.7714
[3]:
28.333272
[4]:
-3.771226
[3]:
[1]:
1.666729
[2]:
-3.7714
[3]:
28.333272
[4]:
3.771226
[4]:
[1]:
-0.0000805975
[2]:
4.0005
[3]:
30.000081
[4]:
4.000009
[5]:
[1]:
15
[2]:
(i*11.313848)
[3]:
15
[4]:
(i*11.313709)
[6]:
[1]:
15
[2]:
(-i*11.313848)
[3]:
15
[4]:
(-i*11.313709)
The results are about as I expected, although I am surprised to see the two complex results that are actually points. An explanation for those results would be appreciated, but that is not my main questions.
What I am trying to do now is solve for a more difficult system of multivariate polynomials, which I provide the following example:
Code:
> LIB "solve.lib";
// ** loaded /usr/share/Singular/LIB/solve.lib (13733,2010-12-06)
// ** loaded /usr/share/Singular/LIB/triang.lib (13499,2010-10-15)
// ** loaded /usr/share/Singular/LIB/elim.lib (14661,2012-03-05)
// ** loaded /usr/share/Singular/LIB/ring.lib (15322,2012-10-12)
// ** loaded /usr/share/Singular/LIB/primdec.lib (14732,2012-03-30)
// ** loaded /usr/share/Singular/LIB/absfact.lib (14191,2011-05-04)
// ** loaded /usr/share/Singular/LIB/matrix.lib (13658,2010-11-16)
// ** loaded /usr/share/Singular/LIB/nctools.lib (14246,2011-05-26)
// ** loaded /usr/share/Singular/LIB/random.lib (14661,2012-03-05)
// ** loaded /usr/share/Singular/LIB/poly.lib (14852,2012-04-30)
// ** loaded /usr/share/Singular/LIB/inout.lib (13499,2010-10-15)
// ** loaded /usr/share/Singular/LIB/general.lib (14191,2011-05-04)
> ring R = real,(x1,y1,x2,y2),dp;
> poly eqn1 = 20.50000*x1^2-9.00000*x1*y1+20.50000*y1^2-400.00000;
> poly eqn2 = 22.75000*x2^2+7.79423*x2*y2-1365.00000*x2+18.25000*y2^2-233.82686*y2+20075.00000;
> poly eqn3 = 41.00000*x1^2-18.00000*x1*y1-41.00000*x1*x2+9.00000*x1*y2+41.00000*y1^2+9.00000*y1*x2-41.00000*y1*y2;
> poly eqn4 = 45.50000*x1*x2+7.79423*x1*y2-1365.00000*x1+7.79423*y1*x2+36.50000*y1*y2-233.82686*y1-45.50000*x2^2-15.58846*x2*y2+1365.00000*x2-36.50000*y2^2+233.82686*y2;
> ideal I = eqn1,eqn2,eqn3,eqn4;
> def AC=solve(I,8,0,60, "nodisplay");
? ideal not zero-dimensional
? leaving solve.lib::solve
> dim(I);
// ** I is no standard basis
2
>
// ** loaded /usr/share/Singular/LIB/solve.lib (13733,2010-12-06)
// ** loaded /usr/share/Singular/LIB/triang.lib (13499,2010-10-15)
// ** loaded /usr/share/Singular/LIB/elim.lib (14661,2012-03-05)
// ** loaded /usr/share/Singular/LIB/ring.lib (15322,2012-10-12)
// ** loaded /usr/share/Singular/LIB/primdec.lib (14732,2012-03-30)
// ** loaded /usr/share/Singular/LIB/absfact.lib (14191,2011-05-04)
// ** loaded /usr/share/Singular/LIB/matrix.lib (13658,2010-11-16)
// ** loaded /usr/share/Singular/LIB/nctools.lib (14246,2011-05-26)
// ** loaded /usr/share/Singular/LIB/random.lib (14661,2012-03-05)
// ** loaded /usr/share/Singular/LIB/poly.lib (14852,2012-04-30)
// ** loaded /usr/share/Singular/LIB/inout.lib (13499,2010-10-15)
// ** loaded /usr/share/Singular/LIB/general.lib (14191,2011-05-04)
> ring R = real,(x1,y1,x2,y2),dp;
> poly eqn1 = 20.50000*x1^2-9.00000*x1*y1+20.50000*y1^2-400.00000;
> poly eqn2 = 22.75000*x2^2+7.79423*x2*y2-1365.00000*x2+18.25000*y2^2-233.82686*y2+20075.00000;
> poly eqn3 = 41.00000*x1^2-18.00000*x1*y1-41.00000*x1*x2+9.00000*x1*y2+41.00000*y1^2+9.00000*y1*x2-41.00000*y1*y2;
> poly eqn4 = 45.50000*x1*x2+7.79423*x1*y2-1365.00000*x1+7.79423*y1*x2+36.50000*y1*y2-233.82686*y1-45.50000*x2^2-15.58846*x2*y2+1365.00000*x2-36.50000*y2^2+233.82686*y2;
> ideal I = eqn1,eqn2,eqn3,eqn4;
> def AC=solve(I,8,0,60, "nodisplay");
? ideal not zero-dimensional
? leaving solve.lib::solve
> dim(I);
// ** I is no standard basis
2
>
This is where, with my current understanding of the mathematical concepts and of Singular, I am lost. I don't really quite understand what is meant by "zero-dimensional" versus non-zero-dimensional". Nor do I really understand how to determine the dimension of my systems of equations. Is this the Krull dimension or the Gelfand-Kirillov dimension? For that matter what is the difference between the two? Why is the ideal I "no standard basis", but dim(I) equals 2?
I would really appreciate some assistance in trying to solve this system of equations. I have searched through previous postings on this forum and read hints that perhaps only a reordering of the polynomials may be needed. I'm not exactly sure.
Regards,
Mac Cody