Python
Но т.к. при больших x вычисление ряда начинает безбожно врать, имеет смысл сначала привести x к приемлемому диапазону значений - через формулы синуса и косинуса двойного угла:
Нахождение синуса от угла в радианах
Помогите найти формулу для того чтобы создать фунцию в питоне для нахождения синуса от числа ( угла в радианах),чтобы потом использовать в решении.это задание от препода на знание функций по этому нельзя использовать модуль math.
def sin(x):
s, t, q, n = x, x, -x * x, 1
while True:
n += 2
t *= q / (n * (n - 1))
s += t
if abs(t) < 1.0e-20: return s
Банальный ряд Тейлора.Но т.к. при больших x вычисление ряда начинает безбожно врать, имеет смысл сначала привести x к приемлемому диапазону значений - через формулы синуса и косинуса двойного угла:
def sin(x):
if abs(x) > 0.125: return 2 * sin(x / 2) * cos(x / 2)
s, t, q, n = x, x, -x * x, 1
while True:
n += 2
t *= q / (n * (n - 1))
s += t
if abs(t) < 1.0e-20: return s
def cos(x):
if abs(x) > 0.125: return cos(x / 2) ** 2 - sin(x / 2) ** 2
s, t, q, n = 1, 1, -x * x, 0
while True:
n += 2
t *= q / (n * (n - 1))
s += t
if abs(t) < 1.0e-20: return s
Убирая дублирование кода и добавляя кэширование (мемоизацию) для ускорения рекурсии: import functools
@functools.lru_cache
def calc(t, q, n):
s = t
while True:
n += 2
t *= q / (n * (n - 1))
s += t
if abs(t) < 1.0e-20: return s
@functools.lru_cache
def sin(x):
return 2 * sin(x / 2) * cos(x / 2) if abs(x) > 0.125 else calc(x, -x * x, 1)
@functools.lru_cache
def cos(x):
return cos(x / 2) ** 2 - sin(x / 2) ** 2 if abs(x) > 0.125 else calc(1, -x * x, 0)
Евгений Андреев
спасибо огромное!
Через ряд Тейлора разложи: https://dotancohen.com/eng/taylor-sine.php
Если под виндой - можешь подрубить MSVCRT.DLL, там тоже синус есть. И никакого модуля math, что характерно!
Если под виндой - можешь подрубить MSVCRT.DLL, там тоже синус есть. И никакого модуля math, что характерно!
Похожие вопросы
- Нахождение индексов максимального и минимального элемента массива
- Python Решение задачи на нахождение центра шахматной клетки.
- Вот про это задание про нахождение в массиве последовательностей из подряд стоящих чисел дающих сумму 3 (...)
- Как найти синус прямого угла?!!!
- Синус острого угла В в прямоугольном треугольнике АВС равен 3√11/10 (это дробь) Найдите косинус угла В
- Можете не загугливая дать определение синуса острого угла треугольника? Только по чесноку, ЕГЭшники!
- Как найти угол,зная синус либо косинус этого угла?
- как синус может быть 780 градусов , если в треугольнике всего 180 градусов на все три угла?
- Как узнать синус, а из него уже и сам угол.
- синус косинус касается прямоугольного треугольнка сумма углов которых состовяет всего 180 градусов КАК ЖЕ СИНус 360 ГР