辛平方根:对有理数进行运算的最佳方法?

2024-04-18 23:21:01 发布

您现在位置:Python中文网/ 问答频道 /正文

由于我希望平方根简化,我遇到了以下解决方法:

from sympy import sqrt, factor, simplify

_sqrt = sqrt
sqrt = lambda x: factor(simplify(_sqrt(x)))

# do maths operations with sqrt...

但是它太慢了,我认为这不是一个人能使用的最合适的方法 那么,有没有其他方法可以处理平方根并自动简化它们


1条回答
网友
1楼 · 发布于 2024-04-18 23:21:01

Symphy会自动将有理参数简化为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

相关问题 更多 >