查找曲线与零的交点
在 Python 中,当值不是一个值时,从图中获取精确的 y 轴值可能具有挑战性整数。本文解决了这个问题,并提出了一种基于线性插值的解决方案。
给定两个数组(vertical_data 和gradient(Temperature_data)),使用 plt.plot 生成一个绘图。然而,该图显示的 y 值接近但不完全为零。
根估计的线性插值
估计 numpy 数组的精确根,可以使用简单的线性插值方法。以下代码演示了如何查找任意曲线的零值:
import numpy as np
def find_roots(x, y):
s = np.abs(np.diff(np.sign(y))).astype(bool)
return x[:-1][s] np.diff(x)[s]/(np.abs(y[1:][s]/y[:-1][s]) 1)
x = .4 np.sort(np.random.rand(750))*3.5
y = (x-4)*np.cos(x*9.)*np.cos(x*6 0.05) 0.1
z = find_roots(x,y)
plt.plot(x,y)
plt.plot(z, np.zeros(len(z)), marker="o", ls="", ms=4)
此代码标识曲线的根并将其绘制为圆形在精确的 y 值为零处。
非零截距
相同的方法可用于查找曲线与任何非零 y 的交点-value (y0) 通过修改找到根的行:
z = find_roots(x,y-y0)
两条曲线交点
线性插值法也可以用来求两条曲线的交点。通过求两条曲线差的根,我们可以估计它们的交点:
y2 = (x - 2) * np.cos(x * 8.) * np.cos(x * 5 0.03) 0.3
z = find_roots(x,y2-y1)
plt.plot(x,y1)
plt.plot(x,y2, color="C2")
plt.plot(z, np.interp(z, x, y1), marker="o", ls="", ms=4, color="C1")
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3