【Python入門】基本行列|基本変形用の行列を実装する

基本行列|基本変形用の行列を実装する_アイキャッチ プログラミング

※ 当サイトはアフィリエイト広告を利用しています。

levtech-ad
スポンサーリンク

基本行列は、Pythonで簡単に生成することができます。

本記事では、Pythonを使用した基本行列の実装方法について、詳しくご説明します。

こんな人に読んでほしい
  • Python初心者の人
  • Pythonを使用した基本行列の実装方法について学びたい人
levtech-ad

基本行列

基本行列とは、行列の基本変形を行うための行列のことです。

行列の基本変形は、以下に記載する通りの変形です。

  • \(i\)行と\(j\)行の交換
  • \(i\)行の\(c\)倍
  • \(i\)行に\(j\)行の\(c\)倍を加える

基本行列の実装

上記基本変形を行うための、基本行列の実装例を以下にご紹介します。

#input
import numpy as np

# n次正方行列の基本行列

# i行とj行の交換
def matrix_p(n, i=1, j=1):
    arr = np.eye(n)
    arr[[i-1, j-1]] = arr[[j-1, i-1]]
    return arr

# i行のc倍
def matrix_c(n, i=1, c=1):
    arr = np.eye(n)
    arr[i-1, i-1] = c
    return arr

# i行にj行のc倍を加える
def matrix_e(n, i=1, j=1, c=1):
    arr = np.eye(n)
    arr[i-1, j-1] = c
    return arr

上記関数を使用して、基本変形を試してみます。

i行とj行の交換

#input
np.random.seed(7)
A = np.random.randint(0,10,(5,5))
print("行列A:\n{}\n".format(A))

p = matrix_p(5, 2, 3)
print("2行目と3行目を交換する行列p:\n{}\n".format(p))

pA = np.dot(p,A)
print("pとAの積:\n{}\n".format(pA))
#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]]

2行目と3行目を交換する行列p:
[[1. 0. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]

pとAの積:
[[4. 9. 6. 3. 3.]
 [9. 8. 7. 6. 4.]
 [7. 7. 9. 7. 8.]
 [0. 7. 0. 7. 6.]
 [3. 5. 8. 8. 7.]]

i行のc倍

#input
np.random.seed(6)
A = np.random.randint(0,10,(5,5))
print("行列A:\n{}\n".format(A))

c = matrix_c(5, 3, 3)
print("3行目を3倍する行列c:\n{}\n".format(c))

cA = np.dot(c,A)
print("cとAの積:\n{}\n".format(cA))
#output
行列A:
[[9 3 4 0 9]
 [1 9 1 4 1]
 [8 2 4 2 5]
 [9 6 2 5 5]
 [1 4 5 0 2]]

3行目を3倍する行列c:
[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 3. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]

cとAの積:
[[ 9.  3.  4.  0.  9.]
 [ 1.  9.  1.  4.  1.]
 [24.  6. 12.  6. 15.]
 [ 9.  6.  2.  5.  5.]
 [ 1.  4.  5.  0.  2.]]

i行のc倍をj行に加える

#input
np.random.seed(5)
A = np.random.randint(0,10,(5,5))
print("行列A:\n{}\n".format(A))

e = matrix_e(5, 1, 3, 2)
print("3行目の2倍を1行目に加える行列e:\n{}\n".format(e))

eA = np.dot(e,A)
print("eとAの積:\n{}\n".format(eA))
#output
行列A:
[[3 6 6 0 9]
 [8 4 7 0 0]
 [7 1 5 7 0]
 [1 4 6 2 9]
 [9 9 9 1 2]]

3行目の2倍を1行目に加える行列e:
[[1. 0. 2. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]
 [0. 0. 0. 1. 0.]
 [0. 0. 0. 0. 1.]]

eとAの積:
[[17.  8. 16. 14.  9.]
 [ 8.  4.  7.  0.  0.]
 [ 7.  1.  5.  7.  0.]
 [ 1.  4.  6.  2.  9.]
 [ 9.  9.  9.  1.  2.]]

まとめ

この記事では、Pythonを使用した基本行列の実装方法について、ご説明しました。

本記事を参考に、ぜひ試してみて下さい。

参考

Python学習用おすすめ教材

Pythonの基本を学びたい方向け

統計学基礎を学びたい方向け

Pythonの統計解析を学びたい方向け

おすすめプログラミングスクール

Pythonをはじめ、プログラミングを学ぶなら、TechAcademy(テックアカデミー)がおすすめです。

私も入っていますが、好きな時間に気軽にオンラインで学べますので、何より楽しいです。

現役エンジニアからマンツーマンで学べるので、一人では中々続かない人にも、向いていると思います。

無料体験ができますので、まずは試してみてください!

\まずは無料体験!/
スポンサーリンク
タイトルとURLをコピーしました