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: При , оцінимо точність формул чисельного диференціювання за формулою Тейлора.
-
Нехай . Тоді
\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}
де .
-
Нехай . Тоді, розписавши розклад по формулі Тейлора до третьої похідної, маємо оцінку:
\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: Дослідити похибку чисельного диференціювання для , , вибрати оптимальний крок , дати оцінку .