【Julia入門】JuliaのLinearAlgebraライブラリ① ベクトル・行列の演算

統計や機械学習に関するプログラミングではPythonRが用いられることが多いですが、近年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/