我已将数据(来自 pandas 数据框)安装到函数中
def cutoff(x, A):
ff = 1/(1+(2 * np.pi * A * x)**2)**0.5
return ff
xdata = data["X"]
ydata = data["CH1"]
popt, pcov=scipy.optimize.curve_fit(cutoff,xdata,ydata , p0 = [0.1e-3])
现在我想输出 x 值,其中拟合的 y 值等于 1/2**0.5
由于我是Python新手,所以我不知道如何做到这一点。非常感谢您的帮助。
我没有包括我之前的尝试,因为它们都只是我不理解的疯狂猜测/复制代码。
您似乎有一些 x、y 数据,并且您想根据截止函数在数据上拟合一条曲线。
我对您的代码做了一些修改,如下:
import numpy as np
import scipy.optimize
def cutoff(x, A):
ff = 1 / (1 + (2 * np.pi * A * x) ** 2) ** 0.5
return ff
def combined_function(x, A, B, C):
return np.sin(x) * cutoff(x, A) + B * cutoff(x, C)
def find_x_value(A, B, C):
return scipy.optimize.fsolve(lambda x: combined_function(x, A, B, C) - 1 / np.sqrt(2), 0)
def gen_random():
np.random.seed(10)
xdata = np.linspace(1, 10, 100)
ydata = np.sin(xdata) + np.random.normal(1, 0.1, size=len(xdata))
return xdata, ydata
xdata, ydata = gen_random()
popt, pcov = scipy.optimize.curve_fit(combined_function, xdata, ydata, p0=[0.1e-3, 1, 0.1e-3])
print(f"The x-value is {find_x_value(*popt)}")
x 值为 [-0.31678522]