gpt4 book ai didi

python-3.x - 简化策略 : Convince sympy that complicated term is zero

转载 作者:行者123 更新时间:2023-12-01 09:46:14 24 4
gpt4 key购买 nike

有什么好的策略/启发式方法可以让 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com