跳转至

微分方程数值解

为 ODE 和 PDE 求解器创建或修改 options 结构体

options = odeset(Name,Value,...) 创建 options 结构体,可以将其作为参数传递给 ODE 和 PDE 求解器。在结构体 options 中,指定选项具有指定的值。任何未指定的选项都使用默认值。例如,options = odeset('RelTol',1e-3) 返回 RelTol 设置为 1e-3 的 options 结构体。

options = odeset(oldopts,Name,Value,...) 使用新指定的名称-值对组修改现有的 options 结构体 oldopts。这样将覆盖指定选项的任何旧值,并将新选项的值添加到结构体中。

options = odeset(oldopts,newopts) 通过合并现有 options 结构体 oldopts 和新 options 结构体 newopts 来修改现有 options 结构体。任何不等于 [] 的新选项都会覆盖 oldopts 中的相应选项。

求解非刚性微分方程_低阶ode23()

[t,y] = ode23(odefun,tspan,y0)(其中 tspan = [t0 tf])求微分方程组 \(y′=f(t,y)\) 从 t0 到 tf 的积分,初始条件为 y0。解 数组 y 中的每一行都与列向量 t 中返回的值相对应

[t,y] = ode23(odefun,tspan,y0,options) 还使用由 options(使用 odeset 函数创建的参数)定义的积分设置。例如,使用 AbsTol 和 RelTol 选项指定绝对误差容限相对误差容限,或者使用 Mass 选项提供质量矩阵。

这是一个简单的求解实例,plot(X,Y)可以直接绘制原方程图形:

这是一个微分方程组示例:

求解高阶微分方程,像下面这样:

在上述例子中, ode23() 函数的 odefun 参数写成 'funname'@funname两种形式都可以; 微分方程组的ode_function中y(1)=...; y(2)=...;y=[...; ...]; 两种形式都可以。 另外需要注意: 解出来的 数组 y 中的每一行都与列向量 t 中返回的值相对应。解高阶微分方程时,y(:,1)(即y的第一列) 对应是y' 的解;y(:,2)对应的是y'' 的解。

求解非刚性微分方程_中阶ode45()

基本使用与ode23() 完全一致。

要编写带有时变项的ode,将时变项作为函数参数,在ode45() 的odefun参数中把函数句柄写成如下这种形式: 这是一个经典SIR模型