Python离散数据插值并求导、求极小值、求定积分(以二次样条插值函数为例)

  • Post author:
  • Post category:python


import matplotlib.pyplot as plt
import numpy as np
from scipy.interpolate import interp1d

x = np.arange(0 ,11 ,dtype = np.float)
y = np.cos(-x**2/9.0)
f1 = interp1d(x, y, kind='nearest')
f2 = interp1d(x, y, kind='zero')
f3 = interp1d(x, y, kind='quadratic')  
#下面以二次样条插值的插值函数为例

from scipy.misc import derivative
print(derivative(f3, 1e-10, dx=1e-10))
#derivative可以用于求导,需指定求导区间

import scipy.optimize as opt
print(opt.fmin(f3, 5.26))
#fmin可以用于求指定函数的最小值,需指定起始区间

from scipy import integrate
v, err = integrate.quad(f3, 1, 2)
print(v)
#integrate.quad可用来求定积分,需指定积分区间

#绘制函数图像
xnew = np.linspace(0, 10, num=1001, endpoint=True)
plt.plot(x, y, 'o')
plt.plot(xnew, f1(xnew), '-', xnew, f2(xnew), '--', xnew, f3(xnew), ':')
plt.legend(['data', 'nearest', 'zero', 'quadratic'], loc='best')
plt.show()
#python插值一个非常不方便的地方就是不能输出插值函数,不如用matlab。
#不过可以用python绘图,算是一个弥补



版权声明:本文为weixin_47006934原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。