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
相关产品推荐
相关产品推荐

