逆行列の計算では行数と列数が等しい正方行列のみ計算が可能でした。
しかし、下記のようにn個の未知数(a1~an)に対して、式がm本 (m>n)ある場合、
逆行列を使って解くことができません。
上記式を行列であらわすと
となり、行列部分を記号で書くと
・・・式①
のようになり行列Xに関して逆行列が求まれば、未知数の行列Aについて解く事が可能となります。
行列Xの行数が列数よりも多い時(未知数よりもデータ数が多い時)、擬似逆行列(一般逆行列ともいう)という物を使って、行列Aに関して近似的に解く事が可能となります。
擬似逆行列は、通常の逆行列と転置行列を使って、下記のように現されます。
・・・式②
この擬似逆行列を使って式①は
のように未知数を解く事が可能となります。
ちなみに、この計算は最小二乗法と同じ結果になるそうです。
という事で、この擬似逆行列を使って、Excelで近似式を求めてみたいと思います。
ExcelではXとYのデータのグラフを書くと、近似曲線の追加という機能を使えば簡単に求まります。
でも、この近似式をエクセルの計算を使って求めたいな~という事もあるかと思います。
そこで、擬似逆行列を使って、データを二次関数で近似する時の例で説明したいと思います。
まず、二次関数の一般式
を少し変形して
のようにします。このXとYに近似するm個のデータ(X, Y)を代入し、行列で表すと
のようになり、行列の各要素をエクセルで計算します。
次が少々難しいのですが、エクセルのワークシート関数の
- 行列の積:mmult
- 逆行列 :minverse
- 転置行列:transpose
を使って、疑似逆行列を求めます。
今回は未知数が3つなので、縦に3つのセルを選択し、
=MMULT(MMULT(MINVERSE(MMULT(TRANSPOSE(行列Xの範囲),行列Xの範囲)),TRANSPOSE(行列Xの範囲)),行列Yの範囲)
のように入力します。
(入力例)
=MMULT(MMULT(MINVERSE(MMULT(TRANSPOSE(B45:D54),B45:D54)),TRANSPOSE(B45:D54)),G45:G54)
のように入力し、Ctrl+Shift+Enterキーを同時に押すと、a1~a3が求まり、二次の近似式が求まります。
このエクセルのファイルはエクセルにより疑似逆行列の計算よりダウンロードできます。
エクセルで行列の計算は少し分かりづらいので、【Excel】行列の積、逆行列、転置行列の計算のページも参考にして下さい。
今回は二次関数の近似を行いましたが、これさえ知っていれば、未知数が定数で行列で式を表せればいいだけなので、かなり応用が効くと思います。
コメント