使用numpy的Python差异未产生预期的输出
因此,我正在进行一些数值计算。我已经计算了一个return_times
只能通过数字计算的函数()的100,000个点,现在想使用来推导它numpy.gradient
。据我了解(doc),对于f(x),我可以给出以下参数:numpy.gradient(arr_of_fx_datapoints,
arr_of_their_x_values)
使它起作用。这就是我(打算做的)事情。
除非它不起作用。结果到处几乎(但不完全)为零。该错误由下面的代码摘要重现(sin ^ 2(x)的形状类似于我的原始函数):
import matplotlib.pyplot as plt
import numpy as np
def find_times(t_arr):
return np.power(np.sin(t_arr), 2)
t_0 = 0
t_max = np.pi-1E-10
datapoints = 100000
dt = (t_max - t_0) / datapoints
t_points = np.arange(t_0, t_max, dt, dtype=np.float64)
return_times = find_times(t_points)
gd = np.gradient(return_times, t_points)
plt.plot(t_points, gd)
plt.plot(t_points, return_times)
plt.show()
如果我打印gd
,则表明它确实不是完全为零:
[ inf 6.28318530e-05 6.28318529e-05 ..., -1.25666419e-09
-6.28326813e-10 -3.14161265e-10]
所以:我想念什么?用Python进行数值衍生的最终正确方法是什么?
环境:Linux Mint 18.2 OS,Geany编辑器,NumPy 1.11.0。