Вопрос:
Я пытаюсь аппроксимировать e ^ x, используя ряд Maclaurin в функции my_exp(x), я считаю, что все, что я сделал до сих пор, правильно, но я получаю неправильные приближения ко всему количеству, которое я пробовал.
import math for i in range (x): exp = 1 + ((x**i)/math.factorial(i)) print(exp)
Например, всякий раз, когда я пытаюсь my_exp(12) я получаю 18614.926233766233 вместо 162754.79141900392 Help?
Лучший ответ:
Ваша проблема в том, что ряд e ^ x является бесконечным рядом, поэтому нет смысла только суммировать первые х членов ряда.
def myexp(x): e=0 for i in range(0,100): #Sum the first 100 terms of the series e=e+(x**i)/math.factorial(i) return e
Вы также можете определить точность вашего результата и получить лучшее решение.
def myexp(x): e=0 pres=0.0001 s=1 i=1 while s>pres: e=e+s s=(x**i)/math.factorial(i) i=i+1 return e Ответ №1
Чтобы скопировать термины серии, вам нужно заменить назначение на exp линейкой, такой как:
exp = exp + ((x**i)/math.factorial(i))