Proc 41. Описать функцию \(\text{Sin1}(x, \varepsilon)\) вещественного типа (параметры \(x, \varepsilon\) -  вещественные, \(\varepsilon > 0\)), находящую приближенное значение функции sin(x):

\[\sin(x) = 1 - x^3/(3!) +x^5/(5!) - ... + (-1)^n\cdot x^{2\cdot n +1}/((2\cdot n + 1)!) + ...\]

В сумме учитывать все слагаемые, модуль которых больше \(\varepsilon\). С помощью Sin1 найти приближенное значение синуса для данного x при шести данных \(\varepsilon\).

Решение на Python 3

import random
import math

def Sin1(x,eps):
if eps <= 0:
print("Epsilon should be greater than 0")
y = x
f = x
i = 3
while abs(y) > eps:
y *= (-1) * x * x / ((i-1)*i)
i += 2
f += y
return f

eps = 0.01
for i in range(0, 6):
#x = -0.5
#x = 2
x = math.pi / 4
print("eps = ", eps, "; sin(",x,") = ",Sin1(x,eps),";",math.sin(x))
eps /= 10