Page 152 - 6734
P. 152

модуля  scipy.interpolate  (interp1d,  UnivariateSpline,
           interp2d, SmoothBivariateSpline та інші) [14, 25]. Сплайн – це
           функція, область визначення якої розбита на частини, на кожній з
           яких функція є певним поліномом.

           import numpy as np
           from scipy.interpolate import interp1d,
           UnivariateSpline, interp2d
           f=lambda x: x**x # функція
           x = np.arange(4)
           y = f(x)
           print x,y # дискретний набір значень
           y1 = interp1d(x, y, kind='linear') # лінійна
           інтерполяція
           y2 = interp1d(x, y, kind='quadratic') # інтерполяція
           квадратичним сплайном
           y2 = UnivariateSpline(x, y, k=2, s=0) # або (s -
           коеф. згладжування)
           kn=y2.get_knots() # вузли сплайна
           print y1(2.5), y2(2.5), f(2.5) # інтерпольовані і
           дійсне значення в точці x=2.5

           import matplotlib.pyplot as plt
           x=np.linspace(0,x.max(),100)
           plt.plot(x,f(x),'k-',x,y1(x),'k--',x,y2(x),'k:') #
           графіки
           plt.scatter(kn,y2(kn)) # вузли кв. сплайна
           plt.xlabel('x'),plt.ylabel('y'),plt.grid(),plt.show()

           f=lambda x,y: x**2+y**2 # функція двох змінних
           x=np.array([0,1,2])
           y=np.array([0,1,2])
           xx, yy = np.meshgrid(x,y) # сітка
           z=f(xx,yy) # значення функції у вузлах сітки
           z1 = interp2d(x, y, z, kind='linear') # двовимірна

                                         151
   147   148   149   150   151   152   153   154   155   156   157