An example of linear and quadratic b - spline values and derivatives for a fixed set of knots. To be used when verifying B - spline implementations (e.g. PPPACK, gsl_bspline). In[35]:=
H* Define Bsplines recursively *L Clear@t, x, B, dBD; B@j_, 0D := If@x@@jDD £ ð < x@@j + 1DD, 1, 0D &; B@j_, n_D := FunctionBt, FullSimplifyB IfBt ¹ x@@jDD && x@@j + nDD ¹ x@@jDD, t - x@@jDD B@j, n - 1D@tD, x@@j + nDD - x@@jDD 0F + IfBt ¹ x@@j + n + 1DD && x@@j + n + 1DD ¹ x@@j + 1DD, x@@j + n + 1DD - t B@j + 1, n - 1D@tD, x@@j + n + 1DD - x@@j + 1DD 0F FF;
In[38]:=
H* Establish our knots *L x = 8-3, -3, -3, 2, 9, 12, 21, 21, 21<; H* Establish our sample locations *L xloc = 88t ® 0<, 8t ® 5<, 8t ® 9<, 8t ® 12<, 8t ® 15<<;
In[40]:=
H* Examine k=2 linears *L Plot@8B@1, 1D@tD, B@2, 1D@tD, B@3, 1D@tD, B@4, 1D@tD, B@5, 1D@tD, B@6, 1D@tD<, 8t, -4, 22<, PlotRange ® FullD 1.0
0.8
0.6 Out[40]=
0.4
0.2
5
10
15
20
2 bsplineverification.nb
In[41]:=
Table@B@i, 1D@tD, 8i, 6
Out[41]//MatrixForm=
0 i j j j j jµ j j j j j j j j Ø j ≤ j ≤ j ≤ j j ∞ j j j≤ ≤ j ≤ j j ± j j j j j j j ≤ jØ ≤ j ≤ j j ∞ j j ≤ j≤ ≤ j j j ± j j j j j Ø j j ≤ j≤ ≤ j j j ∞ j ≤ j ≤ j ≤ j j j ± j j j j j jµ k
y z z z z z z z z z z z z 9-t z z 2 £ t < 9 z z 7 z z z z 3+t z z -3 < t < 2 z z 5 z z z z z t z z 4 - 3 9 £ t < 12 z z z z z z 1 z z 7 H-2 + tL 2 < t < 9 z z z z z z 21-t z z 12 £ t < 21 z z 9 z z z z z 1 z z 3 H-9 + tL 9 < t < 12 z z z z z z 1 z 9 H-12 + tL 12 < t < 21 z { 2-t 5
-3 £ t < 2
Out[42]//MatrixForm=
i 0 j j j j j j j j 0 j j j j j j j0 j j j j j 0 j j j j j j0 k
2
3
0
0
7
3
0
0 0
1 0
0 1
0
0
3
5
5
0
7
0 0 0
4
2
0 y z z z z z z z 0 z z z z z z z 0 z z z z z 0 z z z z z 1 z 3 z {
bsplineverification.nb 3
In[43]:=
D@Table@B@i, 1D@tD, 8i, 5
Out[43]//MatrixForm=
0 i j j j j jØ ≤ j ≤ j ≤ j j ≤ j≤ j ≤ j≤ j j j ≤ j∞ ≤ j ≤ j ≤ j j ≤ j≤ j ≤ j j ± j j j j j j j ≤ jØ ≤ j j≤ ≤ j ≤ j j ≤ j≤ ≤ j ≤ ≤ j ≤ j j j∞ j j≤ ≤ j j j ≤ j≤ ≤ j ≤ ≤ j ≤ j j ≤ j≤ j ≤ j j ± j j j j j j j ≤ jØ ≤ j j≤ ≤ j ≤ j j ≤ j≤ ≤ j ≤ j ≤ ≤ j j j∞ j j≤ ≤ j j ≤ j ≤ j ≤ j ≤ j ≤ ≤ j j ≤ j≤ j j≤ j ± j j j j j j j ≤ jØ ≤ j j≤ ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j j≤ j j∞ ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j j ≤ j≤ ≤ ≤ k±
0
y z z z z z z z z z z -3 < t < 2 z z z z z z z z t>2 z z z z z z True z z z z z t < -3 z z z z z z -3 < t < 2 z z z z z z z z z z 29 z z z z z z True z z z z z z t<2 z z z z z z 2 12 z z z z z z True z z z z z z t<9 z z z z z 9 < t < 12 z z z z z z z z z 12 < t < 21 z z z z z z z z t > 21 z z z True { t < -3
1
- 5 0 Indeterminate 0 1
5 1
- 7 0 Indeterminate 0 1
7 1
- 3 0 Indeterminate 0 1
3 1
- 9 0 Indeterminate
Out[44]//MatrixForm=
i0 j j j j j j j j 0 j j j j j j j 0 j j j j j 0 j j j j j j0 k In[45]:=
1
- 5 0 0 0 0
1
0
0
y z z z z z z z z 0 z z z z z z Indeterminate Indeterminate Indeterminate z z z z z 0 Indeterminate Indeterminate z z z z z z 1 z 0 0 - 9 { 5
1 7
1 7
H* Examine k=3 quadratics *L Plot@8B@1, 2D@tD, B@2, 2D@tD, B@3, 2D@tD, B@4, 2D@tD, B@5, 2D@tD, B@6, 2D@tD<, 8t, -3, 21<, PlotRange ® FullD 1.0
0.8
0.6 Out[45]=
0.4
0.2
5
10
15
20
4 bsplineverification.nb
In[46]:=
Table@B@i, 2D@tD, 8i, 6
Out[46]//MatrixForm=
i µ j j j j j j j j Ø j j≤ ≤ j ≤ j j ∞ j ≤ j ≤ j ≤ j j j ± j j j j j j Ø j ≤ j ≤ j ≤ j ≤ j j ≤ j≤ ≤ j ≤ ≤ j ≤ j ≤ j j j ∞ j j ≤ j ≤ j ≤ j≤ ≤ j ≤ j j ≤ j≤ j ≤ j≤ ≤ j j j ± j j j j j jØ j ≤ j≤ j j ≤ j≤ ≤ j j≤ ≤ j ≤ j ≤ ≤ j ≤ j ≤ j j ∞ j j j≤ ≤ j j≤ ≤ j ≤ j j ≤ j≤ ≤ j ≤ j ≤ j ≤ ≤ j j j ± j j j j jØ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j j j j∞ ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j j ± j j j j j j jµ k
1 25
2
H-2 + tL
-3 £ t < 2
y z z z z z z z 1 2 z z H-9 + tL 2 £ t < 9 z 84 z z z z z 1 z z - 300 H3 + tL H-69 + 17 tL -3 < t < 2 z z z z z z z 1 2 z z H-12 + tL 9 £ t < 12 z 30 z z z z z 5 z z t 2 z z 12 z z z z 1 2 z z H3 + tL -3 < t < 2 z z 60 z z z z 1 z z H-9 + H114 11 tL tL 2 < t < 9 z z 420 z z z z z 1 2 z z H-21 + tL 12 £ t < 21 z 108 z z z z z 7 z z t 9 z z 10 z z z z 1 2 z z H-2 + tL 2 < t < 9 z z 70 z z z z z 1 z z H-1089 + H234 11 tL tL 9 < t < 12 z 180 z z z z z 1 z z 4 t 12 z z z z z z 1 2 z z H-9 + tL 9 < t < 12 z z 36 z z z z 1 z - 324 H-21 + tL H-75 + 7 tL 12 < t < 21 z z z z z z z z 1 2 z z H-12 + tL 12 < t < 21 81 {
Out[47]//MatrixForm= 4 i j j 25 j j j j j j j j0 j j j j j j 0 j j j j j j j j j0 j j j j j j j0 k
In[48]:=
69 100
3 20
0
0
4 21
143 210
9 70
0
0
3 10
7 10
0
0
0
0
0
3 4 1 3
1
4 5
9
0 y z z z z z z z 0 z z z z z z z z 0 z z z z z z z z z 0 z z z z z z 1 z 9 z {
D@Table@B@i, 2D@tD, 8i, 6
bsplineverification.nb 5
Out[48]//MatrixForm=
Ø i ≤ j ≤ j ≤ j ≤ j j ≤ j≤ ≤ j j j j∞ j ≤ j≤ ≤ j ≤ j ≤ j ≤ j ≤ j j j ± j j j j j Ø j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j j≤ ≤ j ≤ j j ≤ j≤ ≤ j ≤ j j ∞ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j j≤ ≤ j ≤ j j j± j j j j j Ø j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j j≤ ≤ ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j j j j∞ ≤ j j≤ ≤ j ≤ j j ≤ j≤ ≤ j j≤ ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ ≤ j j ≤ j≤ ≤ j j j ± j j j j j Ø j j ≤ j≤ ≤ j ≤ j ≤ j j ≤ j≤ j ≤ j≤ ≤ j ≤ j j ≤ j≤ j ≤ j≤ ≤ j ≤ j ≤ j ≤ j j ∞ j j j ≤ j≤ ≤ ≤ j ≤ j ≤ j j ≤ j≤ j ≤ j≤ ≤ j ≤ j j ≤ j≤ ≤ j ≤ j ≤ j ≤ j ≤ j j j± j j j j j Ø j ≤ j j ≤ j≤ ≤ j j≤ ≤ j ≤ j j ≤ j≤ ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j j ∞ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j j j ± j j j j j Ø j ≤ j ≤ j j≤ ≤ j ≤ j j ≤ j≤ j j ∞ j ≤ j ≤ j j ≤ j≤ j ≤ j≤ ≤ k±
0
t < -3
y z z z z z H-2 + tL -3 < t < 2 z z z z z z z z 0 t 2 ÈÈ t > 2 z z z z z Indeterminate True z z z z z z 0 t < -3 z z z z z 1 17 H3+tL z z H69 17 tL -3 < t < 2 z 300 300 z z z z z 1 z z - 6 t2 z z z z z z 1 z z H-9 + tL 2 9 z z z z z z Indeterminate True z z z z z z 0 t < -3 ÈÈ t -3 z z z z 3+t z z -3 < t < 2 z z 30 z z z z z 1 z z 6 t2 z z z z z z 1 z z H114 22 tL 2 < t < 9 z z 420 z z z z 1 z z - 5 t9 z z z z z z z 1 z z H-12 + tL 9 < t < 12 z 15 z z z z z z 0 t < 2 ÈÈ t 2 z z z z z 1 z z H-2 + tL 2 < t < 9 z z 35 z z z z 1 z z 5 t9 z z z z z z z 1 z z H234 22 tL 9 < t < 12 z 180 z z z z z 1 z z - 6 t 12 z z z z z z 1 z z H-21 + tL 12 < t < 21 z z 54 z z z z z 0 t < 9 ÈÈ t 9 z z z z z z 1 z z H-9 + tL 9 < t < 12 z 18 z z z z z 1 z z 6 t 12 z z z z z z 1 7 z z H75 7 tL H-21 + tL 12 < t < 21 z z 324 324 z z z z z z 0 t > 21 z z z z z Indeterminate True z z z z z z 0 t < 12 ÈÈ t 12 z z z z z 2 z z H-12 + tL 12 < t < 21 z z 81 z z z z z 0 t > 21 z z z Indeterminate True { 2 25
Out[49]//MatrixForm= 4 i - 25 j j j j j j j j j j0 j j j j j j 0 j j j j j j j j j 0 j j j j j j j0 k
3 50 2
- 21 0
1 10
0
0
1 105
3 35
0
1 5
0
-
1 5
1 6
0
0
-
0
0
- 9
1
1
6 1 27
0 y z z z z z z z 0 z z z z z z z z 0 z z z z z z z z z 0 z z z z z z 2 z z 27 {
6 bsplineverification.nb
In[50]:=
D@Table@B@i, 2D@tD, 8i, 6
Out[50]//MatrixForm=
Ø i ≤ j ≤ j ≤ j j ≤ j≤ ≤ j ≤ j j j j∞ ≤ j j≤ ≤ j ≤ j j ≤ j≤ ≤ j j j ± j j j j j Ø j j ≤ j≤ ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j j j ∞ j ≤ j ≤ j j ≤ j≤ ≤ j j≤ ≤ j ≤ j j ≤ j≤ ≤ j j j ± j j j j j Ø j j ≤ j≤ ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j j ∞ j j ≤ j≤ ≤ j ≤ j ≤ j j ≤ j≤ ≤ j j≤ ≤ j ≤ j j ≤ j≤ j ≤ j≤ ≤ j j j ± j j j j j Ø j≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j j ∞ j j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ ≤ j j ≤ j≤ ≤ j ≤ j j ≤ j≤ j ≤ j≤ ≤ j j j ± j j j j j Ø j≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j j ∞ j j j≤ ≤ j j≤ ≤ j ≤ j ≤ ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j j j ± j j j j jØ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j ≤ j j j j∞ ≤ j ≤ j ≤ j j ≤ j≤ ≤ ≤ j k±
0
t < -3
2
25 0 Indeterminate 0 17
- 150 1 42
0 Indeterminate 0 1 30 11
- 210 1 15
0 Indeterminate 0 1 35 11
- 90 1 54
0 Indeterminate 0 1 18 7
- 162 0 Indeterminate 0 2 81
0 Indeterminate
y z z z z -3 < t < 2 z z z z z z z z z t>2 z z z z z True z z z z z z t < -3 z z z z z z -3 < t < 2 z z z z z z z z z 29 z z z z z True z z z z z z t < -3 z z z z z z -3 < t < 2 z z z z z z z z z 2 12 z z z z z True z z z z z z t<2 z z z z z z z 2 21 z z z z z True z z z z z z t<9 z z z z z z 9 < t < 12 z z z z z z z z 12 < t < 21 z z z z z z z z z t > 21 z z z z z True z z z z z z t < 12 z z z z z 12 < t < 21 z z z z z z z z z t > 21 z z z True {
Out[51]//MatrixForm= 2 i j j 25 j j j j j j 0 j j j j j j j0 j j j j j j 0 j j j j j j0 k
17
1 30
0
0
0
y z z z z z z 1 11 1 z z 0 0 z z 42 210 35 z z z z z Indeterminate Indeterminate Indeterminate Indeterminate 0 z z z z z 0 Indeterminate Indeterminate Indeterminate Indeterminate z z z z z z 1 7 2 z 0 0 54 162 81 { - 150