在大多数情况下,NDSolve 自动确定应该采用的方向. 但是,如果已经知道在一个特定的方向上有可能存在不连续,则可以通过此设置避免. 反过来,这有助于减少NDSolve 的计算时间.选项"CollocationPoints" 指的是配置点
的个数,正如(5)中所示,用于级数逼近(4). (4) 中级数的阶数
根据配置点来确定. 级数的阶数为
. 配置点在本质上是分布在配点范围上的切比雪夫点.为了说明"CollocationPoints" 的效果,考虑下面这个指标为3的例子.先前的微分代数方程的解可以解析地找到. 精确一致的初始条件如下所示."CollocationPoints" 方法找到正确初始化的默认设置:手动设定配置点是可能的. 设置"CollocationPoints"->2 等效于(4) 中的设置
. 这意味着该解使用常数和线性基函数逼近得到.使用常数和线性基函数进行初始化:尽管迭代收敛,结果也不是正确的一致初始条件. 因为它们充分满足指定的方程,因此不会发出任何消息.检验指定方程中的初始条件:还记得对于高指数方程,一致的初始条件应该也适用于求导后的系统.增加配置点数,以允许更高阶的基函数,从而使算法收敛至期望的结果.试着求解一系列的配置点的初始化问题:将结果作为配置点的函数进行绘图,指示解如何收敛.Red、Green 和Blue 分别对应变量x1、x2、x3:由于逼近
的阶数由配置点
确定,(4) 所得到的线性化的系统将导致一个方阵,并且由此得到的线性方程组可以有效地使用LinearSolve 求解. 然而,产生的线性系统很可能是病态或奇异的. 这样的系统是敏感的,因此,可导致不稳定的迭代. 要解决这个问题,往往需要使用LeastSquares 求解超定方程组.使用子选项"ExtraCollocationPoints",级数逼近的顺序保持与 (4) 中的
相等,但(5) 中
的值修正为
,其中
是额外的配置点. 因此,这就产生了 (5) 中的超定方程组,可使用最小二乘法求解.初始化一个超定系统:对于指标非常高而没有经过指标约简的系统,可能需要使用高得多的配置阶数,以及一个规定的范围,在该范围内进行配置. 缺省情况下,根据扩展所用的工作精度和基函数数目计算配置范围.这里用一个指标为6的系统的作为范