python-3.x – 简化策略:说服复杂术语为零

python-3.x – 简化策略:说服复杂术语为零,第1张

概述什么是好的策略/启发式来说服同情一个复杂的术语,包括三角函数是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 什么是好的策略/启发式来说服同情一个复杂的术语,包括三角函数是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.

解决方法 无需特别努力;只需避免浮点数,用整数或有理数表示它们.浮点数是符号数学的障碍,因为浮点算术不像常规算术那样工作. (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)**2e.simplify()

返回0.

除了将12.0更改为12等之外,我还将0.5 * sqrt(a ** 2 b ** 2 c ** 2)更改为sqrt(a ** 2 b ** 2 c ** 2)/ 2.其他选项包括替换0.5

>理性(1,2),或>理性(‘0.5’),或> S.Half(SymPy的内置1/2对象)> S(1)/ 2(S将1变为SymPy整数,这使得2除以SymPy规则而不是Python规则).

总结

以上是内存溢出为你收集整理的python-3.x – 简化策略:说服复杂术语为零全部内容,希望文章能够帮你解决python-3.x – 简化策略:说服复杂术语为零所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1194093.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存