矩阵算术
当应用于矩阵时,Julia 使用算术运算的标准数学含义。有时,需要元素操作。这些标记为操作符之前的句点(.
)以元素方式完成。 (请注意,元素操作通常不如循环有效。)
总和
矩阵上的+
算子是矩阵和。它类似于元素和,但它不会广播形状。也就是说,如果 A
和 B
的形状相同,则 A + B
与 A .+ B
相同; 否则,A + B
是一个错误,而 A .+ B
可能不一定。
julia> A = [1 2
3 4]
2×2 Array{Int64,2}:
1 2
3 4
julia> B = [5 6
7 8]
2×2 Array{Int64,2}:
5 6
7 8
julia> A + B
2×2 Array{Int64,2}:
6 8
10 12
julia> A .+ B
2×2 Array{Int64,2}:
6 8
10 12
julia> C = [9, 10]
2-element Array{Int64,1}:
9
10
julia> A + C
ERROR: DimensionMismatch("dimensions must match")
in promote_shape(::Tuple{Base.OneTo{Int64},Base.OneTo{Int64}}, ::Tuple{Base.OneTo{Int64}}) at ./operators.jl:396
in promote_shape(::Array{Int64,2}, ::Array{Int64,1}) at ./operators.jl:382
in _elementwise(::Base.#+, ::Array{Int64,2}, ::Array{Int64,1}, ::Type{Int64}) at ./arraymath.jl:61
in +(::Array{Int64,2}, ::Array{Int64,1}) at ./arraymath.jl:53
julia> A .+ C
2×2 Array{Int64,2}:
10 11
13 14
同样,-
计算矩阵差异。+
和 -
都可以用作一元运算符。
制品
矩阵上的*
算子是矩阵乘积 (不是元素乘积)。对于 elementwise 产品,请使用 .*
运算符。比较(使用与上面相同的矩阵):
julia> A * B
2×2 Array{Int64,2}:
19 22
43 50
julia> A .* B
2×2 Array{Int64,2}:
5 12
21 32
鲍尔斯
^
运算符计算矩阵求幂 。矩阵求幂可用于快速计算某些重现的值。例如, Fibonacci 数可以通过矩阵表达式生成
fib(n) = (BigInt[1 1; 1 0]^n)[2]
像往常一样,.^
运算符可用于元素取幂是所需操作的位置。