bvpset
创建或更改边界值问题的 options 结构体
语法
options = bvpset('name1',value1,'name2',value2,...)
options = bvpset(oldopts,'name1',value1,...)
options = bvpset(oldopts,newopts)
bvpset
说明
options = bvpset('name1',value1,'name2',value2,...)
创建可提供给边界值问题求解器 bvp4c
的结构体 options
,在该结构体中,给定属性具有指定值。任何未指定的属性都会保留其默认值。对于所有属性,仅键入唯一标识属性的前导字符即可。bvpset
忽略属性名称的大小写。
options = bvpset(oldopts,'name1',value1,...)
更改现有 options 结构体 oldopts
。这会覆盖 oldopts
中使用名称/值对指定的所有值,并返回修改后的结构体作为输出参量。
options = bvpset(oldopts,newopts)
合并现有 options 结构体 oldopts
和新 options 结构体 newopts
。newopts
中设置的任何值将覆盖 oldopts
中的对应值。
bvpset
(不带输入参量)显示所有属性名称及其可能的值,并使用花括号 {}
指示默认值。
使用函数 bvpget
可以在 options
结构体中查询特定属性的值。
BVP 属性
bvpset
用于为边界值问题求解器 bvp4c
指定属性。可以设置多种类别的属性:
误差容限属性
由于 bvp4c
使用配置公式,因此数值解基于满足配置公式的网格点。网格选择和误差控制均基于此解的残差,因此计算的解 S(x) 是扰动问题 S′(x) = f(x,S(x)) + res(x) 的精确解。在网格的每个子区间上,会估计解的第 i
个分量中的残差范数 res(i)
,该范数应小于或等于容差。此容差由用户定义的相对误差 RelTol
和绝对误差 AbsTol
共同决定。
下表介绍了误差容限属性。
BVP 误差容限属性
属性 | 值 | 描述 |
---|---|---|
| 正标量 { | 适用于残差向量的所有分量的相对误差容限。它是相对于 f(x,y) 的大小的残差测度。默认值 计算的解 S(x) 是 S′(x) = F(x,S(x)) + res(x) 的精确解。在网格的每个子区间上,残差 res(x) 满足 |
| 正标量或向量 { | 应用于残差向量的对应分量的绝对误差容限。 |
向量化
下表介绍了 BVP 向量化属性。bvp4c
使用的 ODE 函数的向量化不同于 ODE 求解器使用的向量化:
对于
bvp4c
,必须针对第一个参量和第二个参量将 ODE 函数向量化,以使F([x1 x2 ...],[y1 y2 ...])
返回[F(x1,y1) F(x2,y2)...]
。即使提供了解析雅可比矩阵,
bvp4c
也会受益于向量化处理。对于刚性 ODE 求解器,当使用解析雅可比矩阵时,会忽略向量化。
向量化属性
属性 | 值 | 描述 |
---|---|---|
|
| 设置为 on 可以告知 使用 MATLAB® 数组表示法通常可以轻松向量化 ODE 函数。在前面展示的 function dydx = shockODE(x,y,e) pix = pi*x; dydx = [ y(2,:)... -x/e.*y(2,:)-pi^2*cos(pix)- pix/e.*sin(pix)]; |
解析偏导数
默认情况下,bvp4c
求解器使用有限差分逼近所有偏导数。如果提供微分方程的解析偏导数 ∂f/∂y,以及边界条件的解析偏导数 ∂bc/∂ya 和 ∂bc/∂yb,bvp4c
会更有效。如果问题涉及未知参数,还必须相对于参数提供偏导数 ∂f/∂p 和 ∂bc/∂p。
下表介绍了解析偏导数属性。
BVP 解析偏导数属性
属性 | 值 | 描述 |
---|---|---|
| 函数句柄 | 计算 f(x,y) 的解析偏导数的函数句柄。当求 y′ = f(x,y) 的解时,如果 |
| 函数句柄 | 计算 bc(ya,yb) 的解析偏导数的函数句柄。对于边界条件 bc(ya,yb),如果 [ |
奇异 BVP
bvp4c
可对以下形式的奇异问题进行求解
(位于区间 [0,b],其中 b > 0)。对于此类问题,请将常量矩阵 S 指定为 SingularTerm
的值。对于此形式的方程,odefun
仅计算 f(x,y,p) 项,其中 p 表示未知参数(如果有)。
奇异 BVP 属性
属性 | 值 | 描述 |
---|---|---|
| 常量矩阵 | 奇异 BVP 的奇异项。设置为以下形式的方程的常量矩阵 S (位于区间 [0,b],其中 b > 0)。 |
网格大小属性
bvp4c
直接对代数方程求解,以便在每个网格点确定 BVP 的数值解。代数方程组的大小取决于微分方程数 (n
) 和当前网格中的网格点数 (N
)。当已用完允许的网格点数时,计算会停止,bvp4c
会显示一条警告消息并返回其目前找到的解。该解不符合误差容限,但可以为使用放宽条件后误差容限或增大的 Nmax
值重新开始执行的计算提供有用的初始估计值。
下表介绍了网格大小属性。
BVP 网格大小属性
属性 | 值 | 描述 |
---|---|---|
| 正整数 { | 对 BVP 求解时允许的最大网格点数,其中 |
解统计信息属性
Stats
属性用于查看解统计信息。
下表介绍了解统计信息属性。
BVP 解统计信息属性
属性 | 值 | 描述 |
---|---|---|
|
| 指定是否显示有关计算的统计信息。如果
|
示例
要创建将 bvp4c
的相对误差容限从默认值 1e-3
更改为 1e-4
的 options 结构体,请输入
options = bvpset('RelTol',1e-4);
要从 options
恢复 'RelTol'
的值,请输入
bvpget(options,'RelTol') ans = 1.0000e-004
扩展功能
版本历史记录
在 R2006a 之前推出