adjoint1.txt

Plain Text icon adjoint1.txt — Plain Text, 1 kB (1980 bytes)

Contenuto del file

\\ input file for PARI/GP

\\ list of the points
points = [[1,2,3,4,5],[1,6],[1,7],[1,8],[2,6],[2,7],[2,8],[3,6],[3,7],[3,8],[4,6],[4,7],[4,8],[5,6],[5,7],[5,8],[6,7],[6,8],[7,8]]

\\ canonical divisor
K = [-3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]

\\ curve of degree 8 with multiplicities at the points
C = [8, 5, 0, 2, 2, 0, 2, 0, 2, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2]

\\ lines
numlines = 11
L=matrix(numlines,#C,i,j,0)
L[1,]=[1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
L[2,]=[1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0]
L[3,]=[1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0]
L[4,]=[1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0]
L[5,]=[1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0]
L[6,]=[1,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,1,0]
L[7,]=[1,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,0,1]
L[8,]=[1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,1,0,1,1]
L[9,]=[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0]
L[10,]=[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0]
L[11,]=[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]

\\ self-intersection of the lines
selfint = [-2,-1,-1,-2,-2,-3,-4,-3,-1,-1,-1]

\\ ad_m(C)
adjoint = m*(K+C)

\\ remove negative values from adjoint
for(i=1,#adjoint, if(polcoeff(adjoint[i],1,m)<0,{adjoint[i]=0}))

\\ algorithm that computes recursively which line splits from the adjoint linear system
totalsplit = vector(numlines)
partialsplit = vector(numlines)
issplit = true
while(issplit && polcoeff(adjoint[1],1,m)>0, \
      issplit = false; \
      for(i=1,numlines, partialsplit[i] = 0); \
      for(i=1,numlines, intersection = adjoint[1]*L[i,1]-sum(j=2,#adjoint,adjoint[j]*L[i,j]); \
          if(polcoeff(intersection,1,m)<0, \
             {issplit = true; partialsplit[i]=intersection/selfint[i]})); \
      print(adjoint,partialsplit); \
      for(i=1,numlines, totalsplit[i]=totalsplit[i]+partialsplit[i]; \
          for(j=1,#adjoint,adjoint[j]=adjoint[j]-L[i,j]*partialsplit[i]; \
              if(polcoeff(adjoint[j],1,m)<0,adjoint[j]=0))));
print(adjoint,totalsplit)