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