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绘图,算是一个弥补
  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值