PRIMA 给出了一个不稳定的结果?

计算科学 matlab 克雷洛夫法 线性系统
2021-11-25 06:50:55

我正在使用电路的修改节点导纳表示。我在 MATLAB 上使用PRIMA进行模型降阶。我将这些电路视为描述符状态空间系统。

我已经为此工作了很长一段时间。它是一种有保证的被动性保持算法。

但是,对于某些电路系统,我的实现行为不端。虽然我传入了一个稳定的模型,但它返回了一个不稳定的模型(!)。所以我以多种方式测试了输入和输出。

我检查过的事情:

  1. 投影矩阵 Q:正交,误差 ~e-15。
  2. 使用 MATLAB 检查极点pole():它向我展示了一个不稳定的极对,其Re为 ~e+11,所以我看不到它以任何方式越过假想轴。
  3. 使用检查极点eig(-G\C)— 极点实际上是这些值的倒数,即非零值:在 ~e-19 处显示单极(非对)。
  4. hsvd(): 显示了几个不稳定的模式
  5. isstable(): 说它不稳定
  6. 自定义检查功能(来自我的高级学生指南):1 个不稳定杆。

原始系统的极点也是~e+11。原版绝对稳定(我认为是被动的(传输线),但这只是我的猜测。)

现在我真的很困惑。pole()和 和有什么不一样eig(-G\C)而根据后者的那个极点似乎很明显是真正的问题。

E(或C)是对称正定的,A(或G)满足G+G^T到~e-15。但是,B != C^T,我正在研究的算法专门针对输入!= 输出场景。我反复询问和搜索,但没有看到任何关于这个条件的必要性——据我所知,为了简单起见,作者只是简单地假设了这个条件。

我希望有人可以就检查的内容给我进一步的建议。

编辑:我发现这仅发生在降阶模型的某些值上。对于其他人,isstable()报告不稳定并eig(-G\C)说清楚。对于其他人,isstable()报告稳定,但hsvd()仍然发现不稳定模式。

我不希望人们帮助我调试这个确切的问题(这会要求太多),但我需要一些帮助来识别已知的问题,并发现未知的问题。

3个回答

我无法评论您的回答。但是,我在模拟 VLSI 电路中的互连时遇到了类似的问题。那个时候结果证明我错误地应用了prima。

如果系统是

X˙=一个X+

Q 是投影空间,则简化系统是

z˙=一个z+

反对

z˙=-1一个z+-1

情况还不够清楚。你的意思是原来的模型是稳定的?但是它有一个不稳定的极点!如果这是简化模型的极点,则检查具有最小实值的原始模型的特征值。预计将接近假想轴。也许计算误差将其转移到虚轴的另一侧并使简化模型不稳定。从理论上讲,被动系统是一个稳定的系统。PRIMA 保留被动性意味着它将保持简化模型稳定。原件可能不是(数字上)被动的(E=E^T>=0,A^T+A <=0,B^T=C)。

经过重大的蒙混过关,我想出了一个重要的问题。

hsvd()基本上形成了一个平衡的系统。平衡的过程涉及到chol()gramians。chol()要求输入矩阵是正定的。只有当系统是可控的(或可观察的,如果您正在考虑可观察性格拉姆),格拉姆公式才是正定的。完全可控和可观察意味着系统是最小的。

我的系统肯定不是最小的。将我hsvd()的不可观察/不可控制的模式报告不稳定的也是如此。

我希望其他人澄清这是否真的是一个错误。另请参阅我的另一个问题,这不是这个问题的完整后续(即我仍然想要这个问题的答案)。