Python 带有同情的cosd和sind

Python 带有同情的cosd和sind,python,numpy,sympy,Python,Numpy,Sympy,在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) 这对可读性不是很好(我有复杂的表达式,因为三维坐标的变化)。有没有办法创建一个sy

在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)

这对可读性不是很好(我有复杂的表达式,因为三维坐标的变化)。有没有办法创建一个
sympy.cosd
函数,该函数计算cos(pi/180*x)但打印
cosd(x)

sympy
模块中有一个

sympy.cosd = lambda x : sympy.cos( sympy.mpmath.radians(x) )

为了在使用度时保持符号的圆滑,我做了如下操作:

import sympy as sp
def tand(x):
    return sp.tan(x * sp.pi / 180)

def sind(x):
    return sp.sin(x * sp.pi / 180)

def cosd(x):
    return sp.cos(x * sp.pi / 180)
示例结果

In [5]: tand(60)
Out[5]: sqrt(3)

许多数学公式在以弧度计算时看起来很美,但在以度计算时却很美。最好在弧度范围内工作,完全避免度,或者在最后转换成度,如果你绝对必须的话。很公平,谢谢你的链接。那么如何更换呢?如果我有一个表达式
y=symphy.cos(x)
y.subs(symphy.cos,symphy.cosd)
不适用于上述定义的
symphy.cosd
(因为它不是一个symphy函数,只是一个普通的lambda函数)
y.subs(x,pi/180*x)
在这里起作用,但是如果cos中的表达式很复杂(像各种参数的多项式表达式),那么搜索哪些参数必须用pi/180替换,哪些不能。让
x
theta
phi
,等。可以是以弧度表示数量的符号。保留这些符号的列表:
角度=[x,θ,φ]
。然后,在最后,使用
y.subs([(角度,角度*pi/180)表示角度]
将符号的含义更改为度。谢谢,但它会打印
cos(0.0174532925199433*x)
,这也不是真正可读的。哈。它对我有用。例如,在如上定义了
symphy.cosd
之后,我输入
symphy.cosd(60)
,它返回
0.5
。也许这是一个版本的东西?我使用的是
sympy 0.7.6
sympy.cosd(60)
也提供了
0.5
。我认为它给出了cos(0.0174532925199433*x),因为参数是一个符号:
x=sympy.symbol('x')
我用它来做符号演算(这样我就可以检查公式),然后我用lambdify来进行数值应用。啊,我现在明白了。我不知道该怎么做。我将把这个答案留在这里,以防有人在寻找弧度转换器时遇到这个问题