Excel スプレッドシートで動的に生成される 22 の線形方程式(正確には 22 の方程式と 22 の未知数)のシステムがあります。Excel でシステムを解いて、未知の変数ごとに値を生成する方法はありますか?
別の SO の質問には、そのような方程式を解くために使用されるアルゴリズムに関する多くの優れた情報があります。特にCramer のルールは有望に見えますが、Excel でそれを実装する方法がわかりません。
どんな助けでも大歓迎です!
Excel スプレッドシートで動的に生成される 22 の線形方程式(正確には 22 の方程式と 22 の未知数)のシステムがあります。Excel でシステムを解いて、未知の変数ごとに値を生成する方法はありますか?
別の SO の質問には、そのような方程式を解くために使用されるアルゴリズムに関する多くの優れた情報があります。特にCramer のルールは有望に見えますが、Excel でそれを実装する方法がわかりません。
どんな助けでも大歓迎です!
このページでは、次の簡単な方法を示します。
係数行列を nxn の範囲で入力します。
n-tall 列に定数のベクトルを入力します。空白の n-tall 列を選択します。選択したセルが 1 つだけにならないようにすることが重要です。
数式テキスト ボックスに「=MMULT(MINVERSE(coefficients_matrix_range), constants_vector_range)」と入力し、[CTRL][SHIFT][ENTER] を押します。単純に [ENTER] を押さないことが重要です。
小さなシステム (22x22) しかないので、これは適切に機能するはずです。理想的には、行列を直接反転しないことですが、この場合は問題になりません。
あなたは間違いなくクラマーのルールを望んでいません. 数値特性がかなり悪いため、実用的というよりも理論的なものです。
Excel LINEST関数はそれを実行する必要があり、多くの場合、MMULT(MINVERSE(...)...)よりも優れた結果を返します。
また、LOGEST、GROWTH、およびTREND関数が役立つ場合があります。
Microsoft の Solver Foundationはどうですか? 高速バージョンに付属のドキュメントに、より小さな連立方程式の例がいくつかあることを覚えているようです。
逆行列の計算に問題がある場合、たとえばオーバー/アンダー フロー/切り捨てなど、いつでもソルバーを使用できます。それ以外の場合は、C の数値レシピのコピーを取得して VBA に変換します。
線形システムを解くために Cramer のルールを考慮すべきではありません。非常に非効率であるため、小規模なシステムでも実行できません。
Excel は、線形システムを解くための適切なツールではありません。私があなただったら、Excel ファイルを読み取る単純な Python スクリプトを作成し、(numpy を使用して) 方程式を解き、その結果を Excel が読み取れるファイルに保存します。(できれば、Excel を完全に避けることをお勧めします)。
根の数学方程式を使用することにより、数学ソルバーで実行できる線形方程式ソルバーにすることができますが、線形方程式ソルバーのより良い方法を見つけることができます。