next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
AlgebraicSplines :: splineMatrix

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 , t ])  <--- (QQ[t , t , t ])
                 0   1   2              0   1   2

If each codimension one face of Δ 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 , t ])  <--- (QQ[t , t , t ])
                 0   1   2              0   1   2

Splines are automatically computed on the cone over the given complex Δ, and the last variable of the polynomial ring is always the variable used to homogenize. If the user desires splines over Δ, 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 :