Форум сайта python.su
Задача:
Дано вещественное число 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
>>> 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
Офлайн
def f(n,x): f = 1.0 for i in range(1, n +1 ): f += (1.0, -1.0)[i % 2] * ((x**(2*i)))/fac(2*i) return f
Офлайн
Спасибо! Действительно не учел, что в радианах считать надо.
J.R.Для тренировки. Косинус ведь тоже в math есть.
И в качестве недоумения. Для чего писать фукцию факториала, если есть math.factorial?
Офлайн
Офлайн
py.user.nextСпасибо, там другой подход буду разбираться позже.
Косинус через ряд
J.R.Прикольно. Чудеса минимизации.from math import cos, factorial, radians x = radians(float(input("Enter the angle value: "))) n = int(input("Enter a number: ")) cosinus = sum( pow(-1, i) * pow(x, 2 * i) / factorial(2 * i) for i in range(n)) print("cosinus:\t%s" % cosinus) print("math.cos:\t%s" % cos(x))
Отредактировано Igor-dis (Июль 20, 2015 14:10:41)
Офлайн
J.R.print, без скобок в третьем питоне не работает? Я не в курсе, пользуюсь пока 2.7.9.
А каким оператором можно заменить print()? Я пишу на python3. Там print() - функция.
Офлайн