首页 > 解决方案 > 替换后如何在sympy中设置0,高于0

问题描述

我有一些冗长的表达式,其中包含符号等。在使用 .subs({...}) 并替换所有变量时评估它们后,我得到值10^{-18}等,我知道它们应该等于零。

您是否有某种方法可以将它们设置为零而无需检查每个变量并手动执行?

标签: pythonmathsympy

解决方案


您可以使用(aka ) 的chop选项:evalfn

>>> ((pi + pi*I)**2).n()
-0.e-21 + 19.7392088021787*I
>>> ((pi + pi*I)**2).n(chop=True)
19.7392088021787*I

您也可以设置斩波级别:

>>> ((pi + pi*I)**2).n(chop=1e-23)
-0.e-21 + 19.7392088021787*I
>>> ((pi + pi*I)**2).n(chop=1e-20)
 19.7392088021787*I

推荐阅读