Неправильные значения при расчете аппроксимации Тейлора для показателя степени в Python - PullRequest
0 голосов
/ 29 сентября 2019

Я написал две функции, которые должны вычислять e ^ (- x):

def taylor1(x, n=12):
    sum = 0
    for i in range(n):
        sum += ( (-x)**i) / math.factorial(i)
    return sum

def taylor2(x, n=12):
    sum = 0
    for i in range(n):
        sum += ( x**i) / math.factorial(i)
    return 1/sum

Первая напрямую вычисляет e ^ (- x), а вторая - 1 / e ^ (x),Теоретически обе функции должны возвращать одинаковые значения, но это не так:

Вывод для taylor1 ():

Exponent value for x=0: 1.0
Exponent value for x=5: -0.3592084034792353
Exponent value for x=10: -1162.6235369568703
Exponent value for x=15: -122924.17654220779
Exponent value for x=20: -3271048.1165624503
Exponent value for x=25: -41115385.050203174
Exponent value for x=30: -322535734.84415585

Вывод для taylor2 ():

Exponent value for x=0: 1.0
Exponent value for x=5: 0.006774891102970596
Exponent value for x=10: 6.515712399651421e-05
Exponent value for x=15: 1.655747452084087e-06
Exponent value for x=20: 9.637493883917857e-08
Exponent value for x=25: 9.808057158702018e-09
Exponent value for x=30: 1.4649434456831522e-09

Таким образом, значения, вычисленные с помощью taylor2(), намного точнее.Почему это происходит?

Примечание: для значений x = 1, 2, 3, 4 обе функции выдают примерно одинаковые значения.После этого значения становятся заметно другими

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...