Pythonで学ぶ直交行列と直交補空間

目次

  1. 直交行列とは何か
  2. 直交補空間の概念
  3. Pythonで直交行列を作成する方法
  4. Pythonで直交補空間を求める方法
  5. まとめと参考文献

1. 直交行列とは何か

直交行列 (orthogonal matrix) は、自分自身とその逆行列が転置になるような正方行列です。すなわち、直交行列 A に対して以下の条件が成り立ちます。

AT * A = AAT = I

ここで、AT は A の転置行列、I は単位行列を表します。直交行列は回転行列や対称行列のような特別な性質を持つ行列の一種です。また、直交行列の列ベクトル及び行ベクトルは互いに正規直交するため、直交行列は幾何学的な変換(主に回転と鏡映)を表現する際に用いられます。

2. 直交補空間の概念

線形空間 V の部分空間 W に対して、W に直交するような V の部分空間のことを、W の直交補空間 (orthogonal complement) といいます。直交補空間は次のような性質を持ちます。

  1. W とその直交補空間の和は元の空間 V になります。
  2. W とその直交補空間の共通部分は、ゼロベクトルのみです。

直交補空間の概念は線形代数微分幾何学など、多くの数学分野で応用されています。

3. Pythonで直交行列を作成する方法

Pythonで直交行列を定義する際は、NumPy ライブラリを利用します。以下に例を示します。

import numpy as np

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

これは2次元平面上の点を x 軸に対して鏡映する直交行列です。この行列が実際に直交行列であることを確認するには、以下のように計算を行います。

A_T = A.T
A_inv = np.linalg.inv(A)
print(A_T == A_inv)  # True

上記の例では、転置行列と逆行列が等しいことが分かります。したがって、A は直交行列であると言えます。

4. Pythonで直交補空間を求める方法

Python で直交補空間を求めるには、scipy.linalg ライブラリの null_space 関数を利用します。

以下に、与えられた行列 A の直交補空間を求める例を示します。

import numpy as np
from scipy.linalg import null_space

A = np.array([[1, 2, 3], [4, 5, 6]])
orthogonal_complement = null_space(A)

print("Orthogonal complement:")
print(orthogonal_complement)

このコードでは、与えられた行列 A の直交補空間(A に直交する部分空間)を求めて表示します。

5. まとめと参考文献

この記事では、直交行列と直交補空間について説明し、それらをPythonで計算する方法を示しました。直交行列は幾何学的な変換を表すのに適した行列であり、直交補空間は線形代数やそれ以外の数学分野で重要な役割を果たしています。

さらなる理解のために、以下の参考文献もお勧めします。

  • Gilbert Strang (2006). Linear Algebra and Its Applications, 4th Edition.
  • Sheldon Axler (2015). Linear Algebra Done Right, 3rd Edition.

この記事が直交行列や直交補空間に関する理解の助けとなることを願っています。