2026a

# ODESystem


创建常微分方程系统

函数库: TySymbolicMath

# 语法

ODESystem(eqs,t,dvs, ps)

# 说明

创建常微分方程系统。示例

# 示例

创建常微分方程系统

创建参数,自变量及状态变量

using TySymbolicMath
using ModelingToolkit
@parameters σ ρ β
@variables t x(t) y(t) z(t)
3-element Vector{Num}:
σ
ρ
β

4-element Vector{Num}:
t
x(t)
y(t)
z(t)

创建微分方法

D = Differential(t)
D = (::Differential) (generic function with 3 methods)

创建方程

eqs = [D(x) ~ σ*(y-x),
D(y) ~ x*(ρ-z)-y,
D(z) ~ x*y - β*z]
eqs = 3-element Vector{Equation}:
 Differential(t)(x(t)) ~ σ*(y(t) - x(t))
 Differential(t)(y(t)) ~ (ρ - z(t))*x(t) - y(t)       
 Differential(t)(z(t)) ~ x(t)*y(t) - β*z(t)

利用@named 和ODESystem函数将方程形式的向量转换为常微分方程系统

@named ode = ODESystem(eqs,t,[x,y,z],[σ,ρ,β])
ode = Model ode with 3 equations
States (3):
x(t)
y(t)
z(t)

Parameters (3):
σ
ρ
β

# 输入参数

eqs - 方程组

eqs为由~连接的方程组构成的方程组向量,且为调用ODESystem函数必须传入参数

t - 自变量

t为ODE系统中的自变量,且为调用ODESystem函数必须传入参数,表示对该变量求导

dvs - 状态变量

由未知变量组成的向量,且为调用ODESystem函数必须传入参数,表示该状态变量对自变量求导

ps - 已知参数

由已知参数组成的向量,且为调用ODESystem函数必须传入参数

# 提示

  • 在调用ODESystem时,eqs,t,dvs,ps为必须传入参数
  • 利用@named 和 ODESystem创建系统后,其系统本身是一个结构体,可以查看系统的相关信息,结构体信息如下:
字段 含义
eqs 定义系统的方程向量
iv 自变量
states 未知变量
ps 已知参数
ctrls 控制参数(ps 的某个子集)
var_to_name 数组变量
jac 雅可比矩阵:注意:这个字段直到在系统上调用calculate_jacobian才会定义
tgrad 时间导数矩阵。注意:在系统上调用 calculate_tgrad 之前,不会定义此字段。
ctrl_jac 控制雅可比矩阵。注意:在系统上调用 calculate_control_jacobian 之前,不会定义此字段。
Wfact Wfact_t 矩阵。 注意:这个字段直到generate_factorized_W 在系统上被调用。
name 系统名称
systems 系统:内部系统
defaults 默认值:在 ODEProblem 中未提供初始条件和/或参数时使用的默认值。
structure 结构:系统的结构信息
connection_type connection_type:系统类型
preface 在评估之前注入赋值语句RHS 函数。
continuous_events 对事件建模的 Vector{SymbolicContinuousCallback}。 积分器将使用求根来保证它在每个过零处步进。