通过计算约旦形式的36

通过计算约旦形式的36

本文介绍了通过计算约旦形式的36 x 36矩阵来解释误差的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在尝试计算仅由三个不同的条目11/20组成的36×36矩阵的约旦范式.该矩阵是一个概率转移矩阵,因此,考虑到这些条目,该矩阵显然是稀疏的.

I've been trying to compute the jordan normal form of a 36-by-36 matrix composed of only three distinct entries, 1, 1/2, and 0. The matrix is a probability transition matrix so, given these entries, the matrix is obviously sparse.

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

The issue I've been having is the following: whenever I try to compute

[V, J] = jordan(A),

[V, J] = jordan(sym(A)),

我收到以下错误消息:

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

Error in sym/mupadmexnout (line 1546)
        out = mupadmex(fcn,args{:});

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

Error in sym/jordan (line 32)
        [Vsym,Jsym] = mupadmexnout('symobj::jordan',A,'All');

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

I've read in the MATLAB help that computation of the Jordan form is very sensitive to perturbations. I did not think my computation would be an issue, however, since all the entries of the matrix are either integers or ratios of integers.

我的问题如下:

  1. 如何解释收到的错误输出?
  2. 我收到的错误是否可以解决?
  3. 如果错误无法解决,是否有其他方法(Matlab中的函数)可以尝试计算约旦形式?

推荐答案

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

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

The point is that Matlab uses symbolic computation to evaluate the Jordan form. This is the reason that it asks you to provide rational numbers. A 36-by-36 matrix is very small when we are considering numerical programming, but (I am not sure about this) maybe this size is big for symbolic programming.

2)为什么Matlab没有工具箱来对Jordan形式进行数字评估?

重点是该评估在数值上是不稳定的.请参阅 Wikipedia中的示例.基本上,具有多个特征值(共享同一块)的矩阵的任何扰动都可能导致这些特征值在所需的约旦形式的分离块中变得不同.

The point is that this evaluation is numerically unstable. See the example in Wikipedia. Basically, any perturbation of a matrix with multiple eigenvalues (that share the same block) can cause these eigenvalues to become distinct in separated blocks of the desired Jordan Form.

3)如果错误无法解决,是否可以使用其他方法(Matlab中的函数)来计算约旦形式?

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

I think Matlab does not have numerical functions to solve this task.

我不确定您正在查看哪种类型的应用程序...话虽如此,一种(非常常见的)选择是评估 Schur形式(两个变换都将矩阵转换为上三角分解),该形式在数值上是稳定的.它使用单一相似性转换. Matlab的 schur 函数可实现此目的.

I dont know exactly what kind of application you are looking at... Having said that, one (very common) option is to evaluate the Schur form (both transformations transform the matrix in an upper triangular decomposition), which is numerically stable. It uses a unitary similarity transformation. Matlab's schur function implements this.

另请参阅此Math.StackExchange问​​题:有什么区别和乔尔分解之间的关系?

See also this Math.StackExchange question: What's the difference between Jordan and Schur decomposition?

这篇关于通过计算约旦形式的36 x 36矩阵来解释误差的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-29 08:44