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|