1-Dimensional DerivativesΒΆ

  • ../_images/sphx_glr_1d-deriv_001.png
  • ../_images/sphx_glr_1d-deriv_002.png
  • ../_images/sphx_glr_1d-deriv_003.png
  • ../_images/sphx_glr_1d-deriv_004.png
  • ../_images/sphx_glr_1d-deriv_005.png
  • ../_images/sphx_glr_1d-deriv_006.png
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 import numpy as np
 import matplotlib.pyplot as plt
 from scipy import interpolate
 from scipy.stats import norm

 import itertools

 import ndsplines


 def sin(x_in):
     x = np.pi*(x_in-0.5)
     return np.sin(x)

 def cos(x_in):
     x = np.pi*(x_in-0.5)
     return np.cos(x)

 funcs = [sin, cos]

 x = np.linspace(0, 1, 9)
 xx = np.linspace(-.0625, 1.0625, 1024)
 k = 3

 for degree in range(1,4):
     for func in funcs:
         fvals = func(x)
         truef = func(xx)
         if degree > 0:
             fig, axes = plt.subplots(3,1, constrained_layout=True)
         else:
             fig, axes = plt.subplots(2,1, constrained_layout=True)

         plot_sel = slice(None)

         plt.gca().set_prop_cycle(None)
         test_Bspline = interpolate.make_interp_spline(x, fvals, k=degree)
         splinef = test_Bspline(xx.copy(), extrapolate=True)
         axes[0].plot(xx, splinef, '--', lw=3.0, label='BSpline')
         if degree > 0:
             der_Bspline = test_Bspline.derivative()
             axes[1].plot(xx, der_Bspline(xx.copy()), '--', lw=3.0, label='BSpline')
         antider_Bspline = test_Bspline.antiderivative()
         axes[-1].plot(xx, antider_Bspline(xx.copy()), '--', lw=3.0, label='BSpline')

         for ax in axes:
             ax.set_prop_cycle(None)
         test_NDBspline = ndsplines.make_interp_spline(x, fvals, degrees=degree)

         NDsplinef = test_NDBspline(xx.copy())
         axes[0].plot(xx, NDsplinef, label='ndspline' )
         if degree>0:
             der_NDspline = test_NDBspline.derivative(0)
             axes[1].plot(xx, der_NDspline(xx.copy()), label='ndspline' )
         antider_NDspline = test_NDBspline.antiderivative(0)
         axes[-1].plot(xx, antider_NDspline(xx.copy()), label='ndspline')


         axes[0].plot(xx, truef, 'k--', label="True " + func.__name__)
         axes[0].plot(x, fvals, 'ko')
         plt.suptitle('k=%d'%degree)

         axes[0].legend(loc='best')
         plt.show()

Total running time of the script: ( 0 minutes 2.223 seconds)

Gallery generated by Sphinx-Gallery