統計や機械学習に関するプログラミングではPython
やR
が用いられることが多いですが、近年Julia
も注目を集めています。そこで当シリーズではJulia
の基本構文からライブラリの用い方などについて取りまとめます。当記事ではLinearAlgebraライブラリを用いたベクトル・行列の演算について取りまとめを行いました。
・Julia
入門
https://www.hello-statisticians.com/julia
・Julia 1.8 Documentation
https://docs.julialang.org/en/v1/
ベクトルの演算
下記のようにLinearAlgebra
ライブラリを読み込むことで内積を計算するdot
関数やクロス積を計算するcross
関数を実行することができます。
using LinearAlgebra
println(dot([1, 2, 3], [1, 1, 1]))
println(cross([0, 1, 0], [0, 0, 1]))
・実行結果
6
[1, 0, 0]
LinearAlgebra
ライブラリではベクトルのノルムを計算するnorm
関数やベクトルの正規化を行うnormalize
関数などがあり、下記のように実行することができます。
using LinearAlgebra
v = [1, 2, 3]
println(norm(v, 1))
println(norm(v, 2))
println(norm(v, Inf))
println(normalize(v, 1))
println(normalize(v, 2))
・実行結果
6.0
3.7416573867739413
3.0
[0.16666666666666666, 0.3333333333333333, 0.5]
[0.2672612419124244, 0.5345224838248488, 0.8017837257372732]
行列の演算
LinearAlgebra
ライブラリには行列のトレースを計算するtr
関数、行列式を計算するdet
関数、逆行列を計算するinv
関数が用意されており、それぞれ下記のように実行することができます。
using LinearAlgebra
A = [1 2 3; 4 1 6; 7 8 1]
println(A)
println("===")
println(tr(A))
println(det(A))
println(inv(A))
・実行結果
[1 2 3; 4 1 6; 7 8 1]
===
3
104.0
[-0.4519230769230769 0.2115384615384615 0.08653846153846155; 0.3653846153846154 -0.1923076923076923 0.057692307692307675; 0.24038461538461536 0.057692307692307696 -0.0673076923076923]
参考
・Julia 1.8 Documentation
https://docs.julialang.org/en/v1/