map新着記事一覧アクセスランキングサイトマップ旧トップページお問い合わせホームエクセル全般エクセル雑感エクセルで連立方程式を解く(MINVERSE,MMULT)最終更新日:2020-02-07エクセルで連立方程式を解く(MINVERSE,MMULT)とつぜん連立方程式を解くことになりました。連立方程式を解くことになったのか、そして、どうやって答えを導き出したのか・・・これらを自身の覚え書きの意味も含めて記事にしておきます。行列の難しい説明は抜かして、どうやって解決したかの経緯の説明が中心になります。経緯としては、以下の記事内で件数を増やしたときの予測数値を算出したいと思ったからです。Dictionary(ディクショナリー)のパフォーマンスについてDictionary(ディクショナリー)は辞書機能で、連想配列とも呼ばれます。この辞書は、重複は許されず、キーとデータの2つが存在します、今回はこのDictionaryのパフォーマンス(処理速度)を検証します。Dictionaryの基本的な使い方については、こちらを参照してください。この記事は数年前に書いたものですが、最新のOffice365で再検証して書き直ししました。この中で、速度実測した結果があります。件数に対して、指数的に増加しているように見受けられます。そこで一般的な2次方程式に当てはめてみることにしました。cこのようになります。この連立3元1次方程式を解いてa,b,cを求めれば良いということです。記事を書いたときには、紙と鉛筆で計算したのだろうと思います。今回もとりあえず計算してみたが・・・出た答えはどうみても正しくない。途中で計算を間違えたようです。やり直しても良いのですが、せっかく目の前に超優秀な助手がいるのですから、お手伝いしてもらう事にしました。エクセルで連立方程式を解くことにしました。ここで解決しなければならない問題があります。解らないことはグーグル大先生に聞くしかありません。参考に読んだ記事はいくつもあります。ググればいっぱい出てきますので、興味があれば検索してみてください。連立方程式を行列にして解けは良いのですね。その時に使う関数が、MINVERSE関数とMMULT関数なのですね。関数は、配列に格納されている行列の逆行列を返します。MMULT関数MMULT関数は、2つの配列の行列積を返します。配列2)配列1および配列2には、行列積を求める2つの配列を指定します。計算結果は、行数が配列1と同じで、列数が配列2と同じ配列になります。cこれを行列で表現すると、こういう事になるらしい。(らしいって(笑))行列積は以下のようになります。これの逆順で連立方程式を行列にします。a,b,cの係数を抜き出してそのまま並べれば良いだけです。なればなんとなく分かってきました、a,b,cを求めるには、-1というのは逆行列で、このように記述するらしい。これを見ると、確かにこれで計算できるのは理解できます。逆行列を求めるには、MINVERSE関数を使えば良い。行列の掛け算は、MMULT関数を使えば良い。ここまでわかれば、あとはエクセルに数式を入れるだけですね。MINVERSE関数とMMULT関数をエクセルに入れるMINVERSE関数を入れる上記はスピルしていますので、スピルしないエクセルの場合は、A5:C7を選択して、=MINVERSE(A1:C3)これを、Ctrl+Shift+Entreで配列数式として入れてください。{=MINVERSE(A1:C3)}A5:C7がA1:C3の逆行列という事になります。出てきた数値が何を意味するか・・・とりあえずあまり考えずに進みます。MMULT関数を入れる上記はスピルしていますので、スピルしないエクセルの場合は、G5:G7を選択して、=MMULT(A5#,K1:K3)これを、Ctrl+Shift+Entreで配列数式として入れてください。配列2)計算結果は、行数が配列1と同じで列数が配列2と同じ配列になります。したがって、引数の順番を入れ替えてはダメです。結果を検算してみる上記でa,b,cが求められました。10これを使って2次方程式を計算してみます。106計算結果は正しいようです。1380これは秒数ですので、23分です。先の記事の例では、10万件で実行した場合23分かかるという予測になります。興味のある方は検索してみてください、高校・大学数学として解説しているページが多数でてきます。簡易的にでも説明ができないかと思ったのですが、とてもそんなレベルでは説明できそうにありません。言いますか、そもそも私がちゃんと理解できていない・・・という事で、今回はあくのでエクセルで連立方程式を解く場合の手順を淡々と説明してみました。Next)|VBA入門5.ひらがな⇔カタカナの変換|エクセル基本操作6.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門7.マクロって何?VBAって何?|VBA入門8.Excelショートカットキー一覧|Excelリファレンス9.並べ替え(Sort)|VBA入門10.エクセルVBAでのシート指定方法|VBA技術解説ホームエクセル全般エクセル雑感エクセルで連立方程式を解く(MINVERSE,MMULT)このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。アクセスランキングサイトマップ事業案内お問い合わせホームエクセル全般エクセル雑感エクセルで連立方程式を解くこのサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。