直线的斜率和曲线的斜率有什么区别?numpy.gradient
在任意点求直线的斜率和曲线的斜率是否有效?
#slope of line at any point
tanθ= y2-y1/x2-x1
#slope of curve at any point
tanθ =dy/dx
使用 numpysnp.gradient()
获得曲线和直线的斜率是否有效?还是只是为了找到线的斜率?
线与曲线的参考斜率
直线的斜率和曲线的斜率有什么区别?numpy.gradient
在任意点求直线的斜率和曲线的斜率是否有效?
#slope of line at any point
tanθ= y2-y1/x2-x1
#slope of curve at any point
tanθ =dy/dx
使用 numpysnp.gradient()
获得曲线和直线的斜率是否有效?还是只是为了找到线的斜率?
线与曲线的参考斜率
直线斜率和曲线斜率有什么区别
这真的是一个观点问题。一条线的斜率在该线的整个跨度上是相同的,即直到该线改变方向。曲线的斜率就像数百万条细线全部连接的斜率,因此斜率仅在微小跨度上的值相同。所以我们只能谈论曲线在给定点的斜率(例如给定的 x 值),然后我们通常会谈论线在该点的梯度。
用你的话来说,由numpy.gradient计算的梯度是曲线的斜率,使用连续值的差异。
但是,您可能想想象,当在越来越小的距离上测量时,您的变化会变成斜率(根据您的定义)。因此,当例如x2 - x1
几乎达到零时,您的含义与.
这是一个粗略的例子numpy.gradient
,其中具有 s 大小1
(等间距值):
In [1]: import matplotlib.pyplot as plt
In [2]: import numpy as np
In [3]: N = 10 # Use ten samples
In [4]: x = np.linspace(0, np.pi*2, N) # Equally spaced x values
In [5]: y = np.sin(x) # Corresponding sine values
In [6]: grads = np.gradient(y) # compute the gradients
绘制值和梯度 - 我将梯度0.5
向右移动,因此它们的值与它们描述斜率的段的中间对齐:
In [7]: fig, ax = plt.subplots()
In [8]: ax.plot(x, y, "-b", label="values") # the y values
ax.plot(x + 0.5, grads, "--r", label="gradients") # the computed gradients
plt.legend()
In [9]: plt.show()
现在我们做和以前一样的例子,只用一百万个点:N = 1_000_000
. 蓝线看起来更像是真正的正弦波,但红线现在以比以前更高的分辨率测量梯度,为我们提供了 1,000,000 点的精确值 - 对于蓝线的每个微小线段。
所以梯度值看起来都为零!好吧,这只是因为我们x2-x1
几乎为零 ( 1 / 1e6
),所以 的值y2 - y1
也基本上为零!我们已经开始近似.
让我们改变坐标轴比例,看看渐变是否仍然符合我们预期的模式,并且确实非常平滑 - 看起来像一条曲线:
好多了 :)
(注意比例差异 - 1e-6
)。
以下是对真正np.gradient
作用的一些解释。