在Python / NumPy中计算Jordan正常的矩阵形式

时间:2013-12-01 12:43:11

标签: python numpy matrix scipy linear-algebra

在MATLAB中,您可以使用函数jordan来计算矩阵的Jordan正规形式。

在NumPy和SciPy中有一个等效的功能吗?

2 个答案:

答案 0 :(得分:12)

MATLAB jordan function来自符号数学工具箱,因此从SymPy库中取代Python是不合理的。具体来说,Matrix类的方法为jordan_form。创建sympy Matrix时,可以将numpy数组作为参数传递。例如,以下内容来自wikipedia article on the Jordan normal form

In [1]: import numpy as np

In [2]: from sympy import Matrix

In [3]: a = np.array([[5, 4, 2, 1], [0, 1, -1, -1], [-1, -1, 3, 0], [1, 1, -1, 2]])

In [4]: m = Matrix(a)

In [5]: m
Out[5]: 
Matrix([
[ 5,  4,  2,  1],
[ 0,  1, -1, -1],
[-1, -1,  3,  0],
[ 1,  1, -1,  2]])

In [6]: P, J = m.jordan_form()

In [7]: J
Out[7]: 
Matrix([
[1, 0, 0, 0],
[0, 2, 0, 0],
[0, 0, 4, 1],
[0, 0, 0, 4]])

答案 1 :(得分:-1)

实施this

但它肯定不会像MATLAB那么快。