はじめに
n×n で、n乗してゼロになる行列が存在するのをnumpyで確認する。
具体的には、対角成分の1つ上だけが1で、他が0の行列を、実際にn乗してみて、ゼロ行列になるのを示すプログラム。
プログラム
変数nに作りたい正方行列の大きさを指定する。ここでは、n=5とした。
power.py
import numpy as np
n = 5
O = np.zeros((n,n), dtype=int)#まずゼロ行列を作る
O = np.matrix(O)
for i in range(n-1):#対角成分の1つ上を1に
O[i,i + 1] = 1
for i in range(n):#1乗からn乗までを出力
print(O ** (i+1))
結果
power.py
[[0 1 0 0 0]
[0 0 1 0 0]
[0 0 0 1 0]
[0 0 0 0 1]
[0 0 0 0 0]]
[[0 0 1 0 0]
[0 0 0 1 0]
[0 0 0 0 1]
[0 0 0 0 0]
[0 0 0 0 0]]
[[0 0 0 1 0]
[0 0 0 0 1]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]]
[[0 0 0 0 1]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]]
[[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]
[0 0 0 0 0]]