Cosd и Sind с симпати

Кажется, нет эквивалента для cosd, sind в sympy (то есть косинус и синус для аргументов в градусах). Есть ли простой способ реализовать эти функции?

Для 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)?

2 ответа

sympy имеет радиан, в mpmath модуль.

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)
Другие вопросы по тегам