У меня есть следующие данные:
x = [0, 2, 4, 8, 30]
y = [1.2e-3, 3.5e-4, 5.1e-5, 1.6e-5, 2e-7]
Я пытаюсь интерполировать, чтобы получить y из заданного значения x.
При построении графика данные выглядят так:
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1)
ax.semilogy(x, y, 'o-')
plt.show()
Итак, скажем, мне интересно узнать, какое значение x для значения y 3e-5.
Я могу получить значение x данного y:
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
, если я изменю значение, чтобы получить одно совпадение, а также должен создать загрузку большего количества точек данных, чтобы получить разрешение.
Есть ли более простой способ сделать это? Спасибо.