줄리아에서 2차원 배열 연산에 관한 함수들
$A = \begin{pmatrix} 1 & 2 & 1 \\ 0 & 3 & 0 \\ 2 & 3 & 4\end{pmatrix}$라고 하자.
전치행렬
julia> A =[1 2 1;
0 3 0;
2 3 4]
3×3 Array{Int64,2}:
1 2 1
0 3 0
2 3 4
julia> transpose(A)
3×3 LinearAlgebra.Transpose{Int64,Array{Int64,2}}:
1 0 2
2 3 3
1 0 4
julia> A'
3×3 LinearAlgebra.Adjoint{Int64,Array{Int64,2}}:
1 0 2
2 3 3
1 0 4
행렬의 원소가 실수라면 transpose()
와 '
는 같은 행렬을 반환하지만 자료형이 미묘하게 다르다. 그 이유는 '
가 정확하게는 transpose가 아니라 conjugate transpose이기 때문이다. 따라서 실수 행렬일 때는 사실상 같은 행렬을 반환하고 복소수 행렬일 때는 전혀 다른 결과를 반환한다.
julia> A_complex=[1+im 2 1+im;
0 3 0+im;
2 3+im 4]
3×3 Array{Complex{Int64},2}:
1+1im 2+0im 1+1im
0+0im 3+0im 0+1im
2+0im 3+1im 4+0im
julia> transpose(A_complex)
3×3 LinearAlgebra.Transpose{Complex{Int64},Array{Complex{Int64},2}}:
1+1im 0+0im 2+0im
2+0im 3+0im 3+1im
1+1im 0+1im 4+0im
julia> A_complex'
3×3 LinearAlgebra.Adjoint{Complex{Int64},Array{Complex{Int64},2}}:
1-1im 0+0im 2+0im
2+0im 3+0im 3-1im
1-1im 0-1im 4+0im
거듭제곱
julia> A =[1 2 1;
0 3 0;
2 3 4]
3×3 Array{Int64,2}:
1 2 1
0 3 0
2 3 4
julia> A^2
3×3 Array{Int64,2}:
3 11 5
0 9 0
10 25 18
julia> A*A
3×3 Array{Int64,2}:
3 11 5
0 9 0
10 25 18
julia> A^3
3×3 Array{Int64,2}:
13 54 23
0 27 0
46 149 82
julia> A*A*A
3×3 Array{Int64,2}:
13 54 23
0 27 0
46 149 82
A^2
와 A*A
는 완전히 같은 결과를 반환한다. 마찬가지로 A^3
와 A*A*A
는 서로 같다.
원소별 곱셈, 원소별 나눗셈
julia> A =[1 2 1;
0 3 0;
2 3 4]
3×3 Array{Int64,2}:
1 2 1
0 3 0
2 3 4
julia> A.*A
3×3 Array{Int64,2}:
1 4 1
0 9 0
4 9 16
julia> A./A
3×3 Array{Float64,2}:
1.0 1.0 1.0
NaN 1.0 NaN
1.0 1.0 1.0
각 원소별로 곱하거나 나눈 결과를 반환한다.
좌우반전, 상하반전
julia> A =[1 2 1;
0 3 0;
2 3 4]
3×3 Array{Int64,2}:
1 2 1
0 3 0
2 3 4
julia> reverse(A,dims=1)
3×3 Array{Int64,2}:
2 3 4
0 3 0
1 2 1
julia> reverse(A,dims=2)
3×3 Array{Int64,2}:
1 2 1
0 3 0
4 3 2
reverse(A,dims=1)
은 행렬 $A$를 위아래로 뒤집은 행렬을 반환하고 매트랩에서 flipud(A)
와 같다. reverse(A,dims=2)
는 행렬 $A$를 좌우로 뒤집은 행렬을 반환하고 매트랩에서 fliplr(A)
와 같다.
역행렬
julia> A =[1 2 1;
0 3 0;
2 3 4]
3×3 Array{Int64,2}:
1 2 1
0 3 0
2 3 4
julia> inv(A)
3×3 Array{Float64,2}:
2.0 -0.833333 -0.5
0.0 0.333333 0.0
-1.0 0.166667 0.5
행렬 $A$의 역행렬을 반환한다. 역행렬을 구할 수 없으면 에러가 뜬다.
환경
- OS: Windows10
- Version: 1.5.3 (2020-11-09)