幂矩阵与失控判断
4.2 幂矩阵:问题的提出
- 考虑一个离散时间系统
- 递推展开:
- 问题变成: 会不会爆炸?
- 这是控制系统、递推算法、种群模型都会遇到的问题
4.3 对角矩阵的情况
一维情形 ,等价于
结论:
- → 失控
- → 不失控
特殊情况 : 数值反复跳动
- 但不会跳到无穷大,属于「不会失控」
- 如果不考虑这种情况而要求所有数值趋向某个目标点,术语叫渐进稳定
- 「点 是渐进稳定的」指:只要初始点 和观测点 之间的距离在常数 以内,当 时 必收敛于
高维情形看着吓人,实际是纸老虎
一计算就变成三个独立的标量方程:
每个分量各自判断是否失控即可
4.6 连续时间系统
- 连续时间系统的「剧情发展」和离散系统一样,只是判断失控的条件不同
- 背景是微分方程模型
- 图 4.9 的 LCR 串联电路(电感 、电容 、电阻 )
- 无论 取何值都不会失控
- 真正需要担心的是加入了放大器的电路(从系统外部获得能量来源)
- 连续时间系统对应的是 而不是
- 判据从「」变成「实部大于 0」
- 离散系统的特征值 对应连续系统的 ,但连续系统看的是
为什么对角矩阵是突破口
对角矩阵的幂很好算: 的对角线就是各元素自己的 次方。所以判断「会不会爆炸」只需看对角线元素的绝对值。
但一般的 不是对角矩阵。能不能把它变成对角的?
这正是第 4 章后半段要回答的问题:
4.4 可对角化的情况:,其中 是对角矩阵
- 于是
- 失控与否归结为 的对角元素
4.7 不可对角化的情况:矩阵不能对角化,就没法用上面的办法
- 这时候需要 Jordan 标准型
所以这一章的逻辑链条是:
失控问题 |
用 Ruby 验证幂矩阵
# 矩阵乘法 |
输出:
t=1 r = [1.3, 0.3] |
两个分量的命运完全不同:第一个分量每次乘 1.3,,指数增长;第二个每次乘 0.3,,指数衰减。
整个系统失控与否,取决于最坏的那个分量。 这就是对角情形下判据「 则失控」的直观含义。
数值计算上的一个提醒
书里 3.7 节提到,可以用消元求出的解作为初始值反复迭代,得到精度更高的结果。这叫「迭代改进」。
对幂矩阵来说,同样可以用 的思路。上面代码里的快速幂就是这个道理:把指数按二进制拆开,,只需要 4 次矩阵乘法而不是 10 次。
矩阵乘法的复杂度是 ,所以快速幂把 降到了 。当 很大时(比如 )差别巨大。