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

## Synopsis

• Usage:
S = splineMatrix(V,F,E,r)
S = splineMatrix(V,F,r)
S = splineMatrix(L,r)
S = splineMatrix(B,H,r)
• Inputs:
• V, a list, list of coordinates of vertices of $\Delta$
• F, a list, list of facets of $\Delta$ (each facet is recorded as a list of indices of vertices taken from V)
• E, a list, list of codimension one faces of $\Delta$ (interior or not); each codimension one face is recorded as a list of indices of vertices taken from V
• r, an integer, degree of desired continuity
• L, a list, list $\{V,F,E\}$ of vertices, facets, and codimension one faces of $\Delta$
• H, a list, list of forms defining codimension one faces of $\Delta$
• Optional inputs:
• InputType (missing documentation) => , default value ByFacets,
• BaseRing (missing documentation) => a ring, default value null,
• Homogenize (missing documentation) => , default value true,
• CoefficientRing (missing documentation) => a ring, default value QQ,
• VariableName (missing documentation) => , default value t,
• Outputs:
• S, , resulting matrix whose kernel is the spline module

## 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 :

• "splineMatrix(List,List,List,ZZ)"
• "splineMatrix(List,List,ZZ)"
• "splineMatrix(List,ZZ)"

## For the programmer

The object splineMatrix is .