2 python symbolic-math sympy derivative
我正在尝试学习python中符号操作的细节(我是初学者).
我有以下基本代码,输出给我一个错误告诉我它"无法将表达式转换为浮点数".
这段代码有什么问题:
from sympy import *
from math import *
def h(x):
    return log(0.75392 * x)
x = symbols('x')
hprime = h(x).diff(x)
print(hprime)
这是PEP-8中关于通配符导入的经典示例:
from <module> import *应该避免使用通配符导入(),因为它们不清楚命名空间中存在哪些名称,使读者和许多自动化工具混淆.
问题是你需要使用sympy.log类,但是使用math.log函数代替float对象,而不是Symbol对象.
当你写作
from sympy import *
你正在你的模块名称空间中导入在sympy顶层提供包的所有东西(并且有很多东西,很多你根本不需要的东西),包括sympy.log类.
下一个声明之后
from math import *
您正在导入math模块中的所有内容,包括math.log覆盖以前导入的sympy.log类.
考虑到这一点,你的例子可能写得像
import sympy
def h(x):
    return sympy.log(0.485022 * x)
x = sympy.symbols('x')
h_x = h(x)
hprime = h_x.diff(x)
print(hprime)
给我们
1.0/x
PS:我已经删除了math导入,因为在给定的示例中没有使用它.