如何将 x 值输出到先前拟合函数的给定 y 值?

问题描述 投票:0回答:1

我已将数据(来自 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新手,所以我不知道如何做到这一点。非常感谢您的帮助。

我没有包括我之前的尝试,因为它们都只是我不理解的疯狂猜测/复制代码。

python scipy scipy-optimize
1个回答
0
投票

您似乎有一些 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]

© www.soinside.com 2019 - 2024. All rights reserved.