📜  如何在 Sympy 中评估代数表达式?

📅  最后修改于: 2022-05-13 01:55:35.503000             🧑  作者: Mango

如何在 Sympy 中评估代数表达式?

SymPy 是一个符号数学Python包。它的目标是发展成为一个功能齐全的计算机代数系统,同时保持代码尽可能基本,使其易于理解和扩展。代数表达式是使用加法、减法、除法、乘法、模数等运算组合而成的表达式或语句。例如 10x+2 等……让我们通过几个例子来演示如何在 sympy 中评估代数表达式。来自 sympy 的 evalf()函数和 subs()函数用于计算代数表达式。

示例 1:

在这个例子中,我们从 sympy 包中导入符号。创建一个表达式并使用 evalf()函数对表达式求值。 subs 是函数中的一个参数,我们在其中传入一个符号映射到值的字典。在 sympy float 中,默认情况下精度最高为 15 位。精度最多可以覆盖 100 位。

Python3
# import packages
from sympy.abc import x, y ,z
  
# creating an expression
expression = 4*x+5*y+6*z
  
# evaluating the expression
print(expression.evalf(subs={x:1,y:2,z:3}))


Python3
# import packages
from sympy.abc import x, y ,z
  
# creating an expression
expression = 4*x+5*y+6*z
  
# evaluating the expression
print(expression.evalf(3,subs={x:1,y:2,z:3}))


Python3
# import packages
from sympy.abc import *
from sympy import pi
  
# finding the circumference of a circle
expression = 2*pi*r
  
# evaluating the expression
print(expression.evalf(10,subs={r:2}))


Python3
# import packages
from sympy.abc import *
  
# creating an expression
expression = 2**x - 4*y + z
  
# substituting values in the expression
print(expression.subs([(x, 4), (y, 2), (z, 1)]))


输出:

32.0000000000000

在此代码中,精度设置为 3 位。

Python3

# import packages
from sympy.abc import x, y ,z
  
# creating an expression
expression = 4*x+5*y+6*z
  
# evaluating the expression
print(expression.evalf(3,subs={x:1,y:2,z:3}))

输出:

32.0

示例 2:

sympy 还具有像 pi 这样的内置值,它可以帮助我们解决数值问题,例如求圆的周长等……。在此示例中,精度设置为 10 位。

Python3

# import packages
from sympy.abc import *
from sympy import pi
  
# finding the circumference of a circle
expression = 2*pi*r
  
# evaluating the expression
print(expression.evalf(10,subs={r:2}))

输出:

12.56637061

示例 3:

在此示例中,我们使用 subs()函数将符号替换为值,并计算给定的代数表达式。 2**4 -4*2 +1 == 16-8+1 ==9。

Python3

# import packages
from sympy.abc import *
  
# creating an expression
expression = 2**x - 4*y + z
  
# substituting values in the expression
print(expression.subs([(x, 4), (y, 2), (z, 1)]))

输出:

9