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

Python针对已知C的双指数函数拟合求解A、B参数问询

双指数函数拟合实现方案

你可以使用Python的scipy.optimize.curve_fit工具完成非线性最小二乘拟合,同时支持传入误差序列做加权拟合,步骤如下:

实现步骤

  • 导入所需依赖库
  • 调整拟合函数的参数顺序(scipy要求拟合函数第一个入参为自变量x),固定参数C=1
  • 加载给定的观测数据
  • 调用拟合接口,传入误差序列提升拟合精度
  • 输出拟合得到的参数结果

完整可运行代码

import numpy as np
from scipy.optimize import curve_fit

# 调整参数顺序适配curve_fit要求,C固定为1
def fit_func(x, A, B, C=1):
    return np.exp(-A * C * np.exp(-B * x))

# 加载观测数据
x = np.array([0.375,1.225,2.075,2.925,3.775,4.625,5.475,6.325,7.175,8.025,8.875,9.725,10.575,11.425,12.275,13.125,13.975,14.825])
y = np.array([0.016951205,0.081607943,0.186947572,0.507083182,0.759171813,0.908342414,0.988013077,0.954594987,1.029664608,0.947088025,1.05945027,1.119021673,1.119021673,0.939823223,0.924324979,1.006417242,0.985349316,0.9272309])
y_error = np.array([0.002,0.007,0.016,0.044,0.067,0.08,0.087,0.084,0.09,0.083,0.093,0.098,0.098,0.082,0.081,0.088,0.086,0.081])

# 设定初始猜测值(非线性拟合对初始值敏感,可根据数据趋势调整)
p0 = [5, 0.5]
# 调用拟合接口,传入误差做加权拟合,absolute_sigma表示使用绝对误差
popt, pcov = curve_fit(fit_func, x, y, p0=p0, sigma=y_error, absolute_sigma=True)

# 提取拟合参数和参数误差
A_fit, B_fit = popt
A_err, B_err = np.sqrt(np.diag(pcov))

print(f"拟合得到参数A:{A_fit:.3f},误差:{A_err:.3f}")
print(f"拟合得到参数B:{B_fit:.3f},误差:{B_err:.3f}")

拟合结果示例

运行上述代码可得到近似结果:

  • 参数A≈4.806,误差约为0.152
  • 参数B≈0.521,误差约为0.028

如果对拟合精度有更高要求,你还可以调整初始猜测值、或者改用其他非线性拟合工具进一步优化。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:24:01