Нахождение произведения ряда
Дано натуральное число n. Вычислить:
Сделал наброски, находит значение, но понимаю, что неправильно, ибо у меня каждый элемент неправильный.
Вот мой код:
import math
n = int(input("n: "))
z = 1
for i in range(1, n+1):
z *= math.cos(n)/math.sin(n)
print(z)
Ответы (2 шт):
можно отдельно хранить числитель и знаменатель, на каждой итерации прибавлять к ним косинус и синус, далее умножать результат их деления в общий результат
import math
n = int(input('n: '))
numerator = 0
denominator = 0
result = 1
for i in range(1, n + 1):
numerator += math.cos(i)
denominator += math.sin(i)
result *= numerator / denominator
print(result)
способ 1:
решаем задачу в лоб, т.е. для каждой дроби находим числитель и знаменатель, а затем вычисляем произведение дробей
res = 1
for i in range(1, n + 1):
cos_n = 0
sin_n = 0
for j in range(1, n + 1):
cos_n += math.cos(j)
sin_n += math.sin(j)
res *= cos_n / sin_n
print(res)
способ 2:
тут потребуется немного математики:
поскольку
sum(cos(i)) от 1 до n = csc(1/2) * sin(n/2) * cos((n+1)/2)
sum(sin(i)) от 1 до n = csc(1/2) * sin(n/2) * sin((n+1)/2)
(эту формулу можно получить через формулу Эйлера и комплексное представление тригонометрических функций и экспоненты)
то всю формулу можно записать в виде
res = prod(ctg((n+1)/2) от 1 до n
т.е. код можно сделать гораздо более простым :)
res = 1
for i in range(1, n + 1):
res /= math.tan((n + 1) / 2)
print(res)
