A Verification Case For B-spline Implementations, Including Derivatives

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View A Verification Case For B-spline Implementations, Including Derivatives as PDF for free.

More details

  • Words: 3,518
  • Pages: 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
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€ tŠ2 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€ tŠ2 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€ tŠ9 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€ tŠ9 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 €€€€€€€

Related Documents