Разложение в ряд Тейлора функции(Python). Приближённое значение функции
Вроде бы ввожу правильное значение разложения в ряд Тейлора функции, а выдаёт не правильное значение. Подскажите, в чём проблема.
import math
from math import factorial
a=3.0
b=4.0
lich = 0
krok=(b-a)/10
lich=0
def f(x):
return 1/(1+((math.e)**(1+x)))
def f_tochne(x, n):
result=0
for i in range(n):
result += ((factorial(n))/((1+x)**n))
return result
while a<=b:
print(round(a,2), end=' ')
print(round(f(a),5),end=' ')
print(round(f_tochne(a,lich),5))
lich+=1
a+=krok[![введите сюда описание изображения][1]][1]
Ответы (2 шт):
Автор решения: Владислав Харламов
→ Ссылка
from math import factorial
def taylor(x, n):
return sum((1+x) ** i / factorial(i) for i in range(n + 1))
Автор решения: Harry
→ Ссылка
Можно и без всяких импортов математики и факториалов...
def f(x):
return 2.718281828459045**(1+x)
def tailor(x, eps):
x = 1+x
sum = 1+x
term = x;
n = 2;
while term*term > eps*eps:
term *= x/n
n += 1
sum += term
return sum
a=3.0
b=4.0
krok=(b-a)/10
while a<=b:
print(round(a,2), end=' ')
print(round(f(a),5),end=' ')
print(round(tailor(a,1e-6),5))
a+=krok
Как там таблицу выводить красиво - это я не очень знаю, Python - не мое, смотрите сами. Но вот так считать, не по количеству членов, а по заданной точности - оно как-то надежнее :) Кстати, пятью членами в этом диапазоне значений никак не отделаться - нужно штук 20...
