首页 > 解决方案 > Sympy 简化被破坏(平方根)?

问题描述

我在 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)

当在谷歌中输入时:

谷歌计算器

那么我如何让 numpy 给我一个更简化的结果(它并不总是一个 int,所以我不能使用 evalf 或 N)

标签: pythonpython-3.xsympysquare-rootsimplification

解决方案


这里缺少两件事:

  1. simplify如果表达式很复杂,您需要明确告诉 sympy 。
  2. 您应该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

推荐阅读