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 |
The object splineMatrix is a method function with options.