Python 3 で数学を。

Python 3 とライブラリで数学の問題を解いていきます。統計学や機械学習はときどき。

Python (Python 3) で数学をやるにはどうしたらいいか。その17. 連立方程式。"ランナウェイトレインに乗ったってあの連中からは逃げられないさ!"

このシリーズの過去記事は以下にまとめてある

py3math.hatenablog.com

当記事について

当ブログ筆者 (以下、筆者) も、Python で数学をやるにはどうしたらいいか悩んでいた時期があるから、昔の自分に向けて書いたような記事。

対象とする読者

Python の入門書を一冊か二冊、一通りやった人で、Python の基本的な構文や基本的な用語がだいたいわかっている人。

そして、公式サイトを読む努力をちゃんとする人。

連立方程式を解いてみよう。

SymPy で連立方程式を解いてみよう。

前回記事で、SymPy の Eq()solve() を使用して、 2 次方程式 (二次方程式) を解いた。

今回は、連立方程式を解くわけだが、前回記事のちょっとした応用に過ぎない面があるから、 ざっとした説明になる。

では、Python の対話モードで:

>>> import sympy as sym

そして、今回使用する記号を用意しよう。

>>> x, y = sym.symbols('x y')

連立方程式として数式: x + y = 6, 2x + 3y = 14 を解いてみよう (連立方程式は、はてなブログtex 記法で書いたほうが断然にわかりやすいが、当ブログでは、数式を書籍からお借りしていることが多く、あまりにわかりやすいかたちで書くのは筆者には若干のためらいがある。もし読者がちゃんとした数式を読みたければ、やはり、書籍を購入するべきだと思う。なお、当ブログではアフィリエイト等は一切やってない。存分にリンクを踏んで書籍を購入されたい。もちろん、当ブログから購入しなくてもいい。どこからでもいいからなるべく購入はしてほしい)。

上の数式を以下のように書く。

>>> expr1 = sym.Eq(x + y, 6)
>>> expr2 = sym.Eq(2*x + 3*y, 14)

そして:

>>> sym.solve([expr1, expr2])
{x: 4, y: 2}

これが簡単な解き方だ。solve() の第 1 引数にリストとして渡せばよい。

他にもいろいろな書き方で解けるから、以下で書く。

>>> sym.solve([expr1, expr2], [x, y])
{x: 4, y: 2}
>>> sym.solve([expr1, expr2], [x, y], dict=True)
[{x: 4, y: 2}]
>>> sym.solve([expr1, expr2], x, y)
{x: 4, y: 2}
>>> sym.solve([expr1, expr2], x, y, dict=True)
[{x: 4, y: 2}]
>>> sym.solve([expr1, expr2], (x, y))
{x: 4, y: 2}
>>> sym.solve([expr1, expr2], (x, y), dict=True)
[{x: 4, y: 2}]

他にももっといろいろな書き方ができる。ぜひ SymPy の公式サイトを読んでみてほしい。

たくさんの書き方があり、どれを使ったらいいかわからないかもしれないが、これは場合や状況によるとしか筆者にはいえない。

たくさん書いていくうちに、どの書き方が適切かわかるようになるだろう。

だから、たくさん書こう。たくさん、たくさん書こう。しっかり考えながら。

(つづく)。

参考文献 (数式を参考)