7. Чисельне диференціювання

7.1. Побудова формул чисельного диференціювання

Задача чисельного диференціювання виникає у випадку коли необхідно обчислити похідну функції, значення якої задані таблицею. Нехай задано

\begin{equation} f_i = f(x), \quad i = \overline{0,n}, \quad x_i \in [a, b]. \end{equation}

Проінтерполюємо ці значення. Тоді

\begin{equation} \label{eq:7.1} f(x) = L_n(x) + r_n(x), \end{equation}

де залишковий член у формі Ньютона має вигляд:

\begin{equation} r_n(x) = f(x; x_0, \ldots, x_n) \omega_n(x), \end{equation}

де \begin{equation} \omega_n(x) = \Prod_{i = 0}^n (x - x_i). \end{equation}

Звідси

\begin{equation} \label{eq:7.2} f^{(k)}(x) = L_n^{(k)}(x) + r_n^{(k)}(x). \end{equation}

За наближене значення похідної в точці беремо , .

Оцінимо похибку наближення — . За формулою Лейбніца:

\begin{equation} \label{eq:7.3} r_n^{(k)}(x) = \Sum_{j = 0}^k C_k^j f^{(j)}(x; x_0, \ldots, x_n) \omega_n^{(k - j)}(x). \end{equation}

З властивості розділених різниць маємо для :

\begin{equation} f^{(j)}(x; x_0, \ldots, x_n) = j! \cdot f ( \underset{j + 1}{\underbrace{x, \ldots, x}}; x_0, \ldots, x_n ) = \frac{j!}{(n + j + 1)!} \cdot f^{(n + j + 1)}(\xi_j), \end{equation}

де всі .

Остаточно вираз для похибки наближення похідної має вигляд:

\begin{equation} \label{eq:7.4} r_n^{(k)}(x) = \Sum_{j = 0}^k \frac{k!}{(k - j)! (n + j + 1)!} \cdot f^{(n + j + 1)})(\xi_j) \omega_n^{(k - j)}(x). \end{equation}

Оцінка похибки матиме вигляд:

де .

Нагадаємо, що процес інтерполювання розбіжний. Крім того, якщо , то . Тому не можна брати великими значення та . Як правило , іноді . Відповідно, , або , або .

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

\begin{equation} \omega_n(x) = (x - x_0) \cdot \ldots \cdot (x - x_n) = O(h^{n + 1}), \end{equation}

де .

Перша похідна від має порядок на одиницю менше, тобто

\begin{equation} \omega_n’(x) = O(h^n). \end{equation}

Далі

\begin{equation} r_n^{(k)}(x) = O(h^{n + 1 - k}), \end{equation}

тому

\begin{equation} f^{(k)}(x) - L_n^{(k)} = O(h^{n + 1 - k}). \end{equation}

При умові останній вираз збігається до нуля, тобто

\begin{equation} \label{eq:7.5} f^{(k)}(x) - L_n^{(k)}(x) \xrightarrow[h \to 0]{} 0. \end{equation}

Далі

\begin{equation} r_n^{(k)}(x) = \underset{O(h^{n + 1 - k})}{\underbrace{f(x; x_0, \ldots, x_n) \omega_n^{(k)(x)}}} + \underset{O(h^{n + 2 - k})}{\underbrace{\Sum_{j = 1}^k C_k^j f^{(j)}(x; x_0, \ldots, x_n) \omega_n^{(k - j)}(x)}}. \end{equation}

Якщо

\begin{equation} \omega_n^{(k)}\left(\overline{x}\right) = 0, \end{equation}

то

\begin{equation} \label{eq:7.6} r_n^{(k)}\left(\overline{x}\right) = O(h^{n + 2 - k}). \end{equation}

Точки називаються точками підвищеної точності формул чисельного диференціювання.

Приклад 1: Виведемо формули чисельного диференціювання для , .

Виберемо точки , інтерполяційний багаточлен має вигляд:

\begin{equation} L_1(x) = f_0 + (x - x_0) \cdot \frac{f_1 - f_0}{h}. \end{equation}

Для похідної отримаємо вираз:

\begin{equation} f’(x) \approx L_1’(x) = \frac{f_1 - f_0}{h}, \quad x \in [x_0, x_1]. \end{equation}

Розписавши за формулою Тейлора, отримаємо вираз для похибки:

\begin{equation} r_1’(x) = \frac{f^{(3)}(\xi_1)}{3!} \cdot (x - x_0) (x - x_1) + \frac{f^{(2)}(\xi_0)}{2!} \cdot (2 x - x_1 - x_0) = O(h). \end{equation}

Якщо , то . Тобто — точка підвищеної точності. Більш точно (див. приклад 3):

\begin{equation} \left| r_1’\left(\overline{x}\right) \right| \le \frac{h^2 M_3}{24}, \end{equation}

де .

Приклад 2: Аналогічно виведемо формули чисельного диференціювання для , .

Виберемо точки , , . Інтерполяційний поліном має вигляд:

\begin{equation} L_2(x) = f_0 + (x - x_0) \cdot \frac{f_1 - f_0}{h} + (x - x_0) (x - x_1) \cdot \frac{f_2 - 2 f_1 + f_0}{2 h^2}. \end{equation}

Тоді замінимо , .

Якщо сюди підставити , то отримаємо . Для точки маємо . Для точки маємо , . Для похибки маємо оцінку .

Позначимо

Замість можна взяти будь-яке із значень: , або .

Задача 21: Знайти точки підвищеної точності формул чисельного диференціювання для , і оцінити похибку в цих точках.

Приклад 3: При , оцінимо точність формул чисельного диференціювання за формулою Тейлора.

  1. Нехай . Тоді

    \begin{equation} f’(x_0) - \frac{f(x_0 + h) - f(x_0)}{h} = f’(x_0) - \frac{1}{h} \left( f_0 + h f_0’ + \frac{h^2}{2} f’’(\xi) - f_0 \right) = - \frac{h}{2} \cdot f’’(\xi), \end{equation}

    \begin{equation} \left| f’(x_0) - \frac{f_1 - f_0}{h} \right| \le \frac{M_2 h}{2}, \end{equation}

    де .

  2. Нехай . Тоді, розписавши розклад по формулі Тейлора до третьої похідної, маємо оцінку:

    \begin{equation} \left| f’\left(\overline{x}\right) - \frac{f_1 - f_0}{h} \right| \le \frac{h^2 M_3}{24}, \end{equation}

    де .

Задача 22: Показати, що якщо , то .

Приклад 4: При , маємо:

\begin{equation} \begin{aligned} L_2(x) &= f_{i - 1} + \frac{f_i - f_{i - 1}}{h} \cdot (x - x_{i - 1}) + \newline &\quad + \frac{f_{i + 1} - 2 f_i + f_{i - 1}}{h^2} \cdot (x - x_{i - 1}) \cdot (x - x_i) \end{aligned} \end{equation}

Для оцінимо точність формул чисельного диференціювання за формулою Тейлора:

де .

Отже,

\begin{equation} \left\vert f_1’’ - \frac{f_2 - 2 f_1 + f_0}{h^2} \right\vert \le \frac{M_4 h^2}{12}. \end{equation}

Задача 23: Побудувати формулу чисельного диференціювання , у випадку нерівновіддалених вузлів: , , . Оцінити точність формули. Знайти точки підвищеної точності оцінити похибку.

Крім інтерполяційних формул для чисельного диференціювання можна застосовувати сплайни. Нехай . Побудуємо інтерполяційний сплайн першого степеня , для якого має місце оцінка , . Звідси при маємо .

Для кубічного інтерполяційного сплайну маємо для першої та другої похідних:

\begin{equation} \left| f^{(k)}(x) - s_3^{(k)}(x) \right| - O(h^{4 - k}), \quad k = 1, 2. \end{equation}

7.2. Про обчислювальну похибку чисельного диференціювання

Нехай значення функції обчисленні з деякою похибкою. Постає питання про вплив цих похибок на значення похідних обчислених за формулами чисельного диференціювання.

Перед цим зробимо зауваження про вплив збурення функції на значення звичайних похідних.

Нехай і її збурення має вигляд:

\begin{equation} \tilde f(x) = f(x) + \frac{\sin (\omega x)}{n}. \end{equation}

При маємо , звідси . Таким чином це малі збурення. Маємо . Нехай , тоді

\begin{equation} \left| f(x) - \tilde f(x)\right|\void_{C([a,b])} = \frac{|\omega|}{n} = n \xrightarrow[n \to \infty]{} \infty. \end{equation}

Цей приклад ілюструє нестійкість оператора диференціювання. Є сподівання, що ця нестійкість має місце і для чисельного диференціювання.

Нехай , , , . Розглянемо вплив похибок на конкретних формулах чисельного диференціювання.

Приклад 1: Оцінімо вплив збурень на похибку обчислення першої похідної , .

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

Мінімізуємо вплив цих збурень. Позначимо

\begin{equation} \varphi(h) = \frac{M_2 h}{2} + \frac{2 \delta}{h}. \end{equation}

Тоді мінімум цієї функції досягається для таких :

\begin{equation} \varphi’(h) = \frac{M_2}{2} - \frac{2 \delta}{h^2} = 0, \end{equation}

звідки . При такому значенні оцінка похибки така:

\begin{equation} \varphi(h_0) = 2 \sqrt{M_2 \delta} = O\left(\sqrt{\delta}\right) \xrightarrow[\delta \to 0]{} 0. \end{equation}

Приклад 2: Подивимося на вплив збурень на похибку обчислення першої похідної при використанні центральної різницевої похідної.

З рівняння маємо: , . Отже,

Таким чином швидкість збіжності при похибки формули чисельного диференціювання центральною похідною вища ніж для формули з прикладу 1 (похідна вперед або назад).

Задача 24: Дослідити похибку чисельного диференціювання для , , вибрати оптимальний крок , дати оцінку .