二元聯立方程式的解法

這裡用 SymPy 裡的函數來解二元一次聯立方程式的解。

例如,求以下聯立方程式的解:
3x - y + 5 = 0
2x + 3y + 7 = 0

方法如下,首先匯入 sympy,匯入未知數 x, y,接著自定一個叫做 Eqns 的 list,再用計算線性方程式用的 linsolve() 來求解。得到 x = -2, y = -1。

 In [1]: from sympy import *

 In [2]: from sympy.abc import x, y

 In [3]: Eqns = [3 * x - y + 5, 2 * x + 3 * y + 7]

 In [4]: linsolve(Eqns, x, y)
 Out[5]: 
 FiniteSet((-2, -1))

如果是二次方以上的非線性的聯立方程式,可以用 nonlinsolve() 來求解。例如:

求下列 2 個聯立方程式的解。
xy - 1 = 04x^{2} + y^{2} - 5 = 0

 In [3]: Eqns = [x * y - 1, 4 * x ** 2 + y ** 2 - 5]

 In [4]: nonlinsolve(Eqns, x, y)
 Out[4]: 
 FiniteSet((-1, -1), (-1/2, -2), (1/2, 2), (1, 1))

求下列 2 個聯立方程式的解。
x^{2} + y^{2} - 1 = 0x - y + 2 = 0

 In [5]: Eqns2 = [x ** 2 + y ** 2 - 1, x - y + 2]
 
 In [6]: nonlinsolve(Eqns2, x, y)
 Out[6]: 
 FiniteSet((-1 - sqrt(2)*I/2, 1 - sqrt(2)*I/2), (-1 + sqrt(2)*I/2, 1 + sqrt(2)*I/2))

參考閱讀:
https://docs.sympy.org/latest/modules/solvers/solveset.html#sympy.solvers.solveset.linsolve