Найти - Пользователи
Полная версия: Вычислить с заданной точностью
Начало » Центр помощи » Вычислить с заданной точностью
1
Fanago
Вычислить значение функции с точностью 0.0001. Значения x могут вводится как интерактивно, так и как аргумент командной строки. Полученный результат должен быть сравнен со значениями, получаемыми с помощью библиотеки math.

Мой код
 import math
eps = 0.0001
s = 0
s1 = 1
x = input(' ')
k = 0
while abs(s1 - s)> eps:
    s1 = x**k/math.factorial(k)
    s += s1 
    k += 1
    print(float(x))
py.user.next
Fanago
Мой код
Никаких факториалов не должно быть внутри. Это делается по-другому: читай про рекуррентные соотношения.
wi34rd
py.user.next
Никаких факториалов не должно быть внутри. Это делается по-другому: читай про рекуррентные соотношения.
Прочитал про рекуррентный соотношения, поискал исходники с нахождением как можно большего количества цифр после запятой числа e, и хоть убейте не понимаю о чем вы говорите.
py.user.next
wi34rd
и хоть убейте не понимаю о чем вы говорите.
Надо поделить n-й член ряда на n-1-й - получится множитель, на который нужно домножить любой член ряда, чтобы получить следующий за ним член. И дальше ты просто в цикле домножаешь на него и сразу суммируешь (к сумме прибавляешь полученный член). Потом прибавил и сразу из него получаешь следующий член и всё повторяется, пока точность подходит.

Я тут в каком-то бородатом году делал задачки эти (к счастью, решённые задачи сохраняю в папочке).

Изменён: 2014-08-07 10:08:49.492343428 +1100
#!/usr/bin/env python3

# вычисляет сумму ряда e ^ (-x) с заданной точностью
#
# e ^ (-x) = 1 - x + (x ^ 2) / 2! - (x ^ 3) / 3! +
# + ... + (-1 ^ n) * (x ^ n) / n!

import math

def emx(x, eps):
s, sl, psl, i = 0, 1, 0, 1
while abs(sl - psl) > eps:
s += sl
psl = sl
sl *= -x / i
i += 1
return s

if __name__ == '__main__':

print(math.exp(-4))

for e in (
1,
0.1,
0.01,
0.001,
0.0001,
0.00001,
0.000001,
0.0000001,
):
x = 4
print('{} eps={}'.format(emx(x, e), e))

Изменён: 2015-07-01 20:13:09.207046146 +1100
#!/usr/bin/env python3

# Находит cos(x) через ряд Тейлора
# cos(x) = 1 - x ^ 2 / 2! + x ^ 4 / 4! - x ^ 6 / 6! + ...

import math

def cos(x, eps):
x %= 2 * math.pi
s = 0
sl, psl = 1, 0
z = 0
while abs(sl - psl) >= eps:
s += sl
psl = sl
sl *= -x * x / ((z + 1) * (z + 2))
z += 2
return s

if __name__ == '__main__':
print(cos(12345, 0.0001))
print(math.cos(12345))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB