在MATLAB中,您可以使用函数jordan
来计算矩阵的Jordan正规形式。
在NumPy和SciPy中有一个等效的功能吗?
答案 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那么快。