矩陣算術
當應用於矩陣時,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]
像往常一樣,.^
運算子可用於元素取冪是所需操作的位置。