2015-08-28 4 views
1

Я пытаюсь вычислить погрешность для ряда Тейлора я вычисленный с помощью следующего кода:Python: Расчет погрешность Тейлор

# Define initial values, including appropriate value of x for the series input 
import numpy as np 
x = -0.9 
i = 1 
taySum = 0 
ln = np.log(1.9) 
terms = 1 

''' Iterate through the series while checking that 
the difference between the obtained series value and ln(1.9) 
exceeds 10 digits of accuracy. Stop iterating once the series 
value is within 10 digit accuracy of ln(1.9).''' 

while (abs(taySum - ln) > 0.5e-10) == True: 
     taySum += (-1) * (pow(x,i))/(i) 
     i += 1 
     terms += 1 
print ('value: {}, terms: {}'.format(taySum, terms)) 

мне нужно каким-то образом включить функцию ошибки, которая вычисляет KTH и я не уверен, как это сделать. Формула ошибки доступна at this website, которая заключается в следующем:

$$R_n(x; c) = \dfrac{f^{(n+1)}(z)}{(n + 1)!} (x - c)^{n+1}.$$

+0

Можете ли вы добавить математическую формулу или описание метода к вашему вопросу? Я не знаком с математикой за этим, и я уверен, что не могу быть единственным в теге Python. –

+0

Несомненно. Я попытался вычислить ln (1.9) через следующий ряд Тейлора: ln (1 - x) = (-1) * Sum ((x^k)/k)) от k = 1 до бесконечности. Затем мне нужно было остановиться после того, как количество терминов достигнет десятизначной точности ln (1.9). Вот формула остатка (ошибки), которую мне нужно использовать: http://www.millersville.edu/~bikenaga/calculus/remainder-term/remainder-term.html. Я не уверен, как набрать это в Stack Overflow. – BigD4J

+0

Я отредактировал изображение для формулы, пожалуйста, откат моего редактирования, если я включил здесь неправильную вещь. – shuttle87

ответ

1

Там нет никакого способа, чтобы вычислить ошибку в ряд Тэйлора точно, если вы не знаете точное значение его сходящихся к, что-то вроде пер 1.9 мы этого не делаем. Формула, которую вы указали, дает ошибку в виде величины c < z < x (предполагается, что c < x), которая в этом случае находится в диапазоне 0 < z < 0,9, но в остальном неизвестно. Это означает, что мы не можем использовать эту формулу использования, чтобы найти точную ошибку. (в противном случае мы могли бы найти точное значение ln 1.9, что невозможно)

Что делает эта формула, помещается на ошибку. Если вы посмотрите на формулу, вы увидите, что она имеет тот же вид, что и следующий член в серии с аргументом f^(n + 1), измененным с c, точкой, которую вы расширяете, на z, нашим неизвестным параметром. Другими словами, он говорит, что ошибка примерно такого же размера, как и следующий член в серии, или, по крайней мере, будет, если параметр, который вы расширяете, невелик.

Учитывая это, я бы приблизил ошибку, просто вычислив следующий термин в этой серии и заявив, что это в основном это.