如何在Sympy中评估一个代数表达式
SymPy是一个符号数学Python包。它的目标是发展成为一个完全有特色的计算机代数系统,同时尽可能地保持代码的基本性,使其可以理解和扩展。代数表达式是一个使用加法、减法、除法、乘法、模数等运算组合起来的表达式或语句……例如10x+2等。 让我们通过几个例子来演示如何在sympy中评估代数表达式。sympy中的evalf()函数和subs()函数是用来评估代数表达式。
示例 1:
在这个例子中,我们从sympy包中导入符号。一个表达式被创建,evalf()函数被用来评估这个表达式。subs是函数中的一个参数,我们在这里传入一个符号映射到数值的字典。在sympy float中,默认精度为15位。
# 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}))
输出:
32.0000000000000
在这个代码中,精度被设置为3位数。
# 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也有内置的数值,如π,它可以帮助我们解决数字问题,如寻找圆的周长等……在这个例子中精度被设置为10位。
# 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()函数用数值替代符号,它评估了所给的代数表达式。24 -4*2 +1 == 16-8+1 ==9.
# 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