Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python】NumPyのmatrix_power()で正方行列をn乗する方法

Pythonで正方行列をn乗するには

Pythonの線形代数計算で正方行列をn乗したい場合は、NumPyのnumpy.linalg.matrix_power()関数を使用します。この関数の基本的な挙動は以下のとおりです。

  • nが正の整数の場合 — 行列の二乗演算と行列積を繰り返し適用することで累乗を計算します。
  • n == 0の場合 — 元の行列Mと同じ形状の単位行列を返します。
  • nが負の場合 — まず逆行列を計算し、その絶対値abs(n)乗を返します。

戻り値は元の行列Mと同じ形状・型になります。指数が正または0のときは要素の型もMと同じですが、指数が負の場合は要素が浮動小数点数(float)になる点に注意してください。

第1引数の「a」は累乗の対象となる行列、第2引数の「n」は指数です。nには正・負・ゼロのいずれかの整数値を指定できます。

手順

まず、必要なライブラリをインポートします。

import numpy as np
from numpy.linalg import matrix_power

2次元配列として、虚数単位に相当する行列を作成します。

arr = np.array([[0, 1], [-1, 0]])

作成した配列を表示します。

print("Our Array...\n",arr)

配列の次元数を確認します。

print("\nDimensions of our Array...\n",arr.ndim)

データ型を取得します。

print("\nDatatype of our Array object...\n",arr.dtype)

配列の形状を取得します。

print("\nShape of our Array object...\n",arr.shape)

numpy.linalg.matrix_power()を使って行列を0乗します。n == 0の場合は、元の行列と同じ形状の単位行列が返されます。

print("\nResult...\n",matrix_power(arr, 0))

サンプルコード(完全版)

import numpy as np
from numpy.linalg import matrix_power

# 虚数単位に相当する2次元配列(行列)を作成
arr = np.array([[0, 1], [-1, 0]])

# 配列を表示
print("Our Array...\n",arr)

# 次元数を確認
print("\nDimensions of our Array...\n",arr.ndim)

# データ型を確認
print("\nDatatype of our Array object...\n",arr.dtype)

# 形状を確認
print("\nShape of our Array object...\n",arr.shape)

# numpy.linalg.matrix_power()で行列を0乗
print("\nResult...\n",matrix_power(arr, 0))

出力結果

Our Array...
[[ 0 1]
[-1 0]]

Dimensions of our Array...
2

Datatype of our Array object...
int64

Shape of our Array object...
(2, 2)

Result...
[[1 0]
[0 1]]

補足:虚数単位に相当する行列について

ここで使用した [[0, 1], [-1, 0]] という行列は、虚数単位 i に相当する行列として知られています。実際、この行列を2乗すると [[-1, 0], [0, -1]](-I)となり、i² = -1 という性質と一致します。matrix_power() を使えば、このような行列の数学的な性質も簡単に検証できます。


  1. Python NumPyのlinalg.norm()で行列・ベクトルのノルムを計算する方法

    線形代数において行列またはベクトルのノルム(Norm)を返すには、Python NumPyのnumpy.linalg.norm()メソッドを使用します。この記事では、LA.norm()メソッドの基本的な使い方と各パラメータの意味を、実際のコード例とともにわかりやすく解説します。numpy.linalg.norm()メソッドのパラメータ第1引数:xノルムを計算する対象となる入力配列です。axisがNoneの場合、xは1次元または2次元である必要があります(ordがNoneの場合を除く)。axisとordがどちらもNoneの場合は、x.ravel()の2-ノルムが返されます。第2引数:ordノルム

  2. 【Python入門】numpy.linalg.cholesky()でコレスキー分解を求める方法

    線形代数におけるコレスキー分解(Cholesky decomposition)とは、エルミート行列かつ正定値である正方行列 a を、下三角行列 L とその共役転置 LH の積「L * LH」に分解する手法です。NumPyでは numpy.linalg.cholesky() メソッドを使うことで、この分解を簡単に求めることができます。numpy.linalg.cholesky()メソッドの概要numpy.linalg.cholesky() は、引数として渡された正方行列のコレスキー分解を計算し、下三角行列 L を返します。このメソッドには以下のような特徴があります。前提条件: 入力行列 a はエ