Julia 朱莉娅';s反斜杠(\)运算符在两个矩阵上做什么?

Julia 朱莉娅';s反斜杠(\)运算符在两个矩阵上做什么?,julia,linear-algebra,Julia,Linear Algebra,在矩阵的上下文中,如果我们有A\B对A和B执行什么数学运算。文档似乎说明它是除法,但我认为除法对矩阵是无效的运算。线性代数的Julia文档对此有解释。“对于输入矩阵A和B,结果X为A*X==B” 在方阵a的上下文中,a\B返回逆(a)*B线性代数的Julia文档对此进行了解释。“对于输入矩阵A和B,结果X为A*X==B” 在方阵a的上下文中,a\B返回逆(a)*B您可以通过使用@哪个(或@编辑)来确定调用哪个方法 这导致了实施 function (\)(A::AbstractMatrix, B:

在矩阵的上下文中,如果我们有
A\B
A
B
执行什么数学运算。文档似乎说明它是除法,但我认为除法对矩阵是无效的运算。

线性代数的Julia文档对此有解释。“对于输入矩阵A和B,结果X为A*X==B”


在方阵
a
的上下文中,
a\B
返回
逆(a)*B

线性代数的Julia文档对此进行了解释。“对于输入矩阵A和B,结果X为A*X==B”


在方阵
a
的上下文中,
a\B
返回
逆(a)*B

您可以通过使用
@哪个
(或
@编辑
)来确定调用哪个方法

这导致了实施

function (\)(A::AbstractMatrix, B::AbstractVecOrMat)
    require_one_based_indexing(A, B)
    m, n = size(A)
    if m == n
        if istril(A)
            if istriu(A)
                return Diagonal(A) \ B
            else
                return LowerTriangular(A) \ B
            end
        end
        if istriu(A)
            return UpperTriangular(A) \ B
        end
        return lu(A) \ B
    end
    return qr(A,Val(true)) \ B
end

您可以看到,所使用的方法取决于矩阵的结构。在没有任何有用结构的情况下,将执行QR分解,并使用该分解来求解线性系统。

您可以通过使用
@which
(或
@edit
)来确定调用哪个方法

这导致了实施

function (\)(A::AbstractMatrix, B::AbstractVecOrMat)
    require_one_based_indexing(A, B)
    m, n = size(A)
    if m == n
        if istril(A)
            if istriu(A)
                return Diagonal(A) \ B
            else
                return LowerTriangular(A) \ B
            end
        end
        if istriu(A)
            return UpperTriangular(A) \ B
        end
        return lu(A) \ B
    end
    return qr(A,Val(true)) \ B
end

您可以看到,所使用的方法取决于矩阵的结构。在没有任何有用结构的情况下,执行QR分解,使用该分解求解线性系统。

注意,尽管计算了
逆(a)*B
,但由于精度和速度的原因,该方法不涉及计算逆,但即使
a
不是平方,它也能工作,什么是
逆(a)
mean then?更具体地说,它返回
X
最小化
| AX-B | |
注意,尽管计算
逆(A)*B
的方法不涉及计算逆(精度和速度),但即使
A
不是平方,它也能工作,逆(A)是什么mean then?更具体地说,它返回
X
最小化
|AX-B|