Хитрый синус [1]¶
Известно, что ряд Тейлора для синуса:
\(sin(x)=x-\frac{x^3}{3!}+\frac{x^5}{5!}-\frac{x^7}{7!}+...\)
сходится для всех значений \(x\). При этом, т.к. ряд знакопеременный, погрешность вычисления суммы ряда не превосходит первого отброшенного слагаемого. Теоретически можно использовать эту формулу и критерий остановки для расчета синуса с высокой точностью при любых значениях \(x\). Так ли это?
Задания¶
- Напишите функцию вычисляющую сумму ряда с тчностью до \(10^{-18}\).
- Проверьте ее работу для \(x=\pi/6\).
- Для какого максимального \(n\), такого что \(x=\pi/6+2\pi*n\), функция работает правильно?
- Постройте график логарифма погрешности вычислений от \(n\).
- Почему правильная математическая формула дает при вычислении неверный результат?
Подсказки¶
Фрагмент кода может выглядеть так
def my_sin(x,err=1e-18): """ функция вычисления синуса как сумму ряда с заданной точностью """ k = 1 a = x sum = a while abs(a) > err: # a = # добавьте вычисление элемента ряда k += 2 sum +=a return sum
Проанализируйте значение максимального эемента ряда для разных \(n\).
Постройте график зависимости \(log(NumericalError)\) от \(log(a_{max})\).
[1] | Мак-Кракен Д., Дорн У. Численные метода и программирование на фортране. М:Мир 1977, 584с. |