Back to Forum | View unanswered posts | View active topics
Topic review - how many singular points?? |
Author |
Message |
|
|
Post subject: |
Re: how many singular points?? |
|
|
Continuation: First the verification of the claims, then a proc to be used instead of the proc tjurina to determine the sum of the local Milnor numbers on an affine hypersurface. Code: > ring rlp = 0,(x,y),lp; > option(redSB); > poly f = (x2-y2)^3+2x7+x8; > milnor(f); 35 > tjurina(f); 27 > vdim(std(radical(jacob(f)))); // there are five singular points 5 > facstd(jacob(f)); // these they are [1]: _[1]=y _[2]=4x-3 [2]: _[1]=y _[2]=x-1 [3]: _[1]=y _[2]=x [4]: _[1]=4y+7 _[2]=4x-7 [5]: _[1]=4y-7 _[2]=4x-7
> // where are the singular points lying? // two singular ponts on f=0 > subst(f,x,0,y,0); 0 > subst(f,x,1,y,0); 0
// two singular points on f = -823543/65536 > subst(f,x,7/4,y,7/4); -823543/65536 > subst(f,x,7/4,y,-7/4); -823543/65536
// one singular point on f = 729/65536 > subst(f,x,3/4,y,0); 729/65536
That is there are singular points on f=0, f +823543/65536 = 0 and on f - 729/65536 =0. Since the coordinates are explicity given above, you can compute the local Milnor numbers in the same way as in my last posting. Now a proc which does the job without localizeing. It uses the command sat from elim.libCode: LIB "elim.lib"; // for sat
proc hypmilnor(poly f) "USAGE: hypmilnor(f); f poly RETURN: int, the sum of the local Milnor numbers on the hypersurface f==0 EXAMPLE: example hypmilnor; shows an example " { int k=1; ideal Jstd = std(jacob(f));
int numsingpts = vdim(std(radical(Jstd+f))); if (numsingpts<0) { "The hypersurface has non-isolated singularities"; return(numsingpts); // i.e. return(-1); } if (numsingpts==1) {"There is 1 singular point on the hypersurface."; } else { "There are",numsingpts, "singular points on the hypersurface."; } k = sat(Jstd,f)[2]; return(vdim(std(Jstd+f^k))); }
If you set the variable printlevel, then you get information about the exponent for f^k. Code: > hypmilnor(f+823543/65536); There are 2 singular points on the hypersurface. 4 > hypmilnor(f-729/65536); There is 1 singular point on the hypersurface. 1
> printlevel = 2;
> hypmilnor(f); There are 2 singular points on the hypersurface. // compute quotient 1 // compute quotient 2 // compute quotient 3 // saturation becomes stable after 2 iteration(s)
30
Since 35 = 30 + 4 +1, we have precisely described the distribution of the singular points and correctly computed the sum of Milnor numbers on f==0. ------ Here I considered only an affine hypersurface, there might be singularities at infinity. Hope it helps for your purpose, Christian Gorzel
Continuation: First the verification of the claims, then a proc to be used instead of the proc tjurina to determine the sum of the local Milnor numbers on an affine hypersurface.
[code] > ring rlp = 0,(x,y),lp; > option(redSB); > poly f = (x2-y2)^3+2x7+x8; > milnor(f); 35 > tjurina(f); 27 > vdim(std(radical(jacob(f)))); // there are five singular points 5 > facstd(jacob(f)); // these they are [1]: _[1]=y _[2]=4x-3 [2]: _[1]=y _[2]=x-1 [3]: _[1]=y _[2]=x [4]: _[1]=4y+7 _[2]=4x-7 [5]: _[1]=4y-7 _[2]=4x-7
> // where are the singular points lying? // two singular ponts on f=0 > subst(f,x,0,y,0); 0 > subst(f,x,1,y,0); 0
// two singular points on f = -823543/65536 > subst(f,x,7/4,y,7/4); -823543/65536 > subst(f,x,7/4,y,-7/4); -823543/65536
// one singular point on f = 729/65536 > subst(f,x,3/4,y,0); 729/65536 [/code]
That is there are singular points on f=0, f +823543/65536 = 0 and on f - 729/65536 =0. Since the coordinates are explicity given above, you can compute the local Milnor numbers in the same way as in my last posting.
Now a proc which does the job without localizeing. It uses the command sat from [b]elim.lib[/b]
[code] LIB "elim.lib"; // for sat
proc hypmilnor(poly f) "USAGE: hypmilnor(f); f poly RETURN: int, the sum of the local Milnor numbers on the hypersurface f==0 EXAMPLE: example hypmilnor; shows an example " { int k=1; ideal Jstd = std(jacob(f));
int numsingpts = vdim(std(radical(Jstd+f))); if (numsingpts<0) { "The hypersurface has non-isolated singularities"; return(numsingpts); // i.e. return(-1); } if (numsingpts==1) {"There is 1 singular point on the hypersurface."; } else { "There are",numsingpts, "singular points on the hypersurface."; } k = sat(Jstd,f)[2]; return(vdim(std(Jstd+f^k))); } [/code]
If you set the variable [b]printlevel[/b], then you get information about the exponent for f^k.
[code] > hypmilnor(f+823543/65536); There are 2 singular points on the hypersurface. 4 > hypmilnor(f-729/65536); There is 1 singular point on the hypersurface. 1
> printlevel = 2;
> hypmilnor(f); There are 2 singular points on the hypersurface. // compute quotient 1 // compute quotient 2 // compute quotient 3 // saturation becomes stable after 2 iteration(s)
30 [/code]
Since 35 = 30 + 4 +1, we have precisely described the distribution of the singular points and correctly computed the sum of Milnor numbers on f==0.
------ Here I considered only an affine hypersurface, there might be singularities at infinity. Hope it helps for your purpose,
Christian Gorzel
|
|
|
|
Posted: Sat Mar 26, 2011 10:49 pm |
|
|
|
|
|
Post subject: |
Re: how many singular points?? |
|
|
I have to correct my answer given above, but first to your question: Proposition: Supposed f has isolated singularities, then it holds Tjurina number <= Milnor number The Milnor number and Tjurina number are the same if and only if the polynomial is weighted homogenoues. In this case the origin is the only singular point. Proof-sketch: The inclusion of the ideals (*) M:=<df/dx,df/dy,df/dz> \subseteq <df/dx,df/dy,df/dz,f> =:T give the reverser relation dim C[[x,y,z]]/T <= dim C[[x,y,z]]/M, which is, by definition, the relation between Tjurina and Milnor number. For the "equation" statemet: the "if part" follows from the Euler-equation, the the "only if part" is due to K. Saito. \qedNote also that local Tjurina and Milnor numbers add to the global ones For a bit more details see for instance Prop. 3.6 in Rossi and Terracinis article and the references therein: http://arxiv.org/abs/0809.4345 (The examples I metioned above are, up to the nonzero constant term, are weighted homogenous.) // ------------------------------ Now to the error: The command tjurina is not the right one for your problem, in case that the Milnor and Tjurina number does not coincide. At the end you can forget about the term "tjurina" number, but I will show what you have to do instead. Take a look at equation (*): We have put the equation f into the ideal on the right hand side, for the reason to select those singular points which are lying on the curve f==0. The problem is, that this additional equation may give new restrictions for the multpilicity. So what we have do instead, it to replace f by f^k, where k is a sufficintly large integer k>=1 such that f^k in contained in the ideal <df/dx,df/dy,df/dz>. (This check, passing through al loop, can be done by Groebner basis computation. Call reduce(f^k,std(J))==0.) Once we have found a suitable exponent k, the singular points from the curve f=0, are selected in the same way by the equation f^k but f^k it will not affect the multplicity. I have constructed an example with the following properties: 1.) The Milnor and Tjurina number are not the same, 2.) there are five singular points which are all rational, 3.) there are three singular fibres, 4.) the zero fibre has two singular points. Code: > LIB "sing.lib"; > ring rds = 0,(x,y),ds; // local computations > poly f = (x2-y2)^3 -2x7+x8; > ideal J = jacob(f); > milnor(f); 29 > tjurina(f); // it is strict less than the Milnor number 26 > // There are at least (in fact there are exactly, see below) // two singular points on the curve f = 0
// The origin with lokal Milnor number 29 > subst(f,x,0,y,0); 0 > subst(J,x,0,y,0); _[1]=0 _[2]=0
> // and the point (x,y) = (1,0) subst(J,x,1,y,0); _[1]=0 _[2]=0 > subst(f,x,1,y,0); 0 > // We want to compute the local Milnor number at this point // Make a linear coordinate change such that the // singular point (1,0) becomes the origin > poly g = subst(f,x,x+1); > milnor(g); // this second singular point is an ordinary node 1
Now, if the command tjurina was the correct method to determine the sum of the local Milnor numbers, it should give an result >=30 for a computation w.r.t. global ordering. Code: > ring rdp = 0,(x,y),dp; > poly f = fetch(rds,f); > milnor(f); // This is the sum of all local Milnor numbers lying on differnt fibres, // but not the sum of local Milnor numbers on f==0, since there are // further singular points not on f=0. 35 > tjurina(f); // recall, this computation does vdim(std(jacob(f)+f)) 27
As 27< 30, we see that tjurinadoes not give the correct result concerning the sum of local Milnor numbers on the curve f = 0. What we have to do is consider higher powers of f Code: > ideal J = jacob(f); > ideal I = J,f^2; > vdim(std(I)); // This is what wanted to get. 30 > vdim(std(J+f^3)); // Higher powers certainly work as well 30 It remains to explain, how to find the sufficent large exponent. To be continued... In the meantime, try to find out what I have claimed about the singular points and fibres of this polynomial.
I have to correct my answer given above, but first to your question:
[b]Proposition[/b]: Supposed f has isolated singularities, then it holds
Tjurina number <= Milnor number
The Milnor number and Tjurina number are the same if and only if the polynomial is weighted homogenoues. In this case the origin is the only singular point.
[i]Proof-sketch:[/i] The inclusion of the ideals (*) M:=<df/dx,df/dy,df/dz> \subseteq <df/dx,df/dy,df/dz,f> =:T give the reverser relation dim C[[x,y,z]]/T <= dim C[[x,y,z]]/M,
which is, by definition, the relation between Tjurina and Milnor number.
For the "equation" statemet: the "if part" follows from the Euler-equation, the the "only if part" is due to K. Saito. [b]\qed[/b]
Note also that local Tjurina and Milnor numbers add to the global ones For a bit more details see for instance Prop. 3.6 in Rossi and Terracinis article and the references therein: http://arxiv.org/abs/0809.4345 (The examples I metioned above are, up to the nonzero constant term, are weighted homogenous.) // ------------------------------ Now to the error: The command tjurina is not the right one for your problem, in case that the Milnor and Tjurina number does not coincide. At the end you can forget about the term "tjurina" number, but I will show what you have to do instead.
Take a look at equation (*): We have put the equation f into the ideal on the right hand side, for the reason to select those singular points which are lying on the curve f==0. The problem is, that this additional equation may give new restrictions for the multpilicity. So what we have do instead, it to replace f by f^k, where k is a sufficintly large integer k>=1 such that f^k in contained in the ideal <df/dx,df/dy,df/dz>. (This check, passing through al loop, can be done by Groebner basis computation. Call reduce(f^k,std(J))==0.)
Once we have found a suitable exponent k, the singular points from the curve f=0, are selected in the same way by the equation f^k but f^k it will not affect the multplicity.
I have constructed an example with the following properties:
1.) The Milnor and Tjurina number are not the same, 2.) there are five singular points which are all rational, 3.) there are three singular fibres, 4.) the zero fibre has two singular points.
[code] > LIB "sing.lib"; > ring rds = 0,(x,y),ds; // local computations > poly f = (x2-y2)^3 -2x7+x8; > ideal J = jacob(f); > milnor(f); 29 > tjurina(f); // it is strict less than the Milnor number 26 > // There are at least (in fact there are exactly, see below) // two singular points on the curve f = 0
// The origin with lokal Milnor number 29 > subst(f,x,0,y,0); 0 > subst(J,x,0,y,0); _[1]=0 _[2]=0
> // and the point (x,y) = (1,0) subst(J,x,1,y,0); _[1]=0 _[2]=0 > subst(f,x,1,y,0); 0 > // We want to compute the local Milnor number at this point // Make a linear coordinate change such that the // singular point (1,0) becomes the origin > poly g = subst(f,x,x+1); > milnor(g); // this second singular point is an ordinary node 1 [/code] Now, if the command [b]tjurina[/b] was the correct method to determine the sum of the local Milnor numbers, it should give an result >=30 for a computation w.r.t. global ordering. [code] > ring rdp = 0,(x,y),dp; > poly f = fetch(rds,f); > milnor(f); // This is the sum of all local Milnor numbers lying on differnt fibres, // but not the sum of local Milnor numbers on f==0, since there are // further singular points not on f=0. 35 > tjurina(f); // recall, this computation does vdim(std(jacob(f)+f)) 27 [/code] As 27< 30, we see that [b]tjurina[/b]does not give the correct result concerning the sum of local Milnor numbers on the curve f = 0. What we have to do is consider higher powers of f [code] > ideal J = jacob(f); > ideal I = J,f^2; > vdim(std(I)); // This is what wanted to get. 30 > vdim(std(J+f^3)); // Higher powers certainly work as well 30 [/code]
It remains to explain, how to find the sufficent large exponent. To be continued... In the meantime, try to find out what I have claimed about the singular points and fibres of this polynomial. :roll:
|
|
|
|
Posted: Wed Mar 23, 2011 5:05 pm |
|
|
|
|
|
Post subject: |
Re: how many singular points?? |
|
|
thanks for your answer! i've one more question now: is it possible, that milnor number and tjurina gives me the same number? i'm not sure if I'm right.
you helped me much!
thanks for your answer! i've one more question now: is it possible, that milnor number and tjurina gives me the same number? i'm not sure if I'm right.
you helped me much!
|
|
|
|
Posted: Mon Mar 21, 2011 2:02 pm |
|
|
|
|
|
Post subject: |
Re: how many singular points?? |
|
|
laura wrote: I've got a polynom F. The singular points of V(F) is given by V(I),
with I is ideal of the partial derivatives dF/dx, dF/dy, dF/dz.
How many singular points exist?
Do you only want the number of solutions (singular points) or do you want to count them with multiplicities? If you want them without the muliplicities, then you have to compute the radical first. Furthermore, your description is not quite correct: If you are gven a polynomial F in x,y,z, and I is generated by dF/dx, dF/dy, dF/dz, then V(I) describes all singular ponts which may be lying on some fibre F(x,y,z) =t, t \in C, but not necessarily on the hypersurface F(x,y,z) = 0. (e.g. think of F= xy resp F = xy-1) The number of singular points with its multplicities is called the Tjurina number, those, with the multiplicities, on the hypersurface F=0 is called the Milnor number. http://www.singular.uni-kl.de/Manual/la ... htm#SEC710 Singular offers with the library singl.lib the two commands tjurina resp. milnor, which have be invoke just with the definining equation F. In any case, to count the number of solutions (with multplicities), vdim(std( ..)) willbe used. A simple example in two variables which explains the differences. Code: > LIB"sing.lib"; > ring r=0,(x,y),dp; > poly f = x2-y4+1; // this is (x-y^2)*(x+y^2) displaced into the fibre over t=1 // these are two parabolas touching
> vdim(std(jacob (f))); // <-- this what the command milnor does 3 > milnor(f); 3 > ideal J = jacob(f),f; // there is no singular point on f = 0
> vdim(std(J)); // this is what tjurina does 0 > tjurina(f); 0
// What are the singular points? // there is only one: > facstd(jacob(f)); // == [1]: _[1]=y _[2]=x
> subst(f,x,0,y,0); // it is lying on f=1 1
> ideal J1 = jacob(f),f-1; // compute the Milnor number of the singular points on f=1 > vdim(std(J1)); 3
// again back to the question with the "multplicities"
// compare > std(jacob(f)); _[1]=x _[2]=y3 > facstd(jacob(f)); // this is the radical [1]: _[1]=y _[2]=x > radical(jacob(f)); _[1]=y _[2]=x > vdim(std(radical(jacob(f)))); // there is only one singular point, 1 // but the Milnor number is 3
[quote="laura"] I've got a polynom F. The singular points of V(F) is given by V(I),
with I is ideal of the partial derivatives dF/dx, dF/dy, dF/dz.
How many singular points exist? [/quote]
Do you only want the number of solutions (singular points) or do you want to count them [b]with multiplicities[/b]?
If you want them without the muliplicities, then you have to compute the radical first.
Furthermore, your description is not quite correct:
If you are gven a polynomial F in x,y,z, and I is generated by dF/dx, dF/dy, dF/dz, then V(I) describes all singular ponts which may be lying on [b]some[/b] fibre F(x,y,z) =t, t \in C, but not necessarily on the hypersurface F(x,y,z) = 0. (e.g. think of F= xy resp F = xy-1)
The number of singular points with its multplicities is called the Tjurina number, those, with the multiplicities, on the hypersurface F=0 is called the Milnor number.
http://www.singular.uni-kl.de/Manual/latest/sing_658.htm#SEC710
Singular offers with the library [b]singl.lib[/b] the two commands [b]tjurina[/b] resp. [b]milnor[/b], which have be invoke just with the definining equation F.
In any case, to count the number of solutions (with multplicities), [b]vdim(std( ..))[/b] willbe used.
A simple example in two variables which explains the differences.
[code] > LIB"sing.lib"; > ring r=0,(x,y),dp; > poly f = x2-y4+1; // this is (x-y^2)*(x+y^2) displaced into the fibre over t=1 // these are two parabolas touching
> vdim(std(jacob (f))); // <-- this what the command milnor does 3 > milnor(f); 3 > ideal J = jacob(f),f; // there is no singular point on f = 0
> vdim(std(J)); // this is what tjurina does 0 > tjurina(f); 0
// What are the singular points? // there is only one: > facstd(jacob(f)); // == [1]: _[1]=y _[2]=x
> subst(f,x,0,y,0); // it is lying on f=1 1
> ideal J1 = jacob(f),f-1; // compute the Milnor number of the singular points on f=1 > vdim(std(J1)); 3
// again back to the question with the "multplicities"
// compare > std(jacob(f)); _[1]=x _[2]=y3 > facstd(jacob(f)); // this is the radical [1]: _[1]=y _[2]=x > radical(jacob(f)); _[1]=y _[2]=x > vdim(std(radical(jacob(f)))); // there is only one singular point, 1 // but the Milnor number is 3 [/code]
|
|
|
|
Posted: Thu Mar 17, 2011 6:11 pm |
|
|
|
|
|
Post subject: |
how many singular points?? |
|
|
hi, i'm laura and i have to solve a mathematic problem with the programm singular that i don't know. caon anyone help me??
my task: I've got a polynom F. The singular points of V(F) is given by V(I), with I is ideal of the partial derivatives dF/dx, dF/dy, dF/dz. How many singular points exist?
please help me... thanks!
hi, i'm laura and i have to solve a mathematic problem with the programm singular that i don't know. caon anyone help me??
my task: I've got a polynom F. The singular points of V(F) is given by V(I), with I is ideal of the partial derivatives dF/dx, dF/dy, dF/dz. How many singular points exist?
please help me... thanks!
|
|
|
|
Posted: Wed Mar 16, 2011 8:13 pm |
|
|
|
|
|
It is currently Fri May 13, 2022 11:04 am
|
|