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 0 0 |
| 1 -1 0 0 0 0 t_0^2-2t_0t_1+t_1^2 0 0 0 |
| 0 1 -1 0 0 0 0 t_0^2+2t_0t_1+t_1^2 0 0 |
| 0 0 1 -1 0 0 0 0 t_0^2-4t_0t_1+4t_1^2 0 |
| 0 0 0 1 -1 0 0 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 0 0 |
| 1 -1 0 0 0 0 t_0^2-2t_0t_1+t_1^2 0 0 0 |
| 0 1 -1 0 0 0 0 t_0^2+2t_0t_1+t_1^2 0 0 |
| 0 0 1 -1 0 0 0 0 t_0^2-4t_0t_1+4t_1^2 0 |
| 0 0 0 1 -1 0 0 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 0 0 |
| 1 -1 0 0 0 0 t_1^2-2t_1t_2+t_2^2 0 0 0 |
| 0 1 -1 0 0 0 0 t_1^2+2t_1t_2+t_2^2 0 0 |
| 0 0 1 -1 0 0 0 0 t_1^2-4t_1t_2+4t_2^2 0 |
| 0 0 0 1 -1 0 0 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
|
The object splineMatrix is a method function with options.