使用Python中的SymPy计算表达式

3
我正在尝试使用SymPy,并遇到一个无法解决的问题。
我的问题在于将表达式转换为数字:
from sympy import *
a=1
b=3
x=15
y=30
v=5
w=10

    t = Symbol('t', positive=True)
k=solve( (a**2)*(y**2) + 2*a*t*v*(y**2) + (b**2)*(x**2) + 2*b*t*w*(x**2) + (t**2)*(v**2)*(y**2) + (t**2)*(w**2)*(x**2)
- ( (a**2)*(b**2) + 2*(a**2)*b*t*w + (a**2)*(t**2)*(w**2) + 2*a*(b**2)*t*v + 4*a*b*(t**2)*v*w + 2*a*(t**3)*v*(w**2) +
(b**2)*(t**2)*(v**2) + 2*b*(t**3)*(v**2)*w + (t**4)*(v**2)*(w**2) ) , t)

k的值为:

k = {list} : [-1/4 + sqrt(3601 + 120*sqrt(901))/20]

如何将表达式 k 的值获取为数字,例如 7.2,而不是表达式本身?

1个回答

2

sympy.solve()返回一个列表,因此您需要从该列表中获取表达式,并且您可以调用<expression>.evalf()来获取解决方案的浮点表示:

所以,要么:

print(k[0].evalf())

或者

for sol in k:
    print(sol.evalf())

将显示:3.99352431498656


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接