矩阵算术

当应用于矩阵时,Julia 使用算术运算的标准数学含义。有时,需要元素操作。这些标记为操作符之前的句点(.)以元素方式完成。 (请注意,元素操作通常不如循环有效。)

总和

矩阵上的+算子是矩阵和。它类似于元素和,但它不会广播形状。也就是说,如果 AB 的形状相同,则 A + BA .+ 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]

像往常一样,.^运算符可用于元素取幂是所需操作的位置。