我想计算点的导数,一些互联网文章建议使用np.diff函数。然而,我尝试使用np.diff对手动计算的结果进行比较(选择一个随机的多项式方程并对其进行微分),以查看是否得到相同的结果。我使用以下方程:Y =(X ^ 3)+(X ^ 2)+ 7,但我最终得到的结果不同。有什么想法吗?是否有其他方法来计算微分值。
在我要解决的问题中,我收到了拟合样条函数的数据点(不是需要通过样条拟合的原始数据,而是已经拟合的样条的点)。x值处于等间隔。我只有这些点,没有方程式,我需要计算一阶、二阶和三阶导数。即dy/dx,d2y/dx2,d3y/dx3。有关如何执行此操作的任何想法吗?先谢谢您。
在我要解决的问题中,我收到了拟合样条函数的数据点(不是需要通过样条拟合的原始数据,而是已经拟合的样条的点)。x值处于等间隔。我只有这些点,没有方程式,我需要计算一阶、二阶和三阶导数。即dy/dx,d2y/dx2,d3y/dx3。有关如何执行此操作的任何想法吗?先谢谢您。
xval = [1,2,3,4,5]
yval = []
yval_dashList = []
#selected a polynomial equation
def calc_Y(X):
Y = (X**3) + (X**2) + 7
return(Y)
#calculate y values using equatuion
for i in xval:
yval.append(calc_Y(i))
#output: yval = [9,19,43,87,157]
#manually differentiated the equation or use sympy library (sym.diff(x**3 + x**2 + 7))
def calc_diffY(X):
yval_dash = 3*(X**2) + 2**X
#store differentiated y-values in a list
for i in xval:
yval_dashList.append(yval_dash(i))
#output: yval_dashList = [5,16,35,64,107]
#use numpy diff method on the y values(yval)
numpyDiff = np.diff(yval)
#output: [10,24,44,60]
numpy的diff方法计算[10,24,44,60]
的差异,与yval_dashList = [5,16,35,64,107]
不同。
numpy.diff
不会做你期望的事情。numpy.diff
仅仅告诉你数组中相邻数值的差异。在一些情况下,这可能近似于函数的导数,但大多数情况下并不是这样。 - senderleautograd
模块。 - hilberts_drinking_problem