【エクセル】正方行列の逆行列を計算する方法!VBAへの組み込みも!

f:id:yshgs_elec:20201206214530j:plain

「行列の逆行列を一発算出したい。」

この記事ではこんな悩みを一瞬で解決します。

 

エクセルには行列の逆行列を計算できるMINVERSE関数というものがあらかじめ備わっています。

 

この記事では、そのMINVERSE関数の使い方をご紹介します。

また、その関数をVBA上で使用する方法についてもご紹介していきます。

 

エクセル初心者向けに画像多めで説明していきますので、ぜひ最後までご覧ください。

 

それでは早速やっていきます!

スポンサーリンク

正方行列の逆行列を算出【MINVERSE関数】

このMINVERSEという意味は

行列を表すMATRIXと、逆を表すINVERSEという英語を組み合わせていると思われます。

(英語の意味まで覚えておけば、いざ使うときに思い出しやすいはずです。)

 

スポンサーリンク

MINVERSE関数の使い方

MINVERSE関数は行列を計算しますので、関数の適用範囲は一つのセルではなく、ある領域にまたがることになります。

 

そのため、通常のひとつのセルにだけ適用する関数にはない手順がありますので、この記事を読んでよく確認しておきましょう。

 

ここからは実際のMINVERSE関数の使用方法を解説していきます。

 

とはいえ、言葉だけで説明してもわかりにくいと思いますので、今回は以下の画像に示している4×4の正方行列の逆行列を実際に算出してみましょう。(H3:K6セルに算出していきます。)

MINVERSE関数を適用するサンプル行列

 

◆手順①逆行列を算出する範囲を選択する

まず始めは逆行列を算出する領域を選択します。

ここでベースとなる行列とことなる行列数を選択してしまうとうまく計算ができませんので、よく注意して選択しましょう。

MINVERSE関数を使用する手順

 

◆手順②選択を維持したまま、数式を入力する

算出範囲が選択できたら、そのまま数式を入力します。

以下の画像を参考に

=MINVERSE(基準となる行列の範囲)

と入力してください。

普段ならEnterを押したくなるところですが、まだ我慢してください。

MINVERSE関数を使用する手順

 

◆手順③Shift + Ctrl + Enterを同時に押す

数式入力が終わったら、Shift, Ctrl, Enterを同時に押します。

この作業が通常の関数を使用する場合と異なる点ですね。

この作業をすることで、選択している領域に対して、この関数を適用することが出来ます。

MINVERSE関数を使用する手順

 

すると以下の画像のように最初に選択した領域になにやら数字が記載されているはずです。

MINVERSE関数で逆行列を算出した結果

MINVERSE関数の使用方法は以上ですが、念のため正しく逆行列が計算できているか確認をしておきましょう。

 

もともとの行列Aとさきほど計算した行列Bの積が単位行列になっていれば、正しく計算できていることになります。

実際に計算してみましょう。

 

行列の積の計算にはMMULT関数を使います。

さきほどと同じ要領で、領域選択、数式入力を行います。

MINVERSE関数で算出した逆行列の検算方法

※ここでも数式入力後にShift, Ctrl, Enterを同時に押します。

 

以下が実際の計算結果です。

MINVERSE関数で算出した逆行列の検算結果

きちんと単位行列が計算されていますね。

 

というわけで、MINVERSE関数で逆行列が計算できることが確認できました。

スポンサーリンク

VBAへの組み込み方法

最後に今回紹介した内容をVBAをつかって再現してみましょう。

題材は先ほどと全く同じです。

VBAでMINVERSE関数を使用する方法

 

以下が今回の一連の作業を再現できるVBAコードです。

Sub CALC_MINVERSE()
    '行列範囲の宣言
    matrix_A = Range(Cells(3, 2), Cells(6, 5))
    '行列の積を計算
    Range(Cells(3, 8), Cells(6, 11)) = _
    WorksheetFunction.MInverse(matrix_A)
End Sub

 

以下がこのVBAコードの実行結果です。

先ほどとまったく同じ結果が出力されていることがわかります。

VBAでMINVERSE関数を使用した結果

 

スポンサーリンク

おわりに

というわけで正方行列の逆行列を算出できるMINVERSE関数についてご紹介しました。

 

知っておくだけで、面倒な数式入力作業を大幅に削減できますので、ぜひ覚えておきましょう!

 

このように私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

・日々の残業時間を減らしたい。

・業務をもっと効率的にこなしたい。

・もっと勉強する時間を作りたい。

こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。

この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

それではまた!

コメント

タイトルとURLをコピーしました