Sympy计算LambertW表达式时报错_unexpected keyword argument 'exp'如何解决
问题定位
- 该报错属于旧版本SymPy的已知打印逻辑bug,和你的代码计算逻辑无关:
- 你定义的表达式及求导、相乘计算的结果本身是合法的,错误触发在IPython尝试将包含LambertW导数的结果自动渲染输出的环节,SymPy的LambertW打印方法不兼容上层传入的
exp关键字参数。 - 该bug普遍出现在SymPy 1.7及更早的版本中。
- 你定义的表达式及求导、相乘计算的结果本身是合法的,错误触发在IPython尝试将包含LambertW导数的结果自动渲染输出的环节,SymPy的LambertW打印方法不兼容上层传入的
验证方法
你可以将最后一行代码替换为print(d),使用普通文本打印替代IPython的富格式自动渲染,就能正常输出计算结果,不会触发报错。
解决方案
- 永久修复:升级SymPy到1.8及以上版本,该版本已经修复了LambertW的打印参数兼容问题,执行命令:
pip install --upgrade sympy - 临时规避(无法升级版本时):
- 所有涉及该类表达式输出的场景统一使用
print()函数打印,不要直接写变量名让IPython自动回显 - 表达式本身可正常参与后续所有符号计算,仅输出环节需要规避富格式渲染即可
- 所有涉及该类表达式输出的场景统一使用
内容的提问来源于stack exchange,提问作者ducarita
相关产品推荐
相关产品推荐

