gpt4 book ai didi

python - 符号学插值;从 y 得到 x

转载 作者:太空宇宙 更新时间:2023-11-03 20:44:20 24 4
gpt4 key购买 nike

我有以下数据:

x = [0, 2, 4, 8, 30]
y = [1.2e-3, 3.5e-4, 5.1e-5, 1.6e-5, 2e-7]

我正在尝试从给定的 x 值进行插值以获取 y。

绘制数据时,如下所示:

import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1)
ax.semilogy(x, y, 'o-')
plt.show()

plot

假设我有兴趣找出 y 值为 3e-5 时 x 的值。

我可以通过以下方式获取给定 y 的 x 值:

z = np.linspace(0, 30, 10000)
logy = np.log10(y)
yy = np.power(10.0, np.interp(z, x, logy))
z[np.isclose(3.5e-5, yy, atol=1e-8)]

输出:

array([5.29852985])

但是,如果我更改值以获得单个匹配,则我必须调整 atol,并且还必须创建加载更多数据点才能获得分辨率。

有没有更简单的方法来做到这一点?谢谢。

最佳答案

假设您想要查找与 y_f 对应的 x_f。假设原始列表 y 中的条目严格按降序排列,并且 x 中的条目递增,您会发现 y 中的第一个条目小于或等于您的列表y_0。假设它是索引 i 处的那个,因此构成分段分区中的相关线性函数的 x,y 元组将是 (x[i-1],y[i-1] ) 和 (x[i], y[i])。使用直线公式给定线上的两个点,我们可以得到 x_f:

x_f = x[i-1] + (x[i]-x[i-1])/(y[i]-y[i-1])*(y_f-y[i-1])

关于python - 符号学插值;从 y 得到 x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56694326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com