Форум сайта python.su
Привет всем!
Есть код:
# -*- coding:cp1251 -*- import math eps = 0.001 x = 5.0 rez = x znam = 2 shag = 2 while True : n = znam el = 1 - x**n / math.factorial(znam) rezNew = rez + el if abs( rezNew - rez ) < eps : rez = rezNew break rez = rezNew znam += shag print math.cos(x), rez
Отредактировано vihard (Июнь 29, 2015 11:53:11)
Офлайн
гуглится за семь секунд
например
Офлайн
Спасибо, я в курсе, но хотелось бы объяснения на родном языке)
Офлайн
во float помещаются числа в диапазоне
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
In [3]: len(str(math.factorial(172))) Out[3]: 312
Отредактировано PooH (Июнь 29, 2015 12:31:53)
Офлайн
PooH
во float помещаются числа в диапазоне
Офлайн
vihardСкорее всего, выбран неверный алгоритм.
В чем проблема?
vihardДеление на факториал вызывает подозрения.el = 1 - x**n / math.factorial(znam)
Офлайн
py.user.nextОшибка возникает даже если в знаменателе поставить просто переменную znam
Офлайн
это часом не косинус через ряд Тейлора должно считать?
Офлайн
vihardЗадание напиши. Может быть неправильным не только алгоритм, но и код реализации неправильного алгоритма.
Ошибка возникает даже если в знаменателе поставить просто переменную znam
Офлайн
py.user.nextВычислить с точностью 0.001:
Офлайн