“无法将表达式转换为浮点数”,Sympy错误

时间:2019-06-15 17:00:03

标签: python sympy

我正在尝试求解这样的方程式,

from sympy.solvers import solve
from sympy import Symbol
import math

x = Symbol('x')

A, B = 1, 2

print(solve((x) + (A/math.sqrt(x**4)) - (B * math.exp(-x)), x))


Traceback (most recent call last):
  File "C:\Users\****\Desktop\Python Stuff\****\***.py", line 7, in <module>
    print(solve((x) + (A/math.sqrt(x**4)) - (B * math.exp(-x)), x))
  File "C:\Users\****\AppData\Local\Programs\Python\Python37\lib\site-packages\sympy\core\expr.py", line 280, in __float__
    raise TypeError("can't convert expression to float")
TypeError: can't convert expression to float

为什么会这样?

1 个答案:

答案 0 :(得分:2)

xsympy.Symbol,因此您不能将其与普通的math库函数一起使用,因为它们不了解sympy。而是使用sympy之类的sympy.sqrt函数:

from sympy.solvers import solve
import sympy

x = sympy.Symbol('x')

A, B = 1, 2

print(solve((x) + (A / sympy.sqrt(x ** 4)) - (B * sympy.exp(-x)), x))

(这引发了另一个异常,sympy抱怨它没有解决该问题的算法-如果您对此也有疑问,则应该发布单独的问题。)

PS:正如评论中指出的那样,您得到的实际错误是来自其他表达式。您需要在整个过程中予以解决。