我正在使用 Matlab 中的 bvp4c 来解决边界值 ODE 问题。
鉴于 ODE 和边界条件,有没有办法获得有关解决方案的更多信息?我期待多少?0、1、几个?
我应该从 bvp4c 错误消息“遇到奇异雅可比行列”中了解什么?完全没有解决方案?最初的猜测不合适?
我正在使用 Matlab 中的 bvp4c 来解决边界值 ODE 问题。
鉴于 ODE 和边界条件,有没有办法获得有关解决方案的更多信息?我期待多少?0、1、几个?
我应该从 bvp4c 错误消息“遇到奇异雅可比行列”中了解什么?完全没有解决方案?最初的猜测不合适?
奇异雅可比行列式意味着在某处(可能在牛顿求解中)存在一个线性系统,该系统具有多个(或零)解。此问题可能对应于具有不同材料量的不同解决方案;您也许可以通过添加一个控制存在材料量的方程式来解决它。
编辑:MATLABbvp4c
使用四阶精确的三级 Lobatto IIIa 公式。本质上,有一些默认的离散化定义了该方法的搭配点,然后 Lobatto 公式定义了该离散化的四阶插值多项式。由于 Lobatto IIIa 方法是隐式方法,它们必然涉及求解非线性方程,而这种非线性方程求解通常通过牛顿法的变体完成,该方法涉及在每次迭代时求解线性系统。
在我最初回复时不知道 BVP 求解器算法的细节,可以推断出算法中存在线性求解,因为:
编辑2:没有关于两点边值问题(TPBVP)存在和唯一性的一般理论。有针对特定情况的结果。
就直觉而言,如果你有一个以一阶形式表示的 TPBVP方程,你需要线性无关的边界条件。当您拥有所有 Neumann 边界条件(即所有边界条件仅涉及导数)时,就会出现涉及多个解的常见情况。通常,如果您至少有一个狄利克雷条件,则表明您的问题可能有解决方案(尽管它可能不是唯一的)。
正如我在上面所写的,如果您收到“遇到奇异雅可比行列式”的错误消息,一种常见的情况是您的系统应该有一个额外的约束,以另一个方程的形式来解决您的边界值问题;添加额外的约束方程是确定仅具有导数边界条件的问题的唯一解的常用方法,这些约束可能是质量守恒(因此解在域上的积分必须是常数)。
这也可能是您最初猜测的问题,但是如果不了解更多有关问题的中间输出或您正在解决的特定问题,则很难诊断出确切的原因。通常,如果您的初始猜测有问题,当您查看算法中非线性求解的迭代时,它们无法收敛并且残差函数值停滞不前;从查看文档中我不清楚是否有 MATLAB 选项可以输出此信息。你也可以有一个单一的 TPBVP,你可能不得不求助于特殊的方法来解决你的问题。我发现其他软件可以让您更好地控制数值方法和访问求解器信息,但它通常以必须自己实现更多数值方法为代价。你可以使用 PETSc,