Моя страница Выйти Войти

Вычислительная математика

Теория приближения Введение в предмет Интерполяция Оптимальная интерполяция Локальная интерполяция Численное дифференцирование Численное интегрирование Наилучшее приближение Тригонометрические полиномы Численные методы для систем ОДУ Численные методы для систем ОДУ I Численные методы для систем ОДУ II Численные методы линейной алгебры Методы последовательного исключения Собственные числа и вектора Методы простой итерации Сингулярные числа Методы подпространства Крылова Численные методы для нелинейных уравнений Численные методы для нелинейных уравнений Метод Ньютона

Вычислительная математика

Содержание курса
Теория приближения Введение в предмет Интерполяция Оптимальная интерполяция Локальная интерполяция Численное дифференцирование Численное интегрирование Наилучшее приближение Тригонометрические полиномы Численные методы для систем ОДУ Численные методы для систем ОДУ I Численные методы для систем ОДУ II Численные методы линейной алгебры Методы последовательного исключения Собственные числа и вектора Методы простой итерации Сингулярные числа Методы подпространства Крылова Численные методы для нелинейных уравнений Численные методы для нелинейных уравнений Метод Ньютона

Локальная интерполяция

До этого момента мы рассматривали глобальную интерполяцию, т.е. интерполяцию одной аппроксимирующей функцией по всему отрезку $[a; b]$. При обсуждении многочленов Лагранжа мы выяснили, что увеличение степени интерполирующего полинома может приводить к паразитным осцилляциям рядом с границами отрезка. Увеличение степени в свою очередь является результатом увеличения количества узлов интерполяции. Одним из выходов из этого положения является локальная интерполяция, где мы делим отрезок $[a; b]$ на маленькие подотрезки и используем интерполяцию полиномом малой степени на каждом из этих подотрезков, после чего ``склеиваем'' полученное множество полиномов в единую функцию, заданную на всем отрезке $[a; b]$. Такую интерполяцию называют кусочной интерполяцией. image/svg+xml Самым простым случаем локальной интерполяции является кусочно-линейная интерполяция, где между каждой парой точек строится линейная функция, соединяющая их. Пример подобной интерполяции показан на рисунке ниже. Очевидным недостатком кусочно-линейной интерполяции является отсутствие гладкости, так как результирующая интерполирующая функция принадлежит $C^0[a; b]$ и, соответственно, имеет прерывную первую производному. Более того, увеличение степени интерполяционных многочленов (что приводит, например, к кусочно-квадратичной интерполяции, кусочно-кубической интерполяции и т.д.) не исправляет эту ситуацию. Проблема гладкости в кусочной интерполяции решается с помощью введения дополнительных условий на значения интерполяционных многочленов в узлах, а именно, условий равенства их производных. На практике самым распространенным случаем является равенство первых и вторых производных в узлах, что требует использования кубических интерполяционных многочленом между парами узлов. Подобная интерполяция называется интерполяцией кубическими сплайнами. Пусть функция $f(x)$ задана в $n$ интерполяционных узлах $a = x_1, x_2$, $\dots$, $x_n = b$ на отрезке $[a; b]$. Тогда кубическим сплайном для функции $f(x)$ называется функция $S(x)$, для которой верно:
  1. $S(x)$ кусочно задана кубическими многочленами $S_i(x)$ на каждом отрезке $[x_i; x_{i+1}]$, $i = 1, \dots, n-1$;
  2. $S_i(x_i) = f(x_i)$ и $S_i(x_{i+1}) = f(x_{i+1})$, $i = 1, \dots, n-1$;
  3. значения смежных многочленов совпадают в общих узлах: $S_i(x_{i+1}) = S_{i+1}(x_{i+1})$, $i = 1, \dots, n-2$;
  4. значения первых производных смежных многочленов совпадают в общих узлах: $S_i^\prime(x_{i+1}) = S_{i+1}^\prime(x_{i+1})$, $i = 1, \dots, n-2$;
  5. значения вторых производных смежных многочленов совпадают в общих узлах: $S_i^{\prime \prime}(x_{i+1}) = S_{i+1}^{\prime \prime}(x_{i+1})$, $i = 1, \dots, n-2$;
  6. заданы граничные условия:
    • естественные граничные условия: $S''(x_1) = S''(x_n) = 0$;
    • граничные условия на касательную: $S'(x_1) = f'(x_1)$ и $S'(x_n) = f'(x_n)$;
image/svg+xml
Так как кубический многочлен задается $4$ константами, для задания кубического сплайна нам необходимо определить $4(n-1)$ констант. Сделаем это в общем виде. Запишем кубический многочлен $S_i(x)$ на отрезке $[x_i, x_{i+1}]$ в форме
\begin{equation} \label{eqref} S_i(x) = a_i + b_i(x - x_i) + c_i(x - x_i)^2 + d_i(x - x_i)^3, \end{equation}
что автоматически дает
\begin{equation} S_i(x_i) = a_i = f(x_i). \end{equation}
Тогда из условия равенства значений смежных многочленов в общих узлах имеем:
\begin{equation} a_{i+1} = S_{i+1}(x_{i+1}) = S_i(x_{i+1}) = a_i + b_i h_i + c_i h_i^2 + d_i h_i^3, \end{equation}
где $h_i = x_{i+1} - x_i$. Так как $S_i^\prime(x_i) = b_i$, из условия равенства значений первых производных в общих узлах смежных многочленов получаем:
\begin{equation} \label{eq:spl_bi_def} b_{i+1} = b_i + 2 c_i h_i + 3 d_i h_i^2. \end{equation}
Наконец, из условия для второй производной имеем:
\begin{equation} \label{eq:spl_ci_def} c_{i+1} = c_i + 3 d_i h_i, \end{equation}
где $c_i = \frac{S_i^{\prime\prime}(x_i)}{2}$. Из последнего уравнения выразим $d_i$ через $c_i$:
\begin{equation} \label{eq:spl_di_def} d_i = \frac{c_{i+1} - c_i}{3 h_i}. \end{equation}
Подставив его в выражение для $a_{i+1}$, имеем:
\begin{equation} \label{eq:spl_a_ii} a_{i+1} = a_i + b_i h_i + \frac{h_i^2}{3}(c_{i+1} + 2 c_i). \end{equation}
Аналогично получаем для $b_{i+1}$:
\begin{equation} \label{eq:spl_b_ii} b_{i+1} = b_i + h_i(c_{i+1} + c_i). \end{equation}
Чтобы получить замыкание для $c_i$, выраженное через $a_i = f(x_i)$, мы подставляем $b_i$ и $b_{i+1}$, выраженное из \eqref{eq:spl_a_ii}
\begin{equation} \begin{split} &b_i = \frac{1}{h_i}(a_{i+1} - a_i) - \frac{h_i}{3}(c_{i+1} + 2 c_i), \\ \Longrightarrow \quad &b_{i-1} = \frac{1}{h_{i-1}}(a_{i} - a_{i-1}) - \frac{h_{i-1}}{3}(c_{i} + 2 c_{i-1}), \end{split} \end{equation}
в уравнение \eqref{eq:spl_b_ii}, записанное для $b_{i}$, что дает
\begin{equation} \label{eq:ci_closure} h_{i-1} c_{i-1} + 2 (h_i + h_{i-1}) c_{i} + h_i c_{i+1} = \frac{3}{h_i}(a_{i+1} - a_i) - \frac{3}{h_{i-1}}(a_{i} - a_{i-1}) \end{equation}
Теперь мы можем составить систему уравнений относительно $c_i$, решив которую можно вычислить недостающие коэффициенты $d_i$ и $b_i$ по формулам \eqref{eq:spl_di_def} и \eqref{eq:spl_bi_def} соответственно. Система уравнений и доказательство единственности ее решения для случая естественных граничных условий рассматриваются в следующей теореме.

Квизы

Запись занятия Презентация