[AI・機械学習の数学]線形代数の固有値・固有ベクトルをマスターAI・機械学習の数学入門(2/3 ページ)

» 2022年09月21日 05時00分 公開
[羽山博]

ポイント3 固有ベクトルの求め方(考え方を中心に)

 続いて固有ベクトル(x,y)を求めます。λ=3の場合の固有ベクトルと、λ=2の場合の固有ベクトルがあります。λ=3の場合から見ていきましょう。ポイント2で見た(4)式にλ=3を代入します。

 行列と(x,y)の積を計算すると以下の連立方程式が立てられます。

 この連立方程式は解けません(解が無限にあります)。しかし、値の候補として、x=2,y=−1が挙げられますね。これが固有値λ=3に対する固有ベクトル(2,−1)です。固有ベクトルは方向が同じであれば値はいくらであっても構わないので、上の連立方程式を満たすxyであれば、いくらであってもいいというわけです。例えば、(4,−2)を固有ベクトルとしても構いません。

 もう1つの固有値λ=2に対する固有ベクトルも求めてみましょう。(4)式にλ=2を代入します。

 連立方程式は、以下の通りです。

 やはりこの連立方程式は解けませんが、x=−1,y=1であれば式が成り立ちます。ということで、固有ベクトルの候補として(−1,1)が挙げられます。

 なお、NumPyのlinalg.eig関数やR言語のeigen関数を使えば固有値と固有ベクトルを求めることができますが、それらの関数では、長さが1の固有ベクトルが返されます(ちなみに、Excelには固有値や固有ベクトルを求める関数はありません)。

import numpy as np

x = np.array([[4, 2], [-1, 1]])

print(np.linalg.eig(x))
# 出力例:
# (array([3., 2.]), array([[ 0.89442719, -0.70710678],
#         [-0.4472136 ,  0.70710678]]))

リスト1 NumPyのlinalg.eig関数で固有値と固有ベクトルを求める
例えば、固有値λ=3に対する固有ベクトル(2,−1)の長さは√{22+(−1)2}=√{5}=2.236...なので、22.236...で割った0.894...という値と、−12.236...で割った−0.447...という値が表示されている。

ポイント4 固有値の超簡単な求め方

 ポイント2で固有値を求める簡単な方法を紹介するといいました。ただし、2×2行列に限ります。以下の行列Aはこれまでに見てきたものです。

 実は、行列の対角成分の和(この値をトレースと呼び、tr Aと表します)は、固有値の和と等しくなっています。2つの固有値をλ12とすると、この例では、

です。

 また、行列式の値は固有値の積に等しくなっています。従って、

です。「足したものと掛けたもの」というのはどこかで見たことがありませんか? そう、以下の二次方程式です。

 因数分解すると、xの値(λ12それぞれの値)が求められます。

 Aの例での数値を(5)式に当てはめてみましょう。

となります。因数分解が苦手だ、あるいは簡単にできないといったときには、二次方程式の解の公式を使って直接答えを求められます。手順は簡単です。

の解の公式は以下の通りでした。

 ここでは、a=1なので、

だけで済みます。(5)式と(6)式を見比べると、−(λ1+λ2)が、解の公式のbに当たり、λ1λ2が、解の公式のcに当たることが分かります。

なので、

となります。

 固有値と固有ベクトルを利用して対角化という操作を行うと、行列のべき乗が超簡単に求められます。その方法と、マルコフ過程の確率を予想する応用例を最後に紹介します。

Copyright© Digital Advantage Corp. All Rights Reserved.

アイティメディアからのお知らせ

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2026
人に頼れない今こそ、本音で語るセキュリティ「モダナイズ」
4AI by @IT - AIを作り、動かし、守り、生かす
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。