答案 0 :(得分:1)
由于NaN不是该积分的正确答案,因此是SymPy错误。但这是由于设置欠佳所致。 SymPy发现难以处理带有浮点数的表达式,因为浮点算术与算术的数学规则不同(例如,加法不是关联的)。对于具有这种常数的指数的表达式尤其如此。
因此,最好不要在计算中包括浮点常量,包括最后的浮点常量。代替
integrate((0.2944/z**0.22+1.0)*(1.939*log(z/10) +17.7), z)
写
a, b, c, d, e = symbols('a b c d e', positive=True)
values = {a: 0.2944, b: 0.22, c: 1.0, d: 1.939, e: 17.7}
expr = integrate((a/z**b + c) * (d*log(z/10) + e), z)
print(expr.subs(values).simplify())
可打印
0.731848205128205*z**0.78*log(z) + 4.05720568750119*z**0.78 + 1.939*z**1.0*log(z) + 11.2962875046845*z**1.0