【问题标题】:How to find row-echelon matrix form (not reduced) in Python?如何在 Python 中找到行梯形矩阵形式(不简化)?
【发布时间】:2018-12-20 20:15:12
【问题描述】:

我正在为我的线性代数课做一个项目。我遇到了一个小问题。我找不到在 Python(不是 MATLAB)中找到行梯形矩阵形式(未简化)的任何方法。 有人可以帮我吗? 谢谢。

(我用python3.x)

【问题讨论】:

    标签: python python-3.x matrix


    【解决方案1】:

    Bill M 的回答是正确的。当您发现 LU 分解时,U 矩阵是在 REF 中写入 M 的正确方法(请注意,REF 不是唯一的,因此有多种可能的写入方法)。要了解原因,请记住 LU 分解找到 P,L,U 使得 PLU = M。当 L 为满秩时,我们可以将其写为 U = (PL)-1M。所以 (PL)-1 定义了您必须在 M 上执行的行操作才能将其更改为 U。

    【讨论】:

    【解决方案2】:

    我认为scipy.linalg's "lu" 可以做到这一点:

    >>> from scipy.linalg import lu
    >>> import numpy as np
    >>> M = np.array([[0,3,-6,6,4,-5], [3,-7,8,-5,8,9], [3,-9,12,-9,6,15]])
    >>> p,l,u = lu(M)
    >>> u
    array([[ 3.        , -7.        ,  8.        , -5.        ,  8.        ,  9.        ],
           [ 0.        ,  3.        , -6.        ,  6.        ,  4.        , -5.        ],
           [ 0.        ,  0.        ,  0.        ,  0.        ,  0.66666667, 2.66666667]])
    >>>
    

    【讨论】:

    • 谢谢您,先生,您回复我,但这种方式对我没有帮助。因此,当您找到表示 M = L * U 的 'u' 时,它只会找到 2 个不同的矩阵,它们类似于 M 的组件。但是,如果我们想获得 M 的 ref 版本,则需要做一些M上的行操作。所以'L*U'只是写矩阵的一种方式,REF需要修改M。它们是不同的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    相关资源
    最近更新 更多