离散与插值
Radau 与 Lobatto 节点
Pockit 提供 Radau 与 Lobatto 节点两种插值节点
- Radau 节点在子区间端点处可以间断。若函数的间断点位于子区间端点,其可精确表示被近似函数
- Lobatto 节点在相邻子区间公共端点共用同一个优化变量,因此其插值结果总是为连续函数,仅可以精确近似连续函数。此外,Lobatto 节点具有在子区间内对称的特点
具体选择:
- 若控制连续,则两种插值点均可采用
- 若控制间断,但瞬间切换不必精确计算,可以容许用斜率很大的短时间切换近似,则两种插值点均可采用
- 需要精确近似间断函数,则只能选择 Radau 节点
子区间及插值点数量
Pockit 将时间区间的函数近似为多个子区间的多项式插值。其中子区间划分和每个子区间的插值点数量是用户指定的参数,也可以通过 Pockit 提供的迭代方法自动调整。
在选择子区间时,需要注意:
- 子区间数量过多或过少都可能导致求解失败
- 若问题的控制量为间断函数,子区间端点应尽量接近间断点,以获得更好的近似效果
- 为了避免病态数值问题,不同子区间长度不应相差过大(相差多个数量级)
在选择插值点数量时,需要注意:
- 不同子区间内的插值点数量可以不同,但不易相差过大
- 若控制为间断函数,往往插值点数较低(\(1 \sim 10\))时可以获得更好的近似效果;若控制光滑,每个区间内的插值点数可以适当增加(\(10\sim 20\)),但不可过多(\(> 30\))