Anda di halaman 1dari 6

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<D  MatrixForm


Table@B@i, 1D@tD, 8i, 6<D . xloc  MatrixForm
Out[41]//MatrixForm=
i
j 0 y
z
j
j z
z
j
jµ 2-t z
z
j
j €€€€€€
5
€ -3 £ t < 2 z
z
j
j z
z
j
j z
z
j
j Ø

9-t z
z
j
j
j ≤

€€€€€€
7
€ 2 £ t < 9 z
z
z
j
j ∞ z
z
j≤
j z
j
j ≤
≤ 3+t
€€€€€€€ -3 < t < 2
z
z
z
j
j
j
j ± 5 z
z
z
z
j
j z
z

j z

j t z
j
j ≤

4 - €€3€ 9 £ t < 12 z
z
z
j ∞ z
j≤
j z
j
j
j ≤
≤ 1
€€7€ H-2 + tL 2 < t < 9
z
z
z
z
j
j
j
j ± z
z
z
z
j z
j Ø z
j≤
j 21-t z
j
j
j ≤

€€€€€€€€
9
€ 12 £ t < 21 z
z
z
z
j
j ∞

z
z
j
j
j
j ≤
≤ 1
€€3€ H-9 + tL 9 < t < 12
z
z
z
z
j
j
j
j ± z
z
z
z
j
j z
z
j
jµ €€9€ H-12 + tL 12 < t < 21 z
1 z
k {
Out[42]//MatrixForm=
2 3
i
j
j 0 €€5€ €€5€ 0 0 0 y z
z
j
j z
z
j
j 4 3
z
z
j
j 0 0 €€7€ €€7€ 0 0 z z
j
j z
z
j
j z
z
j
j z
j0
j
j 0 0 1 0 0 z z
z
z
j
j z
z
j
j 0 0 0 0 1 0 z z
j
j z
z
j
j 2 1 z
z
j0 0 0 0 €€3€ €€3€ z
k {
bsplineverification.nb 3

In[43]:= D@Table@B@i, 1D@tD, 8i, 5<D, tD  MatrixForm


H* For indeterminate values, consult the function table and use the value
corresponding to either left or right continuity in your implementation *L
D@Table@B@i, 1D@tD, 8i, 5<D, tD . xloc  MatrixForm
Out[43]//MatrixForm=
i
j 0 y
z
j z

j z

j 0 t < -3 z
j ≤

z
z
j≤
j z
j ≤ z
j≤
j 1 z
j ≤ - €€5€ -3 < t < 2 zz
z
j∞
j z
j
j ≤


z
z
z
j ≤ z
j≤
j 0 t>2 z
j
j
j ≤

z
z
z
z
j
j
j
j ± Indeterminate True z
z
z
z
j
j z
z

j z
j
j ≤

0 t < -3 z
z
j≤
z
j ≤

z
z
j≤
j 1
j
j ≤
≤ €€5€ -3 < t < 2 zz

z

z
j
j
j ≤ z
z
z
j∞
j z
z

j 1 z
j≤ - €€7€ 2<t<9 z
j≤
j z
j
j ≤


z
z

z
j ≤ z
j≤
j 0 t>9 z
j
j
j ≤

z
z
z
z
j
j
j
j ± Indeterminate True z
z
z
z
j
j z
z

j z
j
j ≤

0 t<2 z
z
j≤
z
j ≤

z
z
j≤
j 1 z
j
j ≤


€€7€ 2<t<9 z
z

z

j
j z
z
j z
j∞
j 1
9 < t < 12 z
z
j
j≤
j ≤

- €€3€ z
z
z
j
j
j ≤


z
z

z

j z
j≤
j 0 t > 12 z
j ≤ z
j≤
j z
z
j z
±
j Indeterminate True z
z
j
j z
z
j
j z
z

j z
j
j ≤

0 t<9 z
z
j≤
z
j
j ≤

≤ 1
z
z
j
j ≤
≤ €€3€ 9 < t < 12 zz
z
j
j ≤


z
z
j≤
j
j z
z
j∞
j 1 z
z
j ≤
≤ - €€9€ 12 < t < 21 z
z
j
j
j ≤


z
z
z
j
j
j ≤


z
z
z
j≤
j
j ≤ 0 t > 21 z
z
j ≤

z
z
k± Indeterminate True {
Out[44]//MatrixForm=
1 1
i0
j - €€5€ €€5€ 0 0y
z
j
j z
z
j
j z
z
j
j 1 1 z
z
j
j 0 0 - €€7€ €€7€0 z
z
j
j z
z
j
j z
z
j
j 0 0 Indeterminate Indeterminate Indeterminate z
z
j
j z
z
j
j z
z
j
j 0 0 0 Indeterminate Indeterminate z
z
j
j z
z
j
j 1
z
z
j0 0 0 0 - €€9€ z
k {

In[45]:= 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<D  MatrixForm


H* For indeterminate values, consult the function table and use the value
corresponding to either left or right continuity in your implementation *L
Table@B@i, 2D@tD, 8i, 6<D . xloc  MatrixForm
Out[46]//MatrixForm=
1 2
i
j
j µ €€€€€
25
H-2 + tL -3 £ t < 2 y
z
z
j
j z
z
j
j z
z
j Ø z
j≤
j 1 2 z
j
j ≤

€€€€
84
€ H-9 + tL 2 £ t < 9 z
z
z
j
j ∞

z
z
j
j
j
j ≤
≤ - 300
1
€€€€€€€ H3 + tL H-69 + 17 tL -3 < t < 2
z
z
z
z
j
j
j
j ± z
z
z
z
j
j z
z
j
j Ø

1 2 z
z
j
j
j ≤


€€€€
30
€ H-12 + tL 9 £ t < 12 z
z
z
j≤
j z
j
j ≤


z
z
≤ 5 z
j
j
j
j ≤
≤ €€€€
12
€ t Š 2 z
z
z
z
j
j
j ∞

z
z
z
j ≤
j≤
1 2 z

j tL t 2 z
j ≤

€€€€ € H3 + -3 < < z
z
j≤
j 60 z
j ≤ z
j≤
j z
j
j ≤
≤ 1
€€€€€€ € H-9 + H114 - 11 tL tL 2 < t < 9
z
z
z
z
j
j
j
j ± 420
z
z
z
z
j
j z
z

j

1 2 z
z
j≤
j €€€€€€ € H-21 + tL 12 £ t < 21 z
j≤
z
j
j ≤

108 z
z
j≤
z
j ≤

≤ 7
z
z

j t 9 z
j
j
j ≤

€€€€
10
€ Š z
z
z
j
j ∞ z
z
j≤
j z
j
j≤
j ≤

1 2 z
z
z
≤ €€€€ € H-2 + tL 2 < t < 9 z
j≤
j z
j
j ≤


70 z
z
z
j
j
j ≤

≤ 1 z
z
z
j €€€€€€ € H-1089 + H234 - 11 tL tL 9 < t < 12 z
j
j
j
j ± 180 z
z
z
z
j z

j

1 z
z
j
j
j ≤


€€4€ t Š 12 z
z
z
j
j
j
j ≤

≤ 1 2
z
z
z
z
j∞
j
j tL 9 t 12 z
z
j
j ≤


€€€€
36
€ H-9 + < < z
z
z
j
j
j ≤


z
z
z
j
j ≤ - 324
1
€€€€€€€ H-21 + tL H-75 + 7 tL 12 < t < 21 z z
±
j
j z
z
j
j z
z
j
j z
z
j

j 1 2 z
z
z
€€€€
81
€ H-12 + tL 12 < t < 21
k {
Out[47]//MatrixForm=
4 69 3
i
j
j €€€€€
25
€€€€€€€
100
€€€€€
20
0 0 0 y z
z
j
j z
z
j
j 4 143 9
z
z
j
j 0 z z
j0
j
j
€€€€€
21
€€€€€€€
210
€€€€€
70
0 z
z
z
j
j z
z
j
j z
0 z
j 3 7 z
j
j 0 0 €€€€€
10
€€€€€
10
0 z
z
j
j z
z
j
j z
z
j
j 3 1 z
j0
j
j 0 0 €€4€ €€4€ 0 z z
z
z
j
j z
z
j
j 1 5 1 z z
j0 0 0 €€3€ €€9€ €€9€ z
k {

In[48]:= D@Table@B@i, 2D@tD, 8i, 6<D, tD  MatrixForm


D@Table@B@i, 2D@tD, 8i, 6<D, tD . xloc  MatrixForm
bsplineverification.nb 5

Out[48]//MatrixForm=
Ø
≤ 0 t < -3
i
j ≤

y
z
j ≤ z
j≤
j z
j
j ≤

2
€€€€€ H-2 + tL -3 < t < 2 z
z
z
j∞
j
j 25 z
z
j≤
j z
j ≤


z
z
z
j
j
j
j ≤


0 t Š 2 ÈÈ t > 2 z
z
z
z
j z
j
j
j
j ± Indeterminate True z
z
z
z
j z
j
j Ø
≤ 0 t < -3 z
z
j
j
j ≤


z
z
z
j
j
j ≤


1 17 H3+tL z
z
z
j
j ≤

€€€€€€ € H69 - 17 tL - €€€€€€€€€€€€€€€€ -3 < t < 2 z
z
j≤
j 300 300 z
j ≤

z
z
j≤
j z
j
j
j ≤


1
- €€6€ tŠ2
z
z
z
z
j
j ∞

z
z
j
j ≤

z
z
j
j
j ≤


1
€€€€€ H-9 + tL 2<t<9
z
z
z
j
j
j ≤

≤ 42
z
z
z
j
j
j ≤


z
z
z
j
j≤
j
j ≤

0 t Š 9 ÈÈ t > 9 z
z
z
j ≤ z
z

j
j Indeterminate True z
z
j z
z
j
j z
z
j
j Ø
≤ 0 t < -3 ÈÈ t Š -3 z
z
j
j
j ≤


z
z
z
j
j
j ≤


3+t z
z
z
j
j
j ≤


€€€€€€
30
€ -3 < t < 2 z
z
z
j
j≤
j ≤

z
z

j z
j
j ≤


1
€€6€ tŠ2
z
z
z
j
j
j ≤

z
z
z
j∞
j
j z
z
j
j≤
j ≤

1
22 tL 2 t 9
z
z
z
≤ €€€€€€ € H114 - < < z
j≤
j z

j 420 z
j
j≤
j ≤

z
z
z
j
j ≤


1
- €€5€ tŠ9 z
z
z
j
j ≤


z
z

j z
j≤
j z
j
j
j ≤
≤ 1
€€€€ € H-12 + tL 9 < t < 12
z
z
z
z
j
j
j
j ± 15 z
z
z
z
j z
j
j Ø z
j≤
0 t < 2 ÈÈ t Š 2 z

j z
j
j ≤


z
z
z
j≤
j 1 z
j ≤ z
j≤
j €€€€ € H-2 + tL 2 < t < 9 z
j ≤


35 z
z
z
j≤
j z
j ≤ z
j≤
j z
j ≤


1
€€5€ tŠ9 z
z
z
j
j
j ≤

z
z
z
j
j ∞ z
z
j≤
j z
j
j ≤


1
€€€€€€ € H234 - 22 tL 9 < t < 12 z
z
j ≤

180 z
z
j≤
j z
j ≤ z
j≤
j z
j ≤


1
- €€6€ t Š 12
z
z
z
j≤
j z
j
j ≤


z
z
z
j
j
j
j ≤

≤ 1
z
z
z
z
j €€€€€ H-21 + tL 12 < t < 21

j 54
z
z
j z
z
j
j z
z
j
j Ø
≤ 0 t < 9 ÈÈ t Š 9 z
z
j≤
j z
j
j ≤

z
z
j≤
z
j ≤

1 z
z
j≤
j €€€€ € H-9 + tL 9 < t < 12 z
j
j ≤


18 z
z
z
j
j
j ≤


z
z
z
j
j
j ≤

1
€€6€ t Š 12 z
z
z
j
j ∞

z
z
j
j
j ≤


z
z
z

j 1 7 z
j
j
j ≤


€€€€€€ € H75 - 7 tL - €€€€€€
€ H-21 + tL 12 < t < 21 z
z
z

j 324 324 z
j
j
j ≤


z
z
z
j
j
j ≤


0 t > 21 z
z
z
j
j
j ≤ z
z
z
j
j
j
j ± Indeterminate True z
z
z
z
j z
j
j Ø
≤ 0 t < 12 ÈÈ t Š 12 z
z
j
j≤
j
j ≤

z
z
z
≤ z
j≤
j 2 z
j
j ≤ €€€€ € H-12 + tL 12 < t < 21 z
z
z
j
j ∞

81 z
z
j ≤ z
j≤
j z
j ≤ z
j≤
j 0 t > 21 z
j ≤

z
z
z
k± Indeterminate True {
Out[49]//MatrixForm=
4 3 1
i
j
j - 25
€€€€€ €€€€€
50
€€€€€
10
0 0 0 y z
z
j
j z
z
j
j 2 1 3
z
z
j
j 0 z z
j0
j
j
- 21
€€€€€ €€€€€€€
105
€€€€€
35
0 z
z
z
j
j z
z
j
j z
0 z
j 1 1 z
j
j 0 0 - €€5€ €€5€ 0 z
z
j
j z
z
j
j z
z
j
j 1 1 z
j
j
j 0 0 0 - €€6€ €€6€ 0 z z
z
z
j
j z
z
j
j 1 1 2 z
z
j0 0 0 - €€9€ €€€€€ €€€€
€ z
k 27 27 {
6 bsplineverification.nb

In[50]:= D@Table@B@i, 2D@tD, 8i, 6<D, 8t, 2<D  MatrixForm


D@Table@B@i, 2D@tD, 8i, 6<D, 8t, 2<D . xloc  MatrixForm
Out[50]//MatrixForm=
Ø
≤ 0 t < -3
i
j ≤

y
z
j≤
j z
j
j
j ≤


2
€€€€€ -3 < t < 2 z
z
z
z
j∞
j
j 25 z
z
j
j≤
j ≤

z
z
z
≤ z
j≤
j 0 t>2 z
j
j
j ≤

z
z
z
z
j
j
j
j ± Indeterminate True z
z
z
z
j z
j Ø z
j≤
j 0 t < -3 z
j
j ≤


z
z
z
j
j
j ≤


17
-3 < t < 2 z
z
z
j
j ≤

- 150
€€€€€€€ z
z
j
j
j
j ≤

z
z
z
z
j
j ∞

1 z
z
j ≤ €€€€€ 2<t<9 z
j≤
j z
j
j ≤

42 z
z
j≤
z
j ≤

z
z
j≤
j 0 t>9 z
j
j
j ≤

z
z
z
z
j
j
j
j ± Indeterminate True z
z
z
z
j z
j Ø z
j≤
j 0 t < -3 z
j
j ≤


z
z
z
j
j
j ≤


1
-3 < t < 2 z
z
z
j
j
j ≤


€€€€€
30
z
z
z
j
j
j ≤


z
z
z
j
j
j
j ≤

≤ - 210
€€€€€€€
11
2<t<9
z
z
z
z
j ∞ z
j≤
j z
j
j ≤


z
z
z

j 1
9 < t < 12 z
j≤
j z

j €€€€€ z
j
j≤
j ≤

15 z
z
z
≤ z
j≤
j z
j ≤ 0 t > 12 z
j≤
j z
j
j ≤

z
z
z
z
j
j
j
j ± Indeterminate True z
z
z
z
j z
j
j≤
j Ø 0 t<2 z
z
j
j ≤


z
z
z
j
j
j ≤


1 z
z
z
j
j
j ≤


€€€€€
35
2<t<9 z
z
z
j
j
j ≤


z
z
z
j
j
j
j ≤

≤ - 90
€€€€€
11
9 < t < 12 z
z
z
z
j
j
j ∞

z
z
z
j
j ≤

z
z
j
j ≤


1 z
z
12 < t < 21 z

j €€€€€
j≤
j z

j 54 z
j ≤

z
z
j≤
j z
j ≤ 0 t > 21 z
j≤
j z
j
j ≤

z
z
z
z
j
j
j
j ± Indeterminate True z
z
z
z
j z
j
j≤
j Ø 0 t<9 z
z

z
j
j
j ≤


z
z
z
j
j
j ≤


1
€€€€€ 9 < t < 12 z
z
z
j
j
j ≤


18 z
z
z
j
j ≤ z
z
j
j ∞ 7 z
12 < t < 21 z
j≤
j z
j
j≤
j ≤

- 162
€€€€€€€ z
z
z
j ≤


z
z
j
j
j ≤

≤ 0 t > 21
z
z
z
j
j
j
j ≤

z
z
z
z
j
j
j
j ± Indeterminate True z
z
z
z
j z

j
≤ 0 t < 12 z
z
j
j
j ≤


z
z
z
j
j
j
j ≤


2
€€€€€
z
z
12 < t < 21 z
z
j∞
j
j 81 z
z
j
j ≤


z
z
z
j≤
j z
j
j ≤


0 t > 21 z
z
z
z
j
k± Indeterminate True {
Out[51]//MatrixForm=
2 17 1
i
j
j €€€€€
25
- 150
€€€€€€€ €€€€€
30
0 0 0 y
z
z
j
j z
z
j
j 1 11 1
z
z
j
j 0 €€€€
€ - €€€€€€
€ €€€€
€ 0 0 z
z
j
j 42 210 35 z
z
j
j z
z
j
j z
z
j0
j Indeterminate Indeterminate Indeterminate Indeterminate 0 z
z
j
j z
z
j
j z
j
j
j 0 0 Indeterminate Indeterminate Indeterminate Indeterminate z
z
z
z
j
j z
z
j
j0 1 7 2 z
z
0 0 €€€€
54
€ - €€€€€€
162
€ €€€€
81
€
k {

Anda mungkin juga menyukai