import numpy as np
import matplotlib.pyplot as plt
#用来正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei']
#定义函数
f=lambda x:2*x**3+2*x**2+32
#返回向前差商
def forward_diff(x,h):
plt.plot([x,x+h],[f(x),f(x+h)],'b-d',label='向前差商')
return (f(x+h)-f(x))/h
#返回向后差商
def backward_diff(x,h):
plt.plot([x-h,x],[f(x-h),f(x)],'r*-',label='向后差商')
return (f(x)-f(x-h))/h
#返回中心差商
def central_diff(x,h):
a=(f(x-h)+f(x+h))/2
plt.plot([x-h,x+h],[f(x-h)+f(x)-a,f(x+h)+f(x)-a],'g--',label='中心差商')
return (f(x+h)-f(x-h))/(2*h)
xx=np.linspace(-1.0,1.5,20)#产生等差数列作为坐标轴标记
yy=f(xx)
plt.plot(xx,yy,'k-',label='原函数')
print('向前差商',forward_diff(1,0.5))
print('向后差商',backward_diff(1,0.5))
print('中心差商',central_diff(1,0.5))
plt.legend()
plt.show()
向前差商 14.5 向后差商 6.5 中心差商 10.5
算法:差分法逼近微分是通过有限差分来近似表示导数(Derivative),从而寻求微分方程(Differential Equation)的近似解,包括向前差分、向后差分和中心差分的形式。
本文分享自 图像处理与模式识别研究所 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!