概要
今回は、Python3 で標準的に使える操作を駆使し、ライブラリに依存しない「方程式クラス」を作成しました。
まだ機能は多くないですが、代数方程式 (x^3 + 2x^2 + x + 1 = 0 のように、多項式のみで表される方程式) を簡単に定義できます。
コード概要
このコードは、以下のような要素で構成されます。
- 単項式を表現します。以下をサポートします。
- 変数の代入と評価
- 単項式、多項式間の加算、減算、乗算
- 多項式を表現します。以下をサポートします。
- 単項式のリストを管理
- 同類項の結合
- 単項式、多項式間の加算、減算、乗算
- 左辺と右辺の多項式からなる方程式を表現します。以下をサポートします。
- 方程式の簡単化 (左辺 = 0 の形にする)
- 1元1次方程式の解計算
- Monomial クラス
- Polynomial クラス
- Equation クラス
実際のコード
コードはGitHubレポジトリでご確認できます。
使用例
以下の例では、クラスを用いて方程式を操作しています。
import equation
# 変数を定義
x = equation.Monomial(1, {'x': 1})
# 多項式を定義
p1 = (x + 1) ** 2
p2 = (x + 2) ** 2
print("多項式 p1 : ", p1)
print("多項式 p2 : ", p2)
# 方程式を定義
eq1 = equation.Equation(p1, p2)
print("方程式: ", eq1)
eq1.simplify()
print("簡略化後: ", eq1)
上記のコードを実行すると、下記のような出力が得られます。
多項式 p1 : x^2 + 2x + 1
多項式 p2 : x^2 + 4x + 4
方程式: x^2 + 2x + 1 = x^2 + 4x + 4
簡略化後: -3 - 2x = 0
まとめ
pythonの標準的操作を活用して数学的表現や操作を表現してみました。
今後、1/x を含む方程式など、表現可能な方程式を増やしてみたいと考えてます。