离散与插值

Radau 与 Lobatto 节点

Pockit 提供 Radau 与 Lobatto 节点两种插值节点

  • Radau 节点在子区间端点处可以间断。若函数的间断点位于子区间端点,其可精确表示被近似函数
  • Lobatto 节点在相邻子区间公共端点共用同一个优化变量,因此其插值结果总是为连续函数,仅可以精确近似连续函数。此外,Lobatto 节点具有在子区间内对称的特点

具体选择:

  • 若控制连续,则两种插值点均可采用
  • 若控制间断,但瞬间切换不必精确计算,可以容许用斜率很大的短时间切换近似,则两种插值点均可采用
  • 需要精确近似间断函数,则只能选择 Radau 节点

子区间及插值点数量

Pockit 将时间区间的函数近似为多个子区间的多项式插值。其中子区间划分和每个子区间的插值点数量是用户指定的参数,也可以通过 Pockit 提供的迭代方法自动调整。

在选择子区间时,需要注意:

  • 子区间数量过多或过少都可能导致求解失败
  • 若问题的控制量为间断函数,子区间端点应尽量接近间断点,以获得更好的近似效果
  • 为了避免病态数值问题,不同子区间长度不应相差过大(相差多个数量级)

在选择插值点数量时,需要注意:

  • 不同子区间内的插值点数量可以不同,但不易相差过大
  • 若控制为间断函数,往往插值点数较低(\(1 \sim 10\))时可以获得更好的近似效果;若控制光滑,每个区间内的插值点数可以适当增加(\(10\sim 20\)),但不可过多(\(> 30\))