2026a
# SecondOrderODEProblem
定义 二阶 ODE 问题
函数库: TyMath
# 语法
SecondOrderODEProblem(f,du0,u0,tspan,callback=CallbackSet())
# 说明
数学含义:
要想定义二阶常微分方程,只需给出方程 f 和初始条件 u0。
f 应指定为 f(du,u,p,t) 或 f(ddu,du,u,p,t),并且 u₀ 应为几何形状匹配所需的 AbstractArray(或数字)。
请注意,不限于 u₀ 的数字或向量; 允许提供 u₀ 作为任意矩阵或更高维度的张量。
# 示例
创建二阶 ODE
创建常量常微分方程问题。
首先,定义方程。
f__2(ddu,du,u,p,t)=1.01*u+5.0*du;
所需参数初值 du0,u0,时间跨度 tspan。
using DifferentialEquations
u0=[0.5];
du0=[1.0];
tspan=(0.0,1.0);
利用 ODEProblem 定义常微分方程。
prob = SecondOrderODEProblem(f__2,du0,u0,tspan)
ODEProblem with uType ArrayPartition{Float64, Tuple{Float64, Float64}} and tType Float64. In-place: true
timespan: (0.0, 1.0)
u0: ([1.0], [0.5])
查看初始条件:
prob.u0
ans = ([1.0], [0.5])
# 输入参数
f - 二阶常微分方程形式的函数
f 分为两种定义形式,f(u,p,t) 和 f(du,u,p,t)。
数据类型: Function
u0 - 初值条件
u0 作为初值条件。
数据类型: Int | Float
du0 - 导数初值条件
du0 作为导数初值条件。
数据类型: Int | Float
tspan - 时间跨度
时间跨度一般长度为 2,第二个参数大于第一个参数,且应该为 Float 型。
数据类型:Float
# SecondOrderODEProblem结构体
| 名称 | 含义 |
|---|---|
| f | 二阶导数的函数 |
| u0 | 初始条件 |
| tspan | 时间跨度 |
| callback | 应用于每个使用问题的求解器的回调。默认为 nothing |
# 另请参阅
ODEProblem | SplitODEProblem | DAEProblem | DynamicalODEProblem