Nei*_*ein 3 python math numpy derivative
所以,我正在进行一些数值计算.我已计算出一个函数(return_times)的大约100,000个点只能用数字计算,现在想用它来推导它numpy.gradient.据我所知(doc),对于f(x),我可以给出以下参数:numpy.gradient(arr_of_fx_datapoints, arr_of_their_x_values)使它工作.这就是我(打算)做的事情.
除了它不起作用.结果几乎(但不完全)到处都是零.下面我的代码摘要复制了这个bug(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()
Run Code Online (Sandbox Code Playgroud)
如果我打印gd,它表明它确实不是真正的零:
[ inf 6.28318530e-05 6.28318529e-05 ..., -1.25666419e-09
-6.28326813e-10 -3.14161265e-10]
Run Code Online (Sandbox Code Playgroud)
那么:我错过了什么?在Python中用数字衍生的最终正确方法是什么?
环境:Linux Mint 18.2 OS,Geany编辑器,NumPy 1.11.0.
文档没有提到它,但坐标数组支持是非常新的,NumPy 1.13.在以前的NumPy版本中,您只能为每个维度指定固定的标量步长值.
NumPy 1.12有一个检查来捕获非标量步骤,但是你所使用的NumPy 1.11并没有注意到数组值的输入,并且通过尝试将数组视为一个步骤而默默地做错了.
| 归档时间: |
|
| 查看次数: |
247 次 |
| 最近记录: |