Дано вещественное число X и целое число N (> 0). Найти значение выражения
1 – X^2 /(2!) + X^4 /(4!) – … + (–1)^N · X^(2·N) /((2· N )!)
( N ! = 1·2·…· N ). Полученное число является приближенным значением
функции cos в точке X .
т.е. вычисление через ряды Тейлора

import math n=1 x=0 def fac(z): if z == 0: return 1 f=1 for x in range(1,z+1): f*=x return f def f(n,x): f=-0.0x= for i in range(n): fi=((-1**i)*(x**(2*i)))/fac(2*i) f +=fi print i, fi # Проверка значений по шагам return f x=input('Введите вещественное число Х: ') n=input('Введите целое число N, больше нуля: ') print 'Факториал N = ', fac(n) print 'Функция: ' print round(f(n,x),5) print "Проверка ", round(math.cos(x),5) # для проверки расчет через встроенную функцию
При выполнении программы получается какой-то бред:
Введите вещественное число Х: 30.0 Введите целое число N, больше нуля: 4 Факториал N = 24 Функция: 0 -1.0 1 -450.0 2 -33750.0 3 -1012500.0 -1046701.0 Проверка 0.15425
Попробовал посчитать в консоли Python'a, получился тоже бред:
>>> def fac(n): ... if n == 0: ... return 1 ... f=1 ... for x in range(1,n+1): ... f*=x ... return f ... >>> x=30.0 >>> 1-(x**2/fac(2))+(x**4/fac(4))-(x**6/fac(6))+(x**8/fac(8)) 15293122.42857143 >>> from math import cos >>> cos(x) 0.15425144988758405
Где я гоню?