Changeset 7f24dd7 in git


Ignore:
Timestamp:
May 19, 2000, 12:07:06 PM (24 years ago)
Author:
Gerhard Pfister <pfister@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
b49b894ff4ce8577af08f6a78a8e02f07eee6663
Parents:
44561f48e2c8324b07d2d764f22307e5759be86d
Message:
neue prozedur zerodec eingefuegt


git-svn-id: file:///usr/local/Singular/svn/trunk@4350 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/primdec.lib

    r44561f r7f24dd7  
    1 // $Id: primdec.lib,v 1.66 2000-05-16 12:19:05 pfister Exp $
     1// $Id: primdec.lib,v 1.67 2000-05-19 10:07:06 pfister Exp $
    22///////////////////////////////////////////////////////////////////////////////
    33// primdec.lib                                                               //
     
    1111///////////////////////////////////////////////////////////////////////////////
    1212
    13 version="$Id: primdec.lib,v 1.66 2000-05-16 12:19:05 pfister Exp $";
     13version="$Id: primdec.lib,v 1.67 2000-05-19 10:07:06 pfister Exp $";
    1414info="
    1515LIBRARY: primdec.lib   PROCEDURES FOR PRIMARY DECOMPOSITION
     
    4343LIB "random.lib";
    4444LIB "inout.lib";
     45LIB "matrix.lib";
    4546///////////////////////////////////////////////////////////////////////////////
    4647//
     
    45814582}
    45824583
     4584proc zerodec(ideal I)
     4585"USAGE:   zerodec(I); I ideal
     4586 RETURN:  a list of primary ideals, the zero-dimensional decomposition of I
     4587 NOTE:    the algorithm of C. Monico, works only good for small vdim(std(I))
     4588          (<=100) and without parameters
     4589 EXAMPLE: example zerodec; shows an example
     4590"
     4591{
     4592   def R=basering;
     4593   poly q;
     4594   poly va=var(1);
     4595   int j;
     4596   ideal J=groebner(I);
     4597   int d=vdim(J);
     4598   ideal ba=kbase(J);
     4599   ideal jmap=randomLast(100);
     4600   poly p=jmap[size(jmap)]+random(-50,50);
     4601   matrix m;
     4602   matrix n[d][d];
     4603   list re;
     4604
     4605   for(j=2;j<=nvars(basering);j++)
     4606   {
     4607      va=va*var(j);
     4608   }
     4609   for(j=1;j<=d;j++)
     4610   {
     4611      q=reduce(p*ba[j],J);
     4612      m=coeffs(q,ba,va);
     4613      n[j,1..d]=m[1..d,1];
     4614   }
     4615   execute("ring P=("+charstr(R)+"),T,dp;");
     4616   map phi=R,T;
     4617   matrix n=phi(n);
     4618   matrix E=unitmat(d);
     4619   poly charpol=det(n-T*E);
     4620   if(charpol[size(charpol)]!=0)
     4621   {
     4622     list fac=factorize(charpol);
     4623     setring R;
     4624     map psi=P,p;
     4625     list rfac=psi(fac);
     4626     list re;
     4627
     4628     option(redSB);
     4629     for(j=2;j<=size(rfac[1]);j++)
     4630     {
     4631        re[j-1]=interred(I+ideal(rfac[1][j]^rfac[2][j]));
     4632     }
     4633     option(noredSB);
     4634     return(re);
     4635  }
     4636  else
     4637  {
     4638    setring R;
     4639    return(zerodec(I));
     4640  }
     4641}
     4642
     4643example
     4644{ "EXAMPLE:";  echo = 2;
     4645   ring r=0,(x,y),dp;
     4646   ideal i=x2-2,y2-2;
     4647   list pr=zerodec(i);
     4648   pr;
     4649}
     4650
     4651
     4652
Note: See TracChangeset for help on using the changeset viewer.