概要
Python の 記号計算ライブラリ「SymPy」を利用して、連立方程式を解いてみる。
連立一次方程式
サンプルとして、以下の三元連立一次方程式を解いてみる。
以下のように「solve」を利用して解ける。solve を利用する場合、右辺が0になるように入力する必要がある。 解は dict で出力される。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
from sympy import (
Rational,
solve,
symbols,
)
class TestSolve(unittest.TestCase):
def test_system_of_equations(self):
"""連立一次方程式"""
x, y, z = symbols('x y z')
self.assertEqual(
{x: 1, y: -2, z: -2},
solve([3 * x + 2 * y - z - 1,
2 * x - 2 * y + 4 * z + 2,
-x + Rational(1, 2) * y - z],
[x, y, z]))
if __name__ == '__main__':
unittest.main()
連立二次方程式
サンプルとして、以下の二元連立二次方程式を解いてみる。
連立一次方程式と同じように解ける。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
from sympy import (
solve,
symbols,
)
class TestSolve(unittest.TestCase):
def test_system_of_equations(self):
"""連立二次方程式"""
x, y = symbols('x y')
self.assertEqual(
[(-7, 2), (-1, -1)],
solve([x + 2 * y + 3,
x ** 2 + 4 * x * y + y ** 2 + 3 * y - 3],
[x, y]))
if __name__ == '__main__':
unittest.main()
まとめ
連立方程式以外も様々なことができるが、サンプルがすぐに思いつかないので、思いついたらまた書く。