Вычисление функций разложением в ряд Тейлора
Помогите, пожалуйста, решить проблему с вычислением функций разложением в ряд Тейлора. Первый столбец отвечает за значения аргумента, второй столбец за значения функции в точке. Третий столбец с неверными числами: там должны быть более точные значения функции (примерно равные числам со второго столбца), так как они вычисляются разложением функции в ряд Тейлора.
import math as m1
a = -0.1
b = 1
eps = 0.00001
def f(a):
return (1/(m1.sqrt(1+a)))
def doublefactorial(n):
if n <= 0:
return 1
else:
return n * doublefactorial(n-2)
def test(a):
n=2
an=a
S=0.0
while abs(an)>=eps:
S+=an
an*= (-1)**(n-1)*(doublefactorial(2*n-1))*(a**(n))/(doublefactorial(2*n))
n+= 1
return S
print(" xi | f(xi)")
print("---------------------------------------------------------------------")
while a < b:
if a != -0.1:
print("", round(a, 2), "|", round(f(a), 3), round(test(a),3))
else:
print(round(a, 2), "|", round(f(a), 3), round(test(a),3))
a += 0.1
print("---------------------------------------------------------------------")
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
import math as m1
def f(a):
return (1/(m1.sqrt(1+a)))
def test(x,eps):
sum = 1
n = 1
t = 1
while t*t > eps*eps:
t *= -(2*n-1)*x/(2*n)
n += 1
sum += t
return sum
a = -0.1
b = 0.9
eps = 0.00001
print(" xi | f(xi)")
print("---------------------------------------------------------------------")
while a < b:
if a != -0.1:
print("", round(a, 2), "|", round(f(a), 3), round(test(a,eps),3))
else:
print(round(a, 2), "|", round(f(a), 3), round(test(a,eps),3))
a += 0.1
print("---------------------------------------------------------------------")
Только учтите, что ряд сходится, как у вас в условии написано, при -1<x<1, так что если написать
b = 1
то вычисления зациклятся - ряд не будет сходиться.

