三角行列は、Pythonで簡単に出力・演算することができます。
本記事では、Pythonを使用した三角行列の出力と基本演算方法について、詳しくご説明します。
三角行列
三角行列(triangular matrix)とは、正方行列の一種で、下三角行列と上三角行列を総じて言います。
下三角行列とは、正方行列の主対角線より上の成分がすべて\(0\)になる行列のことです。
上三角行列とは、正方行列の主対角線より下の成分がすべて\(0\)になる行列のことです。
numpy.tril()
NumPyのnumpy.tril()を使用すると、引数に指定した行列の主対角線より上の成分をすべて\(0\)にすること(下三角行列を生成すること)ができます。
#input
import numpy as np
np.random.seed(7)
A = np.random.randint(0,10,(5,5))
print("行列A:\n{}\n".format(A))
L = np.tril(A)
print("行列Aの下三角行列:\n{}".format(L))
#output
行列A:
[[4 9 6 3 3]
[7 7 9 7 8]
[9 8 7 6 4]
[0 7 0 7 6]
[3 5 8 8 7]]
行列Aの下三角行列:
[[4 0 0 0 0]
[7 7 0 0 0]
[9 8 7 0 0]
[0 7 0 7 0]
[3 5 8 8 7]]
numpy.tri()
NumPyのnumpy.tri()を使用すると、引数に指定した次数の正方行列に対して、主対角線より下の成分が\(1\)となる下三角行列を生成することができます。
#input
import numpy as np
L = np.tri(5)
print(L)
#output
[[1. 0. 0. 0. 0.]
[1. 1. 0. 0. 0.]
[1. 1. 1. 0. 0.]
[1. 1. 1. 1. 0.]
[1. 1. 1. 1. 1.]]
numpy.triu()
NumPyのnumpy.triu()を使用すると、引数に指定した行列の主対角線より下の成分をすべて\(0\)にすること(上三角行列を生成すること)ができます。
#input
import numpy as np
np.random.seed(8)
A = np.random.randint(0,10,(5,5))
print("行列A:\n{}\n".format(A))
L = np.triu(A)
print("行列Aの上三角行列:\n{}".format(L))
#output
行列A:
[[3 4 1 9 5]
[8 3 8 0 5]
[1 3 9 2 2]
[6 8 9 3 4]
[5 5 7 9 2]]
行列Aの上三角行列:
[[3 4 1 9 5]
[0 3 8 0 5]
[0 0 9 2 2]
[0 0 0 3 4]
[0 0 0 0 2]]
三角行列同士の演算
下三角行列同士を演算すると、下三角行列になります。
試した結果を以下にご紹介します。
#input
import numpy as np
np.random.seed(9)
A = np.random.randint(0,10,(5,5))
L1 = np.tril(A)
print("下三角行列L1:\n{}\n".format(L1))
np.random.seed(1)
B = np.random.randint(0,10,(5,5))
L2 = np.tril(B)
print("下三角行列L2:\n{}\n".format(L2))
C = L1+L2
print("L1とL2の和:\n{}".format(C))
D = np.dot(L1,L2)
print("L1とL2の積:\n{}".format(D))
#output
下三角行列L1:
[[5 0 0 0 0]
[6 4 0 0 0]
[5 1 0 0 0]
[8 2 6 8 0]
[8 3 5 3 6]]
下三角行列L2:
[[5 0 0 0 0]
[0 1 0 0 0]
[2 4 5 0 0]
[2 4 7 7 0]
[1 7 0 6 9]]
L1とL2の和:
[[10 0 0 0 0]
[ 6 5 0 0 0]
[ 7 5 5 0 0]
[10 6 13 15 0]
[ 9 10 5 9 15]]
L1とL2の積:
[[25 0 0 0 0]
[30 4 0 0 0]
[25 1 0 0 0]
[68 58 86 56 0]
[62 77 46 57 54]]
同様に、上三角行列同士の演算結果も、上三角行列になります。
まとめ
この記事では、Pythonを使用した三角行列の出力と基本演算方法について、ご説明しました。
本記事を参考に、ぜひ試してみて下さい。
参考
Python学習用おすすめ教材
Pythonの基本を学びたい方向け
統計学基礎を学びたい方向け
Pythonの統計解析を学びたい方向け
おすすめプログラミングスクール
Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。
私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。
現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。
無料体験ができますので、まずは試してみてください!