由于我希望简化平方根,因此我遇到了这种解决方法:
from sympy import sqrt, factor, simplify
_sqrt = sqrt
sqrt = lambda x: factor(simplify(_sqrt(x)))
# do maths operations with sqrt...
但它太慢了,我认为这不是最合适的方法所以有没有其他方法可以使用平方根并简化它们 - 自动 -
由于我希望简化平方根,因此我遇到了这种解决方法:
from sympy import sqrt, factor, simplify
_sqrt = sqrt
sqrt = lambda x: factor(simplify(_sqrt(x)))
# do maths operations with sqrt...
但它太慢了,我认为这不是最合适的方法所以有没有其他方法可以使用平方根并简化它们 - 自动 -
SymPy 会自动将有理参数简化为sqrt
,但可以以不明确有理的方式编写有理数(如您之前的帖子中所述):
>>> eq
sqrt((-9/10 + 6*sqrt(3)/5)**2 + (6/5 + 9*sqrt(3)/10)**2)
sqrt
只会简化一个显式的Rational参数。论证基础的扩展表明它是有理数并且sqrt
将简化它:
>>> eq.base.expand()
9
>>> sqrt(9) == 3
True
比expand
在需要展平涉及幂的表达式的情况下更好的是_mexpand
函数:
>>> from sympy.core.function import _mexpand as flat
>>> flat(eq)
3