Sympy 简化被破坏了(平方根)?
Sympy simplification is broken (square roots)?
我在 python shell
中试过了
>>> from sympy import sqrt
>>> sqrt((-9/10 + 6*sqrt(3)/5)**2 + (6/5 + 9*sqrt(3)/10)**2)
sqrt((-0.9 + 6*sqrt(3)/5)**2 + (1.2 + 9*sqrt(3)/10)**2)
然后在 google 中输入:
那么我如何让 numpy 给我一个更简化的结果(它不会总是一个 int,所以我不能使用 evalf 或 N)
这里缺少 2 个东西:
- 如果表达式比较复杂,您需要明确告诉 sympy
simplify
表达式。
- 您应该尽可能使用
Rational
,以避免浮点运算的数值不准确
总而言之:
>>> from sympy import Rational, simplify, sqrt
>>> simplify(sqrt((-Rational(9, 10) + Rational(6,5)*sqrt(3))**2 + (Rational(6,5) + Rational(9,10)*sqrt(3))**2))
3
我在 python shell
中试过了>>> from sympy import sqrt
>>> sqrt((-9/10 + 6*sqrt(3)/5)**2 + (6/5 + 9*sqrt(3)/10)**2)
sqrt((-0.9 + 6*sqrt(3)/5)**2 + (1.2 + 9*sqrt(3)/10)**2)
然后在 google 中输入:
那么我如何让 numpy 给我一个更简化的结果(它不会总是一个 int,所以我不能使用 evalf 或 N)
这里缺少 2 个东西:
- 如果表达式比较复杂,您需要明确告诉 sympy
simplify
表达式。 - 您应该尽可能使用
Rational
,以避免浮点运算的数值不准确
总而言之:
>>> from sympy import Rational, simplify, sqrt
>>> simplify(sqrt((-Rational(9, 10) + Rational(6,5)*sqrt(3))**2 + (Rational(6,5) + Rational(9,10)*sqrt(3))**2))
3