使用 Python 求解代數方程

Vaibhav Vaibhav 2023年1月30日 2022年5月17日
  1. 使用 SymPy 包中的 solve() 方法在一個變數中求解代數方程
  2. 使用 SymPy 包求解多變數中的代數方程
  3. 求解兩個多變數的代數方程
  4. 求解三個多變數的代數方程
使用 Python 求解代數方程

Python 有一個符號數學庫,即 SymPy。該庫包含用於解決複雜數學問題和概念的實用程式,例如矩陣、微積分、幾何、離散數學、積分、密碼學、代數等。

我們可以使用這個庫來求解代數方程。本文將展示如何使用 SymPy 在 Python 中求解代數方程。

以下是我們可以在我們的機器上安裝 SymPy 模組的一些方法。

使用 pip 包管理器安裝 Sympy

使用以下命令通過 pip 安裝 SymPy 包。

pip install sympy

或者

pip3 install sympy

使用 Anaconda 安裝 Sympy

Anaconda 是一個免費的 Python 發行版,預設情況下在其環境中包含 SymPy 庫。可以使用以下命令更新現有版本。

conda update sympy

要詳細瞭解上面討論的方法以及安裝 SymPy 庫的其他一些可用方法,請參閱官方文件此處

使用 SymPy 包中的 solve() 方法在一個變數中求解代數方程

SymPy 庫有一個 solve() 函式可以求解代數方程。此函式接受以下主要引數。

  • f:代數方程。
  • symbols:必須求解方程的變數。
  • dict:用於返回解決方案對映列表的布林標誌。
  • set:符號列表和解元組集的布林標誌。
  • check:用於測試代數表示式中獲得的解決方案的布林標誌。
  • minimal:用於快速和最少測試解決方案的布林標誌。

現在我們已經完成了一些簡短的理論,讓我們通過一些例子來學習如何使用這個 solve() 方法來求解代數方程。相同的參考下面的程式碼。

from sympy.solvers import solve
from sympy import Symbol

x = Symbol('x')
print(solve(x**2 - 1, x))
print(solve(x**3 + x**2 + x + 1, x))
print(solve(x**3 - 0*x**2 + 4*x - 5, x))

輸出:

[-1, 1]
[-1, -i, i]
[1, -1/2 - √19i / 2, -1/2 + √19i / 2]

使用 SymPy 包求解多變數中的代數方程

要求解多變數的代數方程,我們需要多個方程。

例如,如果我們必須求解兩個變數的代數方程,我們至少需要兩個這樣的方程。在求解三個變數的代數方程時,我們至少需要三個這樣的方程。

並且解決這樣的方程,我們需要來自 SymPy 模組的三個實用程式,即 symbolsEqsolve

symbols 函式將變數字串轉換為 Symbol 類的例項。

Eq 類表示兩個物件之間的平等關係,特別是表示式。例如,如果我們有一個方程 x + y = 3,那麼 x + y3 是兩個物件或表示式。對於 x + y - 5 = x + 6x + y - 5x + 6 是兩個物件。

並且,solve() 方法使用上述兩個方法來求解方程。

讓我們看看如何在一些相關示例的幫助下使用這些實用程式來求解二變數和三變數的代數方程。

求解兩個多變數的代數方程

要了解如何使用上述實用程式求解具有兩個值的代數方程,我們將考慮以下兩個示例。

示例 1:

x + y = 5
x - y = 5

示例 2:

2*x + 4*y = 10
4*x + 2*y = 30

有關第一個示例,請參閱以下 Python 程式碼。

from sympy import symbols, Eq, solve

x, y = symbols("x y")
equation_1 = Eq((x + y), 5)
equation_2 = Eq((x - y), 5)
print("Equation 1:", equation_1)
print("Equation 2:", equation_2)
solution = solve((equation_1, equation_2), (x, y))
print("Solution:", solution)

輸出:

Equation 1: Eq(x + y, 5)
Equation 2: Eq(x - y, 5)
Solution: {x: 5, y: 0}

對於第二個示例,請參閱以下 Python 程式碼。

from sympy import symbols, Eq, solve

x, y = symbols("x y")
equation_1 = Eq((2*x + 4*y), 10)
equation_2 = Eq((4*x + 2*y), 30)
print("Equation 1:", equation_1)
print("Equation 2:", equation_2)
solution = solve((equation_1, equation_2), (x, y))
print("Solution:", solution)

輸出:

Equation 1: Eq(2*x + 4*y, 10)
Equation 2: Eq(4*x + 2*y, 30)
Solution: {x: 25/3, y: -5/3}

求解三個多變數的代數方程

要了解如何使用上述實用程式求解三個值的代數方程,我們將考慮以下兩個示例。

示例 1:

x + y + z = 5
x - y + z = 5
x + y - z = 5

示例 2:

2*x - 4*y + 6*z = 10
4*x + 2*y + 6*z = 30
4*x + 2*y - 10*z = 50

有關第一個示例,請參閱以下 Python 程式碼。

from sympy import symbols, Eq, solve

x, y, z = symbols("x y z")
equation_1 = Eq((x + y + z), 5)
equation_2 = Eq((x - y + z), 5)
equation_3 = Eq((x + y - z), 5)
print("Equation 1:", equation_1)
print("Equation 2:", equation_2)
print("Equation 3:", equation_3)
solution = solve((equation_1, equation_2, equation_3), (x, y, z))
print("Solution:", solution)

輸出:

Equation 1: Eq(x + y + z, 5)
Equation 2: Eq(x - y + z, 5)
Equation 3: Eq(x + y - z, 5)
Solution: {x: 5, z: 0, y: 0}

對於第二個示例,請參閱以下 Python 程式碼。

from sympy import symbols, Eq, solve

x, y, z = symbols("x y z")
equation_1 = Eq((2*x - 4*y + 6*z), 10)
equation_2 = Eq((4*x + 2*y + 6*z), 30)
equation_3 = Eq((4*x + 2*y - 10*z), 50)
print("Equation 1:", equation_1)
print("Equation 2:", equation_2)
print("Equation 3:", equation_3)
solution = solve((equation_1, equation_2, equation_3), (x, y, z))
print("Solution:", solution)

輸出:

Equation 1: Eq(2*x - 4*y + 6*z, 10)
Equation 2: Eq(4*x + 2*y + 6*z, 30)
Equation 3: Eq(4*x + 2*y - 10*z, 50)
Solution: {x: 37/4, z: -5/4, y: 1/4}
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

LinkedIn GitHub

相關文章 - Python Math