- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有什么好的策略/启发式方法可以让 sympy 相信包括三角函数在内的复杂项为 0?
例如,让我们考虑以下术语:-2*a**2*b*(a**2 + b**2 + c**2)**(-12.0)*(a**2*(a**2 + b* *2 + c**2)**9.0 + b**2*(a**2 + b**2 + c**2)**9.0 + c**2*(a**2 + b* *2 + c**2)**9.0 - (a**2 + b**2 + c**2)**10.0)*sin(0.5*sqrt(a**2 + b**2 + c **2))**2
Wolfram alpha agrees with me它应该为零。
我尝试了 sympy.simplify
以及 sympy.trigsimp
,但不确定接下来要尝试什么。
我正在使用 python 3.6.3 和 sympy 1.1.1。
最佳答案
不需要特别的努力;只是避免 float ,用整数或有理数表示它们。 float 是符号数学的障碍,因为浮点运算不像常规运算那样工作。 (为了有效地使用 SymPy,确实需要摒弃 Python 2 使所有内容都变成 float 以便除法正确工作的习惯。)
e = -2*a**2*b*(a**2 + b**2 + c**2)**(-12)*(a**2*(a**2 + b**2 + c**2)**9 + b**2*(a**2 + b**2 + c**2)**9 + c**2*(a**2 + b**2 + c**2)**9 - (a**2 + b**2 + c**2)**10)*sin(sqrt(a**2 + b**2 + c**2)/2)**2
e.simplify()
返回 0。
除了将 12.0 更改为 12 等,我还将 0.5*sqrt(a**2 + b**2 + c**2)
更改为 sqrt(a**2 + b**2 + c**2)/2
。这里的其他选项包括将 0.5 替换为
Rational(1, 2)
或 Rational('0.5')
或 S.Half
(SymPy 内置的 1/2 对象)S(1)/2
(S 将 1 转换为 SymPy 整数,这使得除以 2 遵循 SymPy 规则而不是 Python 规则)。 关于python-3.x - 简化策略 : Convince sympy that complicated term is zero,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48140296/
我有以下非空列表( NEList )数据类型的玩具实现: -- A type to describe whether or not a list is empty. data Emptiness ::
我听说过 C++ 模板上下文中的代码膨胀。我知道现代 C++ 编译器并非如此。但是,我想构建一个例子并说服自己。 假设我们有一个类 template class Array { public:
我正在做一些图像处理,为此我受益于矢量化。我有一个可以矢量化的函数,但是我无法让编译器相信输入和输出缓冲区没有重叠,因此不需要进行别名检查。我应该可以使用 __restrict__ 来做到这一点,但是
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
git grep fizzbuzz $(git rev-list --all) fatal: Invalid object name 'Symbol's function definition is
有什么好的策略/启发式方法可以让 sympy 相信包括三角函数在内的复杂项为 0? 例如,让我们考虑以下术语:-2*a**2*b*(a**2 + b**2 + c**2)**(-12.0)*(a**2
我正在构建一个具有多个需要 libhdf5 的 C 扩展的 Python 项目。我在 /usr/local/lib 处安装了 libhdf5 .对于测试和开发,我想针对位于 /Users/name/s
我是一名优秀的程序员,十分优秀!