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 |