【发布时间】:2013-09-03 20:57:06
【问题描述】:
我有一个像这个例子这样的矩阵(我的实际矩阵可能要大得多)
A = [-1 -2 -0.5;
0 0.5 0;
0 0 -1];
只有两个线性无关的特征值(特征值 -1 重复)。我想通过generalized eigenvectors 获得完整的基础。我知道如何做到这一点的一种方法是使用符号数学工具箱中的 Matlab 的 jordan 函数,但我更喜欢为数字输入设计的东西(实际上,有两个输出,jordan 对于大型矩阵失败:“MuPAD 中的错误命令:相似度矩阵太大。”)。我不需要 Jordan 规范形式,它在数字上下文中是出了名的不稳定,只需要一个广义特征向量的矩阵。是否有一个函数或函数组合可以以数值稳定的方式自动执行此操作,或者必须使用the generic manual method(这样的过程有多稳定)?
注意:“广义特征向量”是指一个非零向量,可用于增强所谓的defective matrix 的不完全基。我并不是指与使用eig 或qz 求解generalized eigenvalue problem 获得的特征值相对应的特征向量(尽管后一种用法很常见,但我认为最好避免使用)。除非有人能纠正我,否则我不相信两者是相同的。
更新 1 - 五个月后:
请参阅my answer here,了解如何以符号方式为大于 82×82 的矩阵获取广义特征向量(此问题中我的测试矩阵的限制)。
我仍然对数字方案感兴趣(或者如果这些方案都与计算 Jordan 形式有关,那么这些方案可能会变得不稳定)。我不希望盲目地实现已被标记为该问题重复的线性代数 101 方法,因为它不是数值算法,而是用于评估学生的纸笔方法(我想它可以实现然而,象征性地)。如果有人能指出该方案的实现或数值分析,我会对此感兴趣。
更新 2 - 2015 年 2 月:以上所有内容在 R2014b 中测试仍然正确。
【问题讨论】:
-
@natan:那么我建议你将此问题标记为重复。
-
@natan:是的,我看到了那个问题/答案。它不是重复的。它基本上是一个手动程序,可以复制许多教科书和维基百科中显示的内容。我自己知道如何获得广义特征值 - 我正在寻找更独立的东西,并且使用内置例程来小心数字问题。你知道什么或任何算法吗?此外,仅供参考,
eigensys在 R2013a 中不再存在,eig(sym(A)) 必须使用。 -
@DavidHeffernan:对于特定的测试矩阵,错误恰好出现在 83×83 处。
-
@DavidHeffernan:就我感兴趣的最终尺寸而言,这些矩阵代表了动态神经网络节点的行为,因此系统可以轻松拥有 100 多个维度。这些矩阵,雅可比矩阵,非常稀疏,所以最好有一种可以利用它的方法。
-
@reverse_engineer:是的,据我所知,Jordan 形式没有数值稳定的算法。但是,我对 Jordan 形式本身并不感兴趣,它只是一种直接获得广义特征值的稳定方法,这样我就可以形成一个完整的基础——或者这两者是否有着千丝万缕的联系?
标签: matlab matrix eigenvector