2026a

# 指数模型

# 关于指数模型


工具箱提供一个单项指数模型和一个双项指数模型,如以下公式所示

当一个量的变化率与该量的初始量成正比时,通常使用指数。如果与 b 和/或 d 相关联的系数为负值,则 y 表示指数衰减。如果系数为正值,y 表示指数增长。

例如,核素的单一放射性衰变模式由单项指数描述。a 解释为原子核的初始数量,b 是衰变常量,x 是时间,y 是经过特定时间后剩余的原子核数量。如果存在两种衰减模式,则必须使用双项指数模型。对于第二种衰减模式,您需要在模型中添加另一个指数项。

指数增长的示例包括无法治愈的传染病,以及其生长不受捕食、环境因素等抑制的生物种群等。

# 以交互方式拟合指数模型

  1. 通过在 Syslab 命令行中输入 curveFitter() 打开曲线拟合器。或者,在 APP 选项卡上单击曲线拟合器。
  2. 在曲线拟合器中,选择曲线数据。在曲线拟合器选项卡的数据部分中,单击选择数据。在选择拟合数据对话框中,选择 X 数据Y 数据,或仅选择 Y 数据(相对于索引绘图)。
  3. 单击拟合类型部分中的箭头以打开库,然后单击回归模型组中的指数

此处显示单项指数拟合的拟合选项窗格。

您可以在拟合选项窗格中指定以下选项:

  • 选择一个或两个项以拟合 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

# 相关主题

指定拟合选项与优化初始值