解释计算约旦形式的36乘36矩阵的误差

mrY*_*mrY 7 matlab matrix linear-algebra symbolic-math numerical-stability

我一直在试图计算只有三个不同的项目,组成一个36分36矩阵的Jordan标准型1,1/20.矩阵是概率转移矩阵,因此,给定这些条目,矩阵显然是稀疏的.

我一直遇到的问题如下:每当我尝试计算时

[V, J] = jordan(A),
Run Code Online (Sandbox Code Playgroud)

要么

[V, J] = jordan(sym(A)),
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:


在MuPAD命令中使用mupadmex 错误时出错:相似度矩阵太大.

sym/mupadmexnout出错(第1546行)
        out = mupadmex(fcn,args {:});

sym/jordan中的错误(第32行)
        [Vsym,Jsym] = mupadmexnout('symobj :: jordan',A,'All');

我在MATLAB帮助中读到,Jordan形式的计算对扰动非常敏感.但是,我认为我的计算不是问题,因为矩阵的所有条目都是整数或整数比.

我的问题如下:

  1. 如何解释收到的错误输出?
  2. 我收到的错误是否可以解决?
  3. 如果错误不可寻址,是否有替代方法(Matlab中的函数)我可以尝试计算Jordan形式?

Dan*_*Man 6

1)如何解释收到的错误输出?

关键是Matlab使用符号计算来评估Jordan形式.这就是它要求你提供有理数的原因.当我们考虑数值编程时,36乘36的矩阵非常小,但是(我不确定)这个大小对于符号编程来说可能很大.

2)为什么matlab没有工具箱来评估Jordan格式的数字?

关键是这种评估在数值上是不稳定的.请参阅Wikipedia中的示例.基本上,具有多个特征值(共享相同块)的矩阵的任何扰动都可以使这些特征值在所需Jordan形式的分离块中变得不同.

3)如果错误不可寻址,是否有替代方法(Matlab中的函数)我可以尝试计算Jordan形式?

我认为Matlab没有数值函数来解决这个任务.

我不确切地知道你正在看什么样的应用......话虽如此,一个(非常常见的)选项是评估Schur形式(两个变换都在上三角分解中转换矩阵),这在数值上是稳定的.它使用单一相似变换.Matlab的schur功能实现了这一点.

另请参阅此Math.StackExchange问​​题:Jordan和Schur分解之间有什么区别?

  • 约旦形式在数值上不稳定,已被提议作为[不可重现的数字基准]的基础(http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.37.8988&rep=rep1&type=pdf) (PDF). (2认同)