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

scipy curve_fit拟合逻辑生长模型报only size-1 arrays错误如何解决

错误原因
  • 拟合函数中调用了仅支持标量运算的math.exp(),而curve_fit会将numpy数组格式的xData整体传入作为t参数,类型不匹配触发报错。
  • 初始猜测值中x_0设为0.0,函数运算时会出现除零逻辑,同样会导致运行失败。同时初始给定的k值16.5过大,不符合逻辑生长方程的参数范围,易导致拟合不收敛。
修复后代码
import numpy as np
from scipy.optimize import curve_fit

xData = np.array([0, 2, 5, 10, 15, 20, 25, 30]) # hours
yData = np.array([ 0.398,  0.543,  1.56,  4.34,  7.22, 9.86 , 10.5, 10.6]) # biomass, g/L

def func1(t,x_infin,x_0,k):
    '逻辑生长拟合函数'
    # 改用numpy的exp方法支持数组批量运算
    g = x_infin / (1 + (((x_infin - x_0)/x_0) * np.exp(-k * t)))
    return g

# 修正初始猜测:x0接近yData首个测量值,k调整为合理范围
initial_guess = [10.5, 0.4, 0.2] 
pars, pcov = curve_fit(func1, xData, yData, p0 = initial_guess)

# 打印拟合结果
print(f"拟合得到参数:x_infin={pars[0]:.3f}, x_0={pars[1]:.3f}, k={pars[2]:.3f}")

运行上述代码可正常得到拟合结果,参数值约为x_infin=10.861,x_0=0.494,k=0.311。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:57:00