# 指数模型
# 关于指数模型
工具箱提供一个单项指数模型和一个双项指数模型,如以下公式所示
当一个量的变化率与该量的初始量成正比时,通常使用指数。如果与 b 和/或 d 相关联的系数为负值,则 y 表示指数衰减。如果系数为正值,y 表示指数增长。
例如,核素的单一放射性衰变模式由单项指数描述。a 解释为原子核的初始数量,b 是衰变常量,x 是时间,y 是经过特定时间后剩余的原子核数量。如果存在两种衰减模式,则必须使用双项指数模型。对于第二种衰减模式,您需要在模型中添加另一个指数项。
指数增长的示例包括无法治愈的传染病,以及其生长不受捕食、环境因素等抑制的生物种群等。
# 以交互方式拟合指数模型
- 通过在 Syslab 命令行中输入 curveFitter() 打开曲线拟合器。或者,在 APP 选项卡上单击曲线拟合器。
- 在曲线拟合器中,选择曲线数据。在曲线拟合器选项卡的数据部分中,单击选择数据。在选择拟合数据对话框中,选择 X 数据和 Y 数据,或仅选择 Y 数据(相对于索引绘图)。
- 单击拟合类型部分中的箭头以打开库,然后单击回归模型组中的指数。
此处显示单项指数拟合的拟合选项窗格。
您可以在拟合选项窗格中指定以下选项:
选择一个或两个项以拟合 exp1 或 exp2。在结果窗格中查看模型项、系数值和拟合优度统计量;
(可选)在高级选项部分,指定系数起始值和适用您的数据的约束边界,或更改算法设置。此处显示的系数起始值和约束适用于 census 数据。
该 App 根据数据集计算指数拟合的优化起点。您可以覆盖起点,并在拟合选项窗格中指定您自己的值。
有关设置的详细信息,请参见指定拟合选项与优化初始值。
# 使用拟合函数拟合指数模型
此示例说明如何使用 fit 函数对数据进行指数模型拟合。
指数库模型是 fit 和 fittype 函数的输入参量。指定模型类型 "exp1"。
单项指数模型拟合
生成具有指数趋势的数据,然后使用单项指数对数据进行拟合。绘制拟合图和数据图。
using TyCurveFitting
using TyPlot
using TyMath
rng = MT19937ar(5489)
x = 0:0.2:5;
y = 2*exp.(-0.2*x) + 0.1*randn(rng, size(x));
f = fit("exp1",x,y)
f =
常规模型 exp1:
y(a,b,x) = a*exp(b*x)
系数(置信边界为 95%):
a = 2.020565114205408 (1.890067742916231, 2.1510624854945855)
b = -0.18116104692285107 (-0.21036511614463962, -0.1519569777010625)
plotfit(f,x,y)
双项指数模型拟合
f2 = fit("exp2",x,y)
f2 =
常规模型 exp2:
y(a1,b1,a2,b2,x) = a1*exp(b1*x) + a2*exp(b2*x)
系数(置信边界为 95%):
a1 = 4788.2034891161975 (-1.9820009768224277e7, 1.982958617520251e7)
b1 = -0.2574380314872837 (-0.6012651162484199, 0.08638905327385243)
a2 = -4786.1991845661 (-1.982958405914007e7, 1.9820011660770938e7)
b2 = -0.2574759902839302 (-0.6965577594991971, 0.18160577893133667)
提示
fit 函数返回的结果可能会存在不同机器结果不一致的情况,着重关注拟合优度统计量(拟合优度统计量反映拟合效果)。
plotfit(f2,x,y)
设置起点
工具箱基于当前数据集计算优化的指数拟合起点。您可以覆盖起点,并指定您自己的值。
使用 coeffnames 函数找出第一个模型 (f) 中系数项的顺序。
coeffnames(f)
ans = 2-element Vector{String}:
"a"
"b"
如果指定起点,请选择适合您的数据的值。出于示例目的,为系数 a 和 b 设置任意起点。
f = fit("exp1",x,y,startpt=[1,2])
f =
常规模型 exp2:
y(a,b,x) = a*exp(b*x)
系数(置信边界为 95%):
a = 2.0205628306953387 (1.8900655377835607, 2.1510601236071167)
b = -0.18116039341179802 (-0.21036444573828506, -0.15195634108531098)
plotfit(f,x,y)
检查指数拟合选项
如果要修改拟合选项(如适用于数据的系数起始值和约束边界)或更改算法设置,请检查拟合选项。有关这些选项的详细信息,请参见 fitoptions 参考页上 NonlinearLeastSquares 的属性表。
fitoptions("exp1")
ans = TyCurveFitting.SnlsOptions(false, Int64[], Float64[], "NonlinearLeastSquares", "trust region", "off", Float64[], Float64[], Float64[], 0.1, 10.0, 1.0e-6, 1.0e-6, 1.0e-6, 400, 0.25, 0.75, 2.0, 4.0)
# 另请参阅
# APP
# 函数
fit | fittype | fitoptions