使用 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
模块的三个实用程序,即 symbols
、Eq
、solve
。
symbols
函数将变量字符串转换为 Symbol
类的实例。
Eq
类表示两个对象之间的平等关系,特别是表达式。例如,如果我们有一个方程 x + y = 3
,那么 x + y
和 3
是两个对象或表达式。对于 x + y - 5 = x + 6
,x + y - 5
和 x + 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}