Ряд Тейлора: функция как многочлен

Любую гладкую функцию можно приблизить многочленом — и тем точнее, чем больше членов.

Ряд Тейлора представляет функцию как бесконечный многочлен, коэффициенты которого определяются производными функции в точке.

Вот вершина теории рядов и, возможно, самая практичная идея анализа. Компьютеры не умеют «напрямую» вычислять $\sin x$ или $e^x$ — у процессора есть только сложение и умножение. Как же калькулятор находит синус? Он раскладывает функцию в ряд Тейлора — бесконечный многочлен — и складывает несколько первых членов. Многочлены — это то, что машина считает легко.

Идея разложения

Около точки $0$ (ряд Маклорена) функция приближается так: берём её значение, добавляем поправку с первой производной, ещё точнее — со второй, и так далее. Коэффициент при $x^k$ — это $k$-я производная, делённая на факториал $k!$. Самые важные разложения:

$$e^x = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \cdots = \sum_{n=0}^{\infty}\frac{x^n}{n!}$$

$$\sin x = x - \frac{x^3}{3!} + \frac{x^5}{5!} - \cdots$$

$$\cos x = 1 - \frac{x^2}{2!} + \frac{x^4}{4!} - \cdots$$

Заметьте: у синуса только нечётные степени (он нечётная функция), у косинуса только чётные. И вспомните первый урок: первый член разложения синуса — это $x$, ровно тот самый замечательный предел $\sin x \approx x$.

Численная проверка и оценка ошибки

Приблизим $e^x$ и $\sin x$ несколькими членами ряда и сравним с точными значениями.

import math

def exp_taylor(x, terms):
    s, term = 0.0, 1.0
    for n in range(terms):
        if n > 0:
            term *= x / n
        s += term
    return s

x = 1.0
for terms in [2, 4, 6, 8, 10]:
    approx = exp_taylor(x, terms)
    err = abs(approx - math.e)
    print(f"членов={terms:>2}  e^1~{approx:.8f}  ошибка={err:.2e}")

print("истинное e =", math.e)

Вывод:

членов= 2  e^1~2.00000000  ошибка=7.18e-01
членов= 4  e^1~2.66666667  ошибка=5.16e-02
членов= 6  e^1~2.71666667  ошибка=1.62e-03
членов= 8  e^1~2.71825397  ошибка=2.79e-05
членов=10  e^1~2.71828153  ошибка=3.03e-07
истинное e = 2.718281828459045

С каждым добавленным членом ошибка падает на порядки: уже десять слагаемых дают $e$ с семью верными знаками. Факториал в знаменателе растёт стремительно, поэтому хвост ряда быстро тает — отсюда отличная сходимость. Именно так калькулятор «считает» экспоненту.

Как работает под капотом

Каждый член ряда Тейлора «исправляет» приближение, добавляя информацию о следующей производной. Первый член ловит значение, второй — наклон, третий — кривизну, и так далее: многочлен всё точнее повторяет форму функции вблизи точки. Делёж на $k!$ нужен, чтобы при многократном дифференцировании члена $\frac{x^k}{k!}$ получалась ровно нужная производная. В коде мы не считаем факториалы отдельно, а домножаем предыдущий член на $\frac{x}{n}$ — это эффективно и устойчиво.

Частые ошибки

Первая — забыть факториал в знаменателе: без него ряд расходится и даёт чушь. Вторая — применять разложение далеко от точки: ряды Тейлора для синуса и косинуса сходятся всюду, но для многих функций (например $\ln(1+x)$) есть радиус сходимости, за которым ряд бесполезен. Третья — путать чётность: у $\sin$ только нечётные степени, у $\cos$ — только чётные; перепутать — гарантированная ошибка. Четвёртая — считать углы синуса в градусах: разложение, как и всё в анализе, работает в радианах.

Итог

  • Ряд Тейлора приближает функцию многочленом через её производные.
  • $e^x=\sum \frac{x^n}{n!}$; у $\sin$ нечётные степени, у $\cos$ — чётные.
  • Факториал в знаменателе обеспечивает быструю сходимость.
  • Так калькуляторы и процессоры вычисляют элементарные функции.
Проверьте себя
1. Чему равен ряд Тейлора (Маклорена) для e^x?
A1 + x + x² + x³ + ...
B1 + x + x²/2! + x³/3! + ...
Cx − x³/3! + x⁵/5! − ...
D1 − x²/2! + x⁴/4! − ...
2. Какие степени присутствуют в ряде Тейлора для sin(x)?
AТолько чётные
BТолько нечётные
CВсе подряд
DТолько x⁰