B0r*_*rk4 3 math sympy python-3.x
什么是好的策略/启发式来说服同情一个复杂的术语,包括三角函数是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同意我的观点,它应该为零.
我想sympy.simplify还有sympy.trigsimp,但不知道下一个尝试的东西.
我正在使用python 3.6.3和sympy 1.1.1.
小智 7
无需特别努力; 只需避免浮点数,用整数或有理数表示它们.浮点数是符号数学的障碍,因为浮点算术不像常规算术那样工作.(Python 2的习惯是让所有东西都浮动,以便分工正常工作,实际上需要没有学习才能有效地使用SymPy.)
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()
Run Code Online (Sandbox Code Playgroud)
返回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规则). | 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |