【发布时间】:2015-06-26 12:08:16
【问题描述】:
在 sympy 中似乎没有 cosd、sind 的等价物(即余弦和正弦的度数参数)。有没有简单的方法来实现这些功能?
对于 numpy,我做到了:
numpy.cosd = lambda x : numpy.cos( numpy.deg2rad(x) )
类似:
sympy.cosd = lambda x : sympy.cos( sympy.pi/180*x )
适用于评估,但表达式打印为:
cos(pi*x/180)
这不利于可读性(由于 3D 坐标的变化,我的表达很复杂)。有没有办法创建一个 sympy.cosd 函数来评估 cos(pi/180 * x) 但打印 cosd(x)?
【问题讨论】:
-
许多数学公式在以弧度工作时看起来很漂亮,但在以度数工作时sprout
pi/180warts。最好使用弧度并完全避免度数 - 或者如果绝对必须在最后转换为度数。 -
很公平,感谢您的链接。那么如何更换呢?如果我有一个表达式
y=sympy.cos(x),y.subs(sympy.cos, sympy.cosd)不适用于sympy.cosd的上述定义(因为它不是一个 sympy 函数,而只是一个普通的 lambda 函数)。y.subs(x, pi/180*x)在这里有效,但如果 cos 中的表达式很复杂(如各种参数的多项式表达式),可能不方便搜索哪些参数必须用pi/180替换,哪些不能。 -
设
x、theta、phi等为以弧度表示数量的符号。保留这些符号的列表:angles = [x, theta, phi]。然后,在最后,使用y.subs([(angle, angle*pi/180) for angle in angles])将符号的含义更改为度数。