6
5

More than 1 year has passed since last update.

Julia早引きノート[25]線形代数演算(ベクトル・行列計算)

Last updated at Posted at 2021-09-30

線形代数演算(ベクトル・行列計算)(書き方例)

note25
LinearAlgebraモジュールの読み込み
 using LinearAlgebra


◆ベクトルの演算
 # 内積(2つのベクトルをa,bとする)
 dot(a, b)
 
 # 外積(ベクトル積)
 cross(a, b)

 # L1ノルム(vを求める対象のベクトルとする)
 norm(v, 1)

 # L2ノルム
 norm(v, 2)

 # L∞ノルム(無限大ノルム)
 norm(v, Inf)

 # L1ノルムでの正規化
 normalize(v, 1)

 # L2ノルムでの正規化
 normalize(v, 2)


◆行列の演算
 # トレース(求める対象の行列をAとする)
 tr(A)

 # 行列式
 det(A)

 # 逆行列
 inv(A)

 # 対称行列
 Symmetric(A)

 # エルミート行列
 Hermitian(A)

 # 上三角行列
 UpperTriangular(A)

 # 下三角行列
 LowerTriangular(A)

 # 対角行列
 Diagonal(A)

 # 転置行列
 transpose(A)

解説

Juliaでは、標準ライブラリに含まれているLinearAlgebraモジュールを使用することで、線形代数の計算や、定型的な行列を求めるなど、便利な機能を使用することができます。

・実際の計算を行う前に、以下のコマンドでLinearAlgebraモジュールを読み込んでおく必要があります。
 using LinearAlgebra
・ベクトルに関しては、内積、外積(ベクトル積)、ノルム等を求めることができます。
・行列に関しては、トレースや行列式の計算、また、逆行列、対称行列、エルミート行列、対角行列、上下三角行列などを求めることができます。

(1)ベクトルの演算

①内積の計算

内積はdot()で計算します。
image.png

②外積(ベクトル積)の計算

2つのベクトルをa,bとすると、
 a = (a1, a2, a3)
 b = (b1, b2, b3)
外積は以下で計算されます。
 (a2 * b3 - a3 * b2, a3 * b1 - a1 * b3, a1 * b2 - a2 * b1)

外積はcross()で計算します。
image.png

③L1ノルムの計算

求めるベクトルをvとします。
 v = (v1, v2, v3)
L1ノルムは、各成分の絶対値の和で求められます。
 |v1| + |v2| + |v3|

L1ノルムはnorm(v, 1)で計算します。
(vは求める対象のベクトル)
image.png

④L2ノルムの計算

L2ノルムは、各成分の2乗和で求められます。
ユークリッドノルムとも呼びます。

$$
\sqrt{v1^2 + v2^2 + v3^2}
$$

L2ノルムはnorm(v, 2)で計算します。
image.png

⑤L∞ノルム(無限大ノルム)の計算

無限大ノルムは、各成分の絶対値の中で最も大きい成分の絶対値をノルムとする方式で、以下のように定義されます。

$$
max_{(i=1,2,...,N)}|v_i|
$$

無限大ノルムはnorm(v, Inf)で計算します。
image.png

⑥L1ノルムでの正規化

L1ノルムで正規化したベクトルを得るには、normalize(v, 1)を使用します。
image.png

⑦L2ノルムでの正規化

L2ノルムで正規化したベクトルを得るには、normalize(v, 2)を使用します。
image.png

(2)行列の演算

①トレースの計算

求める対象の行列をAとします。

$$
A = \begin{pmatrix} 1 & 2 & 3 \\ 4 & 0 & 1 \\ 2 & 5 & 6 \end{pmatrix}
$$

トレースはtr()で計算します。
image.png

②行列式の計算

行列式の値はdet()で計算します。
image.png

③逆列式の計算

逆行列はinv()で求めることができます。
image.png

④対称行列の計算

対称行列はSymmetric()で求めることができます。
image.png

⑤エルミート行列の計算

エルミート行列はHermitian()で求めることができます。
image.png

⑥上三角行列の計算

上三角行列はUpperTriangular()で求めることができます。
image.png

⑦下三角行列の計算

下三角行列はLowerTriangular()で求めることができます。
image.png

⑧対角行列の計算

対角行列はDiagonal()で求めることができます。
image.png

⑨転置行列の取得

transpose()を使用して、行列の転置行列を取得することができます。
image.png

この他にも様々な行列計算の関数が用意されています。
詳細は、Juliaの公式ドキュメントを参照して下さい。

もくじ

Julia早引きノート[01]変数・定数の使い方
Julia早引きノート[02]算術式、演算子
Julia早引きノート[03]複素数
Julia早引きノート[04]正規表現
....

もくじを開く

Julia早引きノート[05]if文
Julia早引きノート[06]ループ処理
Julia早引きノート[07]try, catch, finally
Julia早引きノート[08]変数の型(Int, Float, Bool, Char, String)
Julia早引きノート[09]関数 (1)基本編
Julia早引きノート[10]関数 (2)応用編
Julia早引きノート[11]Nothing型
Julia早引きノート[12]複合型(Composite Type)型
Julia早引きノート[13]タプル
Julia早引きノート[14]リスト(Array型一次元配列)
Julia早引きノート[15]辞書(dictionary)
Julia早引きノート[16]集合
Julia早引きノート[17]多次元配列 (1)初期化
Julia早引きノート[18]多次元配列 (2)様々な演算や関数
Julia早引きノート[19]多次元配列 (3)サブ配列
Julia早引きノート[20]ファイル入出力
Julia早引きノート[21]JSON、XMLファイルの入出力
Julia早引きノート[22]Python関数やPythonモジュールの呼び出し
Julia早引きノート[23]JuliaでのMatplotlibによるグラフ描画
Julia早引きノート[24]CSVFiles(DataFrameとの連携)
Julia早引きノート[25]線形代数演算(ベクトル・行列計算)
(※引き続きコンテンツを増やしていきます)

関連情報

:paperclip: Julia - 公式ページ
https://julialang.org/

:paperclip: Julia - 日本語公式ドキュメント
https://julia-doc-ja.readthedocs.io/ja/latest/index.html

:paperclip: 初めてのJuliaとインストール (Windows & Linux)
https://qiita.com/ttlabo/items/b05bb43d06239f968035

:paperclip: Julia - Mathematics
https://docs.julialang.org/en/v1/base/math/

ご意見など

ご意見、間違い訂正などございましたらお寄せ下さい。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5