计算矩阵的简化阶梯形式时的 Sympy 错误
Sympy error on calculating reduced echelon form of matrix
我是线性代数和 sympy 的新手。我正在尝试使用 sympy 矩阵的 .rref()
函数来获得简化的阶梯形式。
我的目标是采用随机矩阵,减去单位矩阵并找到新矩阵的简化阶梯形式。当我执行这些操作时,我 而不是 得到矩阵的简化阶梯形式的正确答案。但是,当我在没有进行任何先前操作的情况下将所需的矩阵分配给变量时,然后 rref returns 正确的结果。请参见下图。谢谢!非常感谢任何帮助。
发生这种情况是因为您使用的是浮点数而不是 Rational。您可以使用 nsimplify 将浮点数转换为有理数:
In [14]: PP = Matrix([[.9, .7], [.1, .3]]).applyfunc(nsimplify)
In [15]: PP
Out[15]:
⎡9/10 7/10⎤
⎢ ⎥
⎣1/10 3/10⎦
In [16]: II = Matrix([[1, 0], [0, 1]])
In [17]: DIF = PP - II
In [18]: DIF
Out[18]:
⎡-1/10 7/10 ⎤
⎢ ⎥
⎣1/10 -7/10⎦
In [19]: DIF.rref()
Out[19]:
⎛⎡1 -7⎤ ⎞
⎜⎢ ⎥, (0,)⎟
⎝⎣0 0 ⎦ ⎠
我是线性代数和 sympy 的新手。我正在尝试使用 sympy 矩阵的 .rref()
函数来获得简化的阶梯形式。
我的目标是采用随机矩阵,减去单位矩阵并找到新矩阵的简化阶梯形式。当我执行这些操作时,我 而不是 得到矩阵的简化阶梯形式的正确答案。但是,当我在没有进行任何先前操作的情况下将所需的矩阵分配给变量时,然后 rref returns 正确的结果。请参见下图。谢谢!非常感谢任何帮助。
发生这种情况是因为您使用的是浮点数而不是 Rational。您可以使用 nsimplify 将浮点数转换为有理数:
In [14]: PP = Matrix([[.9, .7], [.1, .3]]).applyfunc(nsimplify)
In [15]: PP
Out[15]:
⎡9/10 7/10⎤
⎢ ⎥
⎣1/10 3/10⎦
In [16]: II = Matrix([[1, 0], [0, 1]])
In [17]: DIF = PP - II
In [18]: DIF
Out[18]:
⎡-1/10 7/10 ⎤
⎢ ⎥
⎣1/10 -7/10⎦
In [19]: DIF.rref()
Out[19]:
⎛⎡1 -7⎤ ⎞
⎜⎢ ⎥, (0,)⎟
⎝⎣0 0 ⎦ ⎠