22Формула Тейлора с остаточным членом в форме Лагранжа

22.1Приближение значений функций с помощью тейлоровских многочленов

Формула Тейлора с остаточным членом в форме Пеано, которую мы обсуждали на прошлой лекции — мощный результат про локальное поведение функций. Однако, он записывается в терминах -малых, то есть утверждает что-то про поведение функции при . Если мы зафиксируем конкретный , эта формула не говорит ничего. В частности, она не позволяет сделать никакого утверждения о том, что тейлоровские многочлены приближают значения соответствующих функций с ростом степени. Однако зачастую это является правдой.

22.1.1Хорошее приближение: синус

Пример 1. Рассмотрим функцию . Найдём её производные: дальше процесс зацикливается. Пусть . Тогда производные в точке образуют периодическую последовательность (начиная с нулевой производной, то есть со значения функции): . Тейлоровский многочлен степени в окрестности точки для синуса имеет вид:
Возьмём несколько тейлоровских многочленов разных степеней и построим их графики вместе с графиком синуса, см. рис. 22.1.
import matplotlib.pyplot as plt
import numpy as np
import qqmbr.odebook as ob
# see https://github.com/ischurov/qqmbr/blob/master/qqmbr/odebook.py

def f(x):
    return np.sin(x)
def T(x, k):
    return sum((-1) ** i * x ** (2 * i + 1) / 
                np.math.factorial(2 * i + 1) for i in range(0, k + 1))

x = np.linspace(-5, 5, 211)
plt.figure(figsize=(6, 5))
plt.plot(x, f(x), label='$y=f(x)$', lw=2)
plt.plot(x, T(x, 0), label='$y=T_1(x)$', lw=1)
plt.plot(x, T(x, 1), label='$y=T_3(x)$', lw=1)
plt.plot(x, T(x, 2), label='$y=T_5(x)$', lw=1)
plt.plot(x, T(x, 3), label='$y=T_7(x)$', lw=1)
plt.plot(x, T(x, 4), label='$y=T_9(x)$', lw=1)
plt.legend(loc=4)

ob.center_spines(grid=False, minor_ticks=False)
ob.settle_axes(xmin=-5.3, xmax=5.3, ymin=-2.5, ymax=2.5, 
               xlabel="x", ylabel="y") 
plt.xticks([-np.pi / 2, np.pi / 2], [r'$-\pi / 2$', r'$\pi / 2$'])
plt.yticks([])
Рис. 22.1: Приближение тейлоровскими многочленами
На графике мы видим, что каждый следующий тейлоровский многочлен приближает синус всё лучше и лучше, причём на всё большем и большем промежутке. Например, если бы я захотел посчитать значение (мы знаем, что это 1, но вдруг забыли), используя для этого тейлоровские многочлены, многочлен первой степени (линейное приближение) никуда бы не годился, многочлен третьей степени дал бы ощутимую погрешность, пятой — погрешность, не видимую на графике, а девятый — ошибку в шестом знаке после запятой.
import numpy as np
def T(x, k):
    return sum((-1) ** i * x ** (2 * i + 1) / 
                np.math.factorial(2 * i + 1) for i in range(0, k + 1))
print("n\tT_n(pi/2)")
for k in range(0, 5):
    print(f"{2 * k + 1}\t{T(np.pi / 2, k):0.7f}")
n	T_n(pi/2)
1	1.5707963
3	0.9248322
5	1.0045249
7	0.9998431
9	1.0000035
Итак, в случае синуса, логично было бы предположить, что верно утверждение:
для любых . Заметим, что это утверждение никак не следует из формулы Тейлора с остаточным членом в форме Пеано — там речь про предел при , а здесь мы взяли конкретный , зафиксировали его и рассматриваем предел при .

22.1.2Приближение работает не везде:

Пример 2. Повторим предыдущий пример для функции . Будем записывать тейлоровские многочлены в окрестности точки . Имеем: При каждом дифференцировании степень уменьшается на 1 и сносится в виде коэффициента. Значит, и тейлоровский многочлен степени имеет вид:
Построим график логарифма и его тейлоровских многочленов. Для наглядности используем анимацию, см. рис. 22.2.
import matplotlib.pyplot as plt
import numpy as np
import qqmbr.odebook as ob
# see https://github.com/ischurov/qqmbr/blob/master/qqmbr/odebook.py

fig = plt.figure()
camera = Camera(fig)
def f(x):
    return np.log(x)
def T(x, n):
    return sum((-1) ** (i + 1) * (x - 1) ** i / i 
        for i in range(1, n + 1))

x = np.linspace(-1, 5, 511)
for k in range(1, 20):
    log = plt.plot(x, f(x), label='$y=f(x)$', lw=2, color='C0')
    t = plt.plot(x, T(x, k), label=f'$y=T_{{{k}}}(x)$', lw=1,
        color='C1')
    plt.legend(t, [f'$y=T_{{{k}}}(x)$'], loc=4)

    ob.center_spines(grid=False, minor_ticks=False)
    ob.settle_axes(xmin=-1, xmax=5.3, ymin=-4, ymax=3, 
                   xlabel="x", ylabel="y") 
    plt.xticks([1, 2])
    plt.yticks([0], [''])
    camera.snap()
animation = camera.animate(interval=300)
Рис. 22.2: Приближение тейлоровскими многочленами
Мы видим, что с ростом приближение становится всё лучше и лучше — но только на множестве . Если , приближение становится, наоборот, всё хуже и хуже!

22.1.3Примерчик посложнее:

Пример 3. Рассмотрим функцию
Докажем, что она дифференцируема сколько угодно раз в нуле и найдём её тейлоровские многочлены в окрестности нуля.

Чтобы найти первую производную в нуле, нам придётся воспользоваться определением — просто так применить стандартные правила дифференцирования не получится, т.к. функция по-разному опрделена в нуле и вне нуля.

Когда выражение и можно сделать замену :
(На самом деле, если , перед корнем будет минус, но это ни на что не влияет.) Мы знаем, что экспонента стремится к бесконечности быстрее, чем любая степенная функция, и значит этот предел равен нулю. (Можно воспользоваться, например, правилом Лопиталя.)

Вторую производную тоже нужно находить по определению:

Мы знаем, что . Однако чтобы найти этот предел, нам нужно знать, чему равняется и в точках, отличных от нуля. Для этих точек мы можем найти по стандартным правилам — если , то и эту функцию можно просто продифферецировать:
Подставляя это в (22.1), имеем:
Аналогично предыдущему, экспонента стремится к нулю быстрее любой степени, и значит этот предел тоже равен нулю.

Дальше можно продолжать в том же духе. Каждый раз будет получаться 0. (Докажите, что это действительно так!)

Итак, мы получаем, что все производные в нуле равны нулю. Это означает, что тейлоровский многочлен этой функции тождественно нулевой: для всякого , для всех .

Функция при этом принимает ненулевые значения при всех . То есть о стремлении к при нет и речи.

import matplotlib.pyplot as plt
import numpy as np
import qqmbr.odebook as ob
# see https://github.com/ischurov/qqmbr/blob/master/qqmbr/odebook.py

def f(x):
    return np.exp(-1 / x**2)

x = np.linspace(-2, 2, 211)
plt.figure(figsize=(6, 5))
plt.plot(x, f(x), label='$y=f(x)$', lw=2)

ob.center_spines(grid=False, minor_ticks=False)
ob.settle_axes(xmin=-2, xmax=2, ymin=-0.1, ymax=1.1, 
               xlabel="x", ylabel="y") 
plt.xticks([-1, 1])
plt.yticks([1])
Рис. 22.3: Функция с нулевыми производными. Кажется, что вблизи нуля у неё целый отрезок нулевых значений, но это иллюзия: при . Просто она стремится к нулю о-о-очень быстро.

Подведём промежуточный итог. Тейлоровские многочлены приближают функцию, по которой они построены, вблизи точки , то есть когда . Но это не означает, что для фиксированного значения , будет приближаться к при больших значениях . Хотя часто это верно. Когда именно? Об этом — следующая теорема.

22.2Остаточный член в форме Лагранжа

Мы сформулируем теорему, которая позволяет доказывать оценки на остаточный член, то есть разницу между значением функции и значением её тейлоровского многочлена, при фиксированных .

Теорема 1. Пусть функция определена в окрестности точки . Пусть точка принадлежит этой окрестности и для определенности . Предположим также, что функция имеет производную на интервале и производных на отрезке , причём непрерывна на . Обозначим через тейлоровский многочлен функции в окрестности точки . Тогда найдётся такая точка , что

Замечание 1. Если , и формула (22.2) превращается в формулу (17.3) из лекции 17, то есть наша теорема — это обобщение теоремы Лагранжа о конечных приращениях.

Замечание 2. Прежде, чем доказывать эту теорему, покажем, как мы её будем применять. Вернёмся к примеру 1. Пусть , . Поскольку любая производная синуса это либо сам синус, либо косинус (со знаком плюс или минус), для любого ,
Значит остаточный член в формуле (22.2) оценивается таким образом:
При фиксированном значении , степенная функция растёт медленнее, чем , и
Значит для любого фиксированного ,
то есть тейлоровские многочлены синуса сходятся к синусу. Иными словами, синус можно разложить в ряд:
Это уже точное и честное равенство, здесь нет никаких остаточных членов (поскольку взята бесконечная сумма).

Этот результат очень важен для практики. Собственно, когда вы просите компьютер посчитать значение синуса в какой-то точке, вместо синуса он вычисляет значение соответствующего тейлоровского многочлена достаточно большой степени.

Доказательство. Теперь можно перейти к доказательству. Оно будет очень похоже на доказательство теоремы Лагранжа о конечных приращениях.

Для начала, обозначим остаточный член (каким бы он ни был) через :

Заметим, что для всех :
поскольку многочлен Тейлора строился по функции в окрестности точки , и значит его значение, а также первые производных в точке совпадают со значениями и производными функции .

Рассмотрим функцию

где — некоторая константа, которую мы выберем позже. Заметим, что для всех
Действительно, для это верно, а первые производных добавки в точке равны нулю (продифференцируйте и подставьте!).

Выберем теперь таким образом, чтобы . В этом случае

то есть
Теперь заметим, что функция удовлетворяет условиям теоремы Ролля на отрезке . Действительно, дифференцируема на отрезке , а значит и непрерывна на нём, а и — многочлены, они дифференцируемы где угодно сколько угодно раз. Значит, также дифференцируема и непрерывна на отрезке . Дополнительно по построению . Следовательно существует такая точка , что
Теперь рассмотрим функцию на отрезке . Она снова удовлетворяет условию теоремы Ролля! Действительно, и . Функция непрерывна на отрезке и значит на . (Если , непрерывность первой производной на всём отрезке явно сформулирована в условии теоремы, а если , то она следует из существования второй производной на всём отрезке, и значит дифференцируемости первой производной.)

Значит существует такая точка , что .

Продолжая в том же духе, мы будем строить последовательность точек , удовлетворяющих условиям и .

Сколько шагов так можно сделать? Заметим, что условия теоремы Ролля будут выполняться для всех производных функции вплоть до . В частности, мы явно потребовали, чтобы была непрерывна на отрезке , а значит и тоже будет непрерывной на этом отрезке, и, следовательно, и на отрезке . Значит в нашем алгоритме мы дойдём до , то есть найдётся такая точка , что

Покажем, что — это и есть искомая точка , существование которой утверждается в теореме. Для этого нужно найти -ю произодную :
Действительно, — это многочлен степени , при -кратном дифференцировании он обнуляется, а превращается в константу.

Значит в точке имеем:

Теперь нужно вспомнить, чему равняется , см. (22.3). Получается такая штука:
или
То есть если положить , получится ровно то, что мы обещали. Доказательство завершено.

22.2.1Бонус: формула Тейлора и равноускоренное движение

Приведенное выше доказательство — самое простое из всех, что я знаю. Но у меня всегда есть ощущение, что я достаю кролика из шляпы, когда я его завершаю, и после его прочтения всё равно нет ощущения, что становится понятно, почему формула именно такая. Возможно, следующая интерпретация прольёт на неё чуть больше света.

Рассмотрим движение с постоянным ускорением. Пусть в момент времени мы находились в точке и в этот момент скорость движения составляла . Пусть также на всём промежутке времени, который нас интересует, ускорение равнялось . Тогда закон движения задаётся следующим образом:

Действительно, если продифференцировать правую часть и подставить , получим, что положение и скорость в начальный момент времени совпадают с искомыми, а если продифференцировать дважды, то мы получим константу .

Слагаемое показывает, насколько сильно мы отклоняемся от движения с постоянной скоростью к моменту времени .

Рассмотрим теперь некоторый другой закон движения , уже не обязательно происходящий с равномерным ускорением. Мы приближаем его движением с постоянной скоростью:

и интересуемся, насколько сильно реальное движение уходит от этого движения с постоянной скоростью к моменту времени . Это и есть остаточный член .

Пусть ускорение непрерывно, то есть непрерывно на всём отрезке . В каких-то точках оно достигает своего максимума и минимума , а также принимает все значения из отрезка .

Если я стартую в точке с начальной скоростью и всю дорогу буду двигаться с максимально возможным ускорением , к моменту я попаду в точку

а если с минимально возможным ускорением — то в точку
Реальное положение находится где-то между этими двумя крайностями. (Это утверждение кажется очевидным; его аккуратное обоснование несложно и опирается на теорему Лагранжа.)
Пусть непрерывно меняется от до . Тогда для какого-то значения ,
Но с другой стороны если , это какое-то значение ускорения между минимальным и максимальным. Из непрерывности ускорения, найдётся момент времени , при котором . В этом случае
а это и есть формула Тейлора с остаточным членом в форме Лагранжа (для ).

Аналогичным образом можно доказать эту формулу для любого — только вместо ускорения нужно будет брать -ю производную . Заметим, что наше доказательство использует схожие идеи: функцию можно записать в виде

и из такого представления видно, что она показывает, насколько движение по закону отличается от движения с постоянной -й производной, и мы специально так подбираем эту производную (константу ), чтобы оказаться в той же точке, в которой мы оказались при движении по закону . Это соответствует выбору в рассуждении выше.

22.3Заключение

Формула Тейлора с остаточным членом в форме Лагранжа позволяет доказывать, что некоторые функции представляются в виде бесконечных сумм — рядов Тейлора. Трудно переоценить значение этого факта для развития математики: ведь что может быть проще, чем степенной ряд — прямое обобщение многочлена, простейшего класса математических функций? Анализ функций, представимых в виде своих рядов Тейлора (они называюется аналитическими) — большая и красивая область математики. Однако, как показывает пример 3, не все функции являются аналитическими. И у этого факта есть важные следствия — в частности, можно склеивать гладкие функции из кусочков, сохраняя их гладкость.