当从其导数计算时,Sin(x)^ 4的梯度不相同

时间:2016-05-12 14:42:00

标签: python numpy

当我计算并绘制Sin(x)^ 4的导数时,使用下面的代码直接将它的导数4(Sin)(x)^ 3 Cos(x)用于x = [0到180度]我得到了正确的结果。

import numpy as np
import matplotlib.pyplot as plt

a = np.power( np.sin(   np.deg2rad(range(0,180))    ),4 )   
c = 4 * np.sin( np.deg2rad(range(0,180) ))**3 * np.cos(np.deg2rad(range(0,180)))
plt.plot(a)
plt.plot(c)    
plt.show()

但是当我尝试使用numpy Gradient函数做同样的事情时,它会给我一个不同的结果,即渐变就像直线一样。例如,使用以下代码:

import matplotlib.pyplot as plt
a = np.power( np.sin(   np.deg2rad(range(0,180))    ),4 )   
plt.plot(a)
plt.plot(np.gradient(a))    
plt.show()

我仍然无法理解差异的原因。有谁可以告诉我他们为什么不同? 实际上在模拟工作中,我在数组中有一组值,我需要计算它们的导数,超过phi = range(0,180)。

1 个答案:

答案 0 :(得分:2)

您未正确指定样本之间的间距(默认为1),因此您的答案缩放不正确。

尝试:

a = np.power(np.sin(np.deg2rad(range(0,180))),4 )   
plt.plot(a)
plt.plot(np.gradient(a, np.deg2rad(1)))

现在cnp.gradient(a, np.deg2rad(1))几乎相同。