有没有一种方法可以在 MATLAB 中检查大型矩阵的无条件稳定性或正定性?
例如,我知道具有 M 属性的矩阵(正主对角元素和负非对角元素,每行或每列中的主对角元素大于非对角元素的总和)导致无条件稳定的系统方程。但我无法决定其他矩阵。
有没有一种方法可以在 MATLAB 中检查大型矩阵的无条件稳定性或正定性?
例如,我知道具有 M 属性的矩阵(正主对角元素和负非对角元素,每行或每列中的主对角元素大于非对角元素的总和)导致无条件稳定的系统方程。但我无法决定其他矩阵。
一般来说,你最好的选择是了解你的矩阵来自哪里,并能够证明它在理论上是正定的。显示矩阵是正定的计算方法(包括特征值、Cholesky 分解和检查主次要的行列式)对于大型稀疏矩阵都是不切实际的。
如果您的矩阵密集且大小仅为中等大小(您可以轻松地将它们放入内存中),那么检查对称性然后计算 Cholesky 分解可能是检查正定性的最实用方法。
我怀疑您还想要一种计算成本不高的方法。因此,根据您是否认为这不是太昂贵的计算,您可以使用以下内容。查看每个(左上)子矩阵的行列式是否大于零。
对于左上角子矩阵,我的意思是:对于那么,
这还有一个优点,即只要遇到小于或等于零的行列式,它就可以终止。根据您有多少 CPU 内核可用,您可以通过与parfor. 只是不知道遇到不好的行列式还能不能终止。