python - 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)
解决方案
这里缺少两件事:
simplify
如果表达式很复杂,您需要明确告诉 sympy 。- 您应该
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
推荐阅读
- typescript - Ionic 5 虚拟滚动创建空白空间而不是新项目
- c# - 从模型变量填充 asp 页面
- android - ConstraintLayout(似乎)在 RecyclerView 上使用大量内存(最多 1GB),具体取决于列表中的项目数量
- sql - 固定列上的 SQL Pivot
- bash - 如何重新定位每行的第二个字符串以从同一行的第 n 个字符开始
- python - Python,API 测试:断言失败,但实际和预期似乎相同
- tcl - 如何在 Tcl 中创建列表数组?
- php - Laravel 中使用 put 文件方法的 504 错误
- python - Python 是否对列表的元素进行实习?
- enums - Rust 中的静态枚举