【问题标题】:Not getting a fitted curve没有得到拟合曲线
【发布时间】:2022-12-04 21:31:33
【问题描述】:

运行此代码时,我没有得到拟合曲线。相反,我得到了一条随机曲线。请帮忙。提前致谢。

def cauchy(x, l, k, x1, a):
        return l / (1+np.exp(-k*(x-x1))) + a
    
    amplitude = [11, 9, 15, 18, 23, 62, 225, 537, 534, 251, 341, 8, 716, 653, 673]
    distance = np.arange(0,15)
    popt, pcov = curve_fit(cauchy, distance[5:], amplitude[5:], maxfev=1000000, bounds=((-10, -10, -10, 0), (30000, 3000, 30000, 100)),p0=[25000, 1, 0.3, 0])
    
    ran = np.linspace(0, 15,1000) # for smoother plots more points
    derivative = deriv(ran, *popt[:-1])
    derivative_normalized = derivative/np.max(derivative)
    
    fig, ax = plt.subplots(figsize = (8,5))
    ax2 = ax.twinx()
    ax.plot(distance,amplitude, 'o')
    # ax.set_title('pinhole 300')
    ax.set_xlabel('steps')
    ax.set_ylabel('Amplitude of PS in counts', color = 'tab:blue')
    ax.tick_params(axis="y", labelcolor='tab:blue')
    ax.plot(ran, cauchy(ran, *popt), 'tab:blue', label='cauchy fit')
    ax.set_xlim(0,18)
    
    #second axis for better visibility
    ax2.set_ylabel('Derivative of Cauchy step function, normalized', color = 'tab:green')
    ax2.plot(ran, derivative_normalized, color ='tab:green')
    ax2.tick_params(axis="y", labelcolor='tab:green')
    plt.tight_layout()
    plt.show()

【问题讨论】:

    标签: python curve-fitting


    【解决方案1】:

    可能有几个原因导致您无法在此代码中获得拟合曲线。一些潜在的问题是:

    为拟合曲线提供的数据不充分或不适用于 Cauchy 函数。数据应该是连续的并且具有清晰的模式,以便曲线拟合正常工作。

    为曲线拟合参数提供的初始值不合适。应根据数据和曲线的预期形状仔细选择初始值。

    为曲线拟合参数提供的界限不合适。应根据数据和曲线的预期形状仔细选择边界。

    要解决这些问题,您可以尝试以下步骤:

    检查为拟合曲线提供的数据并确保它是连续的并且具有清晰的模式。如果不是,请尝试使用不同的数据或转换数据以使其更适合 Cauchy 函数。

    更仔细地选择曲线拟合参数的初始值。您可以尝试使用不同的初始值或使用一种方法根据数据估计初始值。

    更仔细地选择曲线拟合参数的界限。您可以尝试使用不同的边界或使用一种方法根据数据估计边界。

    总的来说,仔细选择曲线拟合的数据、初始值和边界以获得良好的拟合非常重要。

    【讨论】:

      猜你喜欢
      • 2015-06-20
      • 1970-01-01
      • 2022-09-24
      • 1970-01-01
      • 2021-01-19
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      相关资源
      最近更新 更多