Macaulay2 » Documentation
Packages » AlgebraicSplines :: splineMatrix
next | previous | forward | backward | up | index | toc

splineMatrix -- compute matrix whose kernel is the module of $C^r$ splines on $\Delta$

Synopsis

Description

This creates the basic spline matrix that has splines as its kernel.

i1 : V = {{0,0},{1,0},{1,1},{-1,1},{-2,-1},{0,-1}};-- the coordinates of vertices
i2 : F = {{0,2,1},{0,2,3},{0,3,4},{0,4,5},{0,1,5}};  -- a list of facets (pure complex)
i3 : E = {{0,1},{0,2},{0,3},{0,4},{0,5}};   -- list of edges
i4 : splineMatrix(V,F,E,1)

o4 = | 1 0  0  0  -1 t_1^2 0                   0                  
     | 1 -1 0  0  0  0     t_0^2-2t_0t_1+t_1^2 0                  
     | 0 1  -1 0  0  0     0                   t_0^2+2t_0t_1+t_1^2
     | 0 0  1  -1 0  0     0                   0                  
     | 0 0  0  1  -1 0     0                   0                  
     ------------------------------------------------------------------------
     0                    0     |
     0                    0     |
     0                    0     |
     t_0^2-4t_0t_1+4t_1^2 0     |
     0                    t_0^2 |

                        5                 10
o4 : Matrix (QQ[t ..t ])  <-- (QQ[t ..t ])
                 0   2             0   2

If each codimension one face of $\Delta$ is the intersection of exactly two facets, then the list of edges is unnecessary.

i5 : V = {{0,0},{1,0},{1,1},{-1,1},{-2,-1},{0,-1}};-- the coordinates of vertices
i6 : F = {{0,2,1},{0,2,3},{0,3,4},{0,4,5},{0,1,5}};  -- a list of facets (pure complex)
i7 : splineMatrix(V,F,1)

o7 = | 1 0  0  0  -1 t_1^2 0                   0                  
     | 1 -1 0  0  0  0     t_0^2-2t_0t_1+t_1^2 0                  
     | 0 1  -1 0  0  0     0                   t_0^2+2t_0t_1+t_1^2
     | 0 0  1  -1 0  0     0                   0                  
     | 0 0  0  1  -1 0     0                   0                  
     ------------------------------------------------------------------------
     0                    0     |
     0                    0     |
     0                    0     |
     t_0^2-4t_0t_1+4t_1^2 0     |
     0                    t_0^2 |

                        5                 10
o7 : Matrix (QQ[t ..t ])  <-- (QQ[t ..t ])
                 0   2             0   2

Splines are automatically computed on the cone over the given complex $\Delta$, and the last variable of the polynomial ring is always the variable used to homogenize. If the user desires splines over $\Delta$, use the option Homogenize=>false.

i8 : V = {{0,0},{1,0},{1,1},{-1,1},{-2,-1},{0,-1}};-- the coordinates of vertices
i9 : F = {{0,2,1},{0,2,3},{0,3,4},{0,4,5},{0,1,5}};  -- a list of facets (pure complex)
i10 : splineMatrix(V,F,1,Homogenize=>false)

o10 = | 1 0  0  0  -1 t_2^2 0                   0                  
      | 1 -1 0  0  0  0     t_1^2-2t_1t_2+t_2^2 0                  
      | 0 1  -1 0  0  0     0                   t_1^2+2t_1t_2+t_2^2
      | 0 0  1  -1 0  0     0                   0                  
      | 0 0  0  1  -1 0     0                   0                  
      -----------------------------------------------------------------------
      0                    0     |
      0                    0     |
      0                    0     |
      t_1^2-4t_1t_2+4t_2^2 0     |
      0                    t_1^2 |

                         5                 10
o10 : Matrix (QQ[t ..t ])  <-- (QQ[t ..t ])
                  1   2             1   2

If the user would like to define the underlying ring (e.g. for later reference), this may be done using the option BaseRing=>R, where R is a polynomial ring defined by the user.

i11 : V = {{0,0},{1,0},{1,1},{-1,1},{-2,-1},{0,-1}};-- the coordinates of vertices
i12 : F = {{0,2,1},{0,2,3},{0,3,4},{0,4,5},{0,1,5}};  -- a list of facets (pure complex)
i13 : R = QQ[x,y] --desired polynomial ring

o13 = R

o13 : PolynomialRing
i14 : splineMatrix(V,F,1,Homogenize=>false,BaseRing=>R)

o14 = | 1 0  0  0  -1 y2 0         0         0          0  |
      | 1 -1 0  0  0  0  x2-2xy+y2 0         0          0  |
      | 0 1  -1 0  0  0  0         x2+2xy+y2 0          0  |
      | 0 0  1  -1 0  0  0         0         x2-4xy+4y2 0  |
      | 0 0  0  1  -1 0  0         0         0          x2 |

              5      10
o14 : Matrix R  <-- R

Here is an example where the output is homogenized. Notice that homogenization occurs with respect to the last variable of the polynomial ring.

i15 : V = {{0,0},{1,0},{1,1},{-1,1},{-2,-1},{0,-1}};-- the coordinates of vertices
i16 : F = {{0,2,1},{0,2,3},{0,3,4},{0,4,5},{0,1,5}};  -- a list of facets (pure complex)
i17 : R = QQ[x,y,z] --desired polynomial ring

o17 = R

o17 : PolynomialRing
i18 : splineMatrix(V,F,1,BaseRing=>R)

o18 = | 1 0  0  0  -1 y2 0         0         0          0  |
      | 1 -1 0  0  0  0  x2-2xy+y2 0         0          0  |
      | 0 1  -1 0  0  0  0         x2+2xy+y2 0          0  |
      | 0 0  1  -1 0  0  0         0         x2-4xy+4y2 0  |
      | 0 0  0  1  -1 0  0         0         0          x2 |

              5      10
o18 : Matrix R  <-- R

Alternately, the spline matrix can be created directly from the dual graph (with edges labeled by linear forms). Note: This way of entering data requires the ambient polynomial ring to be defined. See also the generalizedSplines method.

i19 : R = QQ[x,y]

o19 = R

o19 : PolynomialRing
i20 : B = {{0,1},{1,2},{2,3},{3,4},{4,0}}

o20 = {{0, 1}, {1, 2}, {2, 3}, {3, 4}, {4, 0}}

o20 : List
i21 : H = {x-y,y,x,y-2*x,x+y}

o21 = {x - y, y, x, - 2x + y, x + y}

o21 : List
i22 : splineMatrix(B,H,1,InputType=>"ByLinearForms")

o22 = | 1  -1 0  0  0  x2-2xy+y2 0  0  0          0         |
      | 0  1  -1 0  0  0         y2 0  0          0         |
      | 0  0  1  -1 0  0         0  x2 0          0         |
      | 0  0  0  1  -1 0         0  0  4x2-4xy+y2 0         |
      | -1 0  0  0  1  0         0  0  0          x2+2xy+y2 |

              5      10
o22 : Matrix R  <-- R

Ways to use splineMatrix :

For the programmer

The object splineMatrix is a method function with options.