You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中scipy.curve_fit拟合参数异常:曲线正常但参数无意义

曲线拟合参数异常:(ax)^b + cx拟合得到恒零解但视觉拟合效果良好

使用Python的scipy.curve_fit工具拟合实验数据时,出现了矛盾情况:拟合生成的曲线视觉上与实验数据贴合良好,但输出的拟合参数完全不符合预期。

拟合方程为(ax)^b + cx,得到的参数结果为[1.44930871e+03, 1.00000000e+00, -1.44930871e+03],满足a=-c且b=1,代入方程后结果恒为0,这和实际显示的拟合曲线明显不符。

实验数据为CFU与OD的对应数据集,拟合图像显示曲线与实验点匹配度较高。

相关代码如下:

import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt

# cfu_u和OD_u为加载后的实验数据数组
xdata = cfu_u
ydata = OD_u

min_cfu = 0.1
max_cfu = 9.1
x_vec = pow(10, np.arange(min_cfu, max_cfu, 0.1))

def func(x, a, b, c):
    return (a * x)**b + c * x 

popt, pcov = curve_fit(func, xdata, ydata)

plt.plot(x_vec, func(x_vec, *popt), label='curve fit', color='slateblue', linewidth=2.2)
plt.plot(cfu_u, OD_u, '-', label='experimental data', marker='.', markersize=8, color='deepskyblue', linewidth=1.4)
plt.legend(loc='upper left', fontsize=12)
plt.ylabel("Y", fontsize=12)
plt.xlabel("X", fontsize=12)
plt.xscale("log")
plt.gcf().set_size_inches(7, 5)
plt.show()

print(popt)
# 输出:[ 1.44930871e+03  1.00000000e+00 -1.44930871e+03]

内容的提问来源于stack exchange,提问作者casella

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 09:10:29