- •Таганрогский государственный радиотехнический университет
- •Введение
- •1 Численное интегрирование
- •1.1 Основные методы численного интегрирования
- •1.2 Пример выполнения лабораторной работы №1
- •1.3 Варианты заданий к лабораторной работе №1
- •2 Методы решения нелинейных уравнений
- •2.1 Метод половинного деления
- •2.2 Метод хорд (метод линейной интерполяции)
- •2.3 Метод секущих
- •2.4 Метод Ньютона
- •2.5 Пример выполнения лабораторной работы №2
- •2.6 Варианты заданий к лабораторной работе №2
- •3 Прямые методы решения систем линейных алгебраических уравнений
- •3.1 Метод Гаусса для решения систем линейных алгебраических уравнений.
- •3.2. Алгоритм lu-разложения.
- •3.3. Метод прогонки.
- •3.4 Пример выполнения лабораторной работы №3
- •Вводим функцию, реализующую алгоритм прогонки
- •3.5 Варианты заданий к лабораторной работе №3
- •4 Итерационные методы решения систем линейных алгебраических уравнений
- •4.1. Итерационные методы Якоби и Зейделя.
- •4.2. Каноническая форма итерационных методов.
- •4.3. Вариационно-итерационные методы решения слау.
- •4.4 Пример выполнения лабораторной работы №4
- •Задаем матрицу коэффициентов и столбец свободных членов
- •Вводим функцию, реализующую алгоритм метода Зейделя
- •4.5 Варианты заданий к лабораторной работе №4
- •5 Методы решения задачи Коши
- •5.1. Метод Эйлера.
- •5.2. Метод Рунге-Кутта.
- •Пример выполнения лабораторной работы №5
- •5.4 Варианты заданий к лабораторной работе №5
- •6 Методы приближения функций
- •6.1. Интерполяционный полином Лагранжа и Ньютона.
- •6.2 Интерполяционный кубический сплайн.
- •6.3 Понятие о методе наименьших квадратов.
- •6.4 Интерполяционный тригонометрический полином
- •6.5 Пример выполнения лабораторной работы №6
- •Интерполяционный полином Лагранжа.
- •6.6 Варианты заданий к лабораторной работе №6
6 Методы приближения функций
Интерполяция в общем понимании - это нахождение промежуточных значений величины по некоторым известным ее значениям.
Интерполяция применяется во многих задачах, связанных с вычислениями, например:
1) восстановить функцию y(x) для всех значений x на отрезке [a,b], если известны ее значения в некотором конечном числе точек этого отрезка;
2) заменить функцию близким выражением, удобным для проведения вычислений, если исходная функция представлена выражением, трудным для вычислений;
3) выполнить субтабулирование, т.е. сгущение таблицы значений;
4) решить задачу обратного интерполирования, т.е. по заданной таблице yi=y(xi) значений функции найти x как функцию от y.
В результате возникает следующая математическая задача: пусть на отрезке [a,b] задана сетка , в ее узлах заданы значения функций y(x), равные y(x0) = y0, y(x1) = y1, …, y(xi) = yi, …, y(xn) = yn. Требуется построить интерполянту, т.е. функцию (x), совпадающую с функцией y(x) в узлах сетки
(xi) = yi, i = 0, 1, …, n . |
(6.1) |
Интерполянта строится, как правило, в виде линейной комбинации некоторых линейно независимых на отрезке [a,b] элементарных функций
{k(x)}, k = 0, 1, …, n;
|
(6.2) |
где ck -неизвестные коэффициенты. Из условия (6.1) для определения этих коэффициентов получим систему (n+1) уравнений
|
(6.3) |
Система функций {k(x)}, k = 0, 1, …, n такова, что при любом выборе сетки узлов отличен от нуля определитель системы (6.3)
Поэтому из системы (6.3) однозначно определяются коэффициенты ск.
В качестве функции (x) в дальнейшем будем брать алгебраический многочлен степени n, т.е. (x) = Pn(x). В этом случае интерполяция называется алгебраической. Алгебраическая интерполяция является наиболее распространенной, т.к. многочлены легко вычисляются, их легко дифференцировать и интегрировать. В этом случае в качестве системы линейно независимых функций {k(x)} обычно выбирают следующую систему: k(x) = xk, k = 0, 1, …, n.
Двух различных интерполяционных полиномов одной и той же степени n существовать не может. Действительно, предположив обратное, приходим к выводу, что разность двух таких многочленов, являющаяся многочленом степени не выше n , имеет (n+1) корней, следовательно, равна тождественно нулю.
6.1. Интерполяционный полином Лагранжа и Ньютона.
Интерполяционный полином Лагранжа.
Поставим следующую задачу: построить многочлен Pn(x) степени n, который в (n+1) данной точке x0, x1, ... xn , называемых узлами интерполяции, принимает данные значения y0, y1, ... yn .
В данном случае речь идет о построении многочлена Pn(x) степени n, который в определенном смысле "близок" к исходной функции y(x). Известно, что любая непрерывная [a,b] функция y(x) может быть хорошо приближена полиномом Pn(x). Имеет место следующий результат.
Теорема. Для любого > 0 существует полином Pn(x) степени n = n(), такой, что
.
Если в качестве базиса {k(x)} взять базис, состоящий из функций I, x, x2, ... , xn , то интерполяционный полином имеет вид
. |
(6.4) |
Используя условия интерполяции (6.1), имеем для определения коэффициентов ck систему уравнений
c0 + c1x0 + … + cn = y0
c0 + c1x1 + … + cn = y1;
………….
c0 + c1xn + … + cn = yn.
Определителем этой системы является отличный от нуля определитель Вандермонда
Отсюда следует единственность представления (6.4).
Более удобным для вычислений является базис полиномов Лагранжа {k(x)} степени n относительно x, удовлетворяющий следующим условиям:
.
Искомый многочлен запишется согласно представлению (6.2) в виде
. |
(6.5) |
Поскольку x0, x1, ... , xk-1, xk+1, ... , xn - нули многочлена k(x), а также, учитывая, что k(xk) = 1, имеем
. |
(6.6) |
Формула (6.5) с учетом (6.6) имеет вид
. |
(6.7) |
или
. |
(6.8) |
Многочлен, определенный формулой (6.7), называется интерполяционным полиномом Лагранжа, а элементы базиса {k(x)} из формулы (6.6) - коэффициентами Лагранжа.
Формулу (6.7) можно записать в более компактной форме, если ввести обозначение
(x) = (x – x0) (x – x1) … (x – xn).
Так как
'(xk) = (xk – x0) (xk – x1) … (xk – xk-1) (xk – xk+1) … (xk – xn),
то
k(x) = (x) / ((x – xk) (xk)) .
Тогда
. |
(6.9) |
Итак, в результате интерполирования функции мы заменили эту функцию полиномом (6.9), совпадающим с ней в узлах интерполяции x0, x1,...,xn. В остальных точках отрезка [a, b] разность R(x) = y(x) –
– Pn(x) называется остаточным членом интерполяции, представляющим погрешность метода, определяемую следующей теоремой.
Теорема. Если функция y(x) имеет на отрезке [a,b] непрерывные производные до (n+1)-го порядка включительно, то остаточный член интерполяции R(x) определяется формулой
R(x) = y(n+1)()(x)/(n+1)!, a < < b.
Число арифметических операций для вычисления значений функции y(x) по формуле (6.7) равно Q = 4n (n + 1) 4n2.
Рассмотрим случай равноотстоящих узлов интерполяции, т.е. когда xi – xi-1 = h, i = = . Сделав замену x=x0+ht, имеем при t0=0,t1=1,...,tn=n, x-xk=h(t-k),
(x) = hn+1t(t – 1) … (t – n), (xk) = (-1)n-kk!(n – k)!hk.
Тогда выражение (6.9) для интерполяционного многочлена Лагранжа принимает вид
.
Интерполяционный полином Ньютона.
Пусть y0 = y(x0), y1 = y(x1), …, yn = y(xn) - значения функции y(x) в узлах интерполяции. Тогда разности
y0 = y1 – y0, y1 = y2 – y1, …, yn-1 = yn – yn-1
называются конечными разностями первого порядка или просто первыми разностями.
Разностями второго порядка или вторыми разностями называются разности первых разностей, т.е.
2y0 = y1 - y0, 2y1 = y2 - y1, …, 2yn-2 = yn-1 - yn-2.
Аналогично определяются последующие разности. Например, разность (к+1)-го порядка получается из разности k-го порядка по формулам
k+1y0 = ky1 - ky0, k+1y1 = ky2 - ky1 .
Разности высших порядков выражаются через yi следующими формулами:
Введем так называемые разделенные разности .
Разделенные разности первого порядка определяются формулой
y(xi, xj) = (yi – yj) / (xi – xj).
Например,
y(x1, x0) = (y1 – y0)/(x1 – x0) = y0/h1, где h1 = x1 – x0,
y(x2, x1) = (y2 – y1)/(x2 – x1) = y1/h2, где h2 = x2 – x1, и т.д.
Разделенные разности второго порядка определяются формулой
y(xi, xj, xk) = [y(xi, xj) – y(xj, xk)] / (xi – xk).
Разделенные разности k-го порядка определяются формулой
y(xk, xk-1, …, x1, x0) = [y(xk, xk-1, …, x1) – y(xk-1, …, x0)] / (xk – x0).
В случае равностоящих узлов с шагом h для разделенных разностей имеем формулы:
y(x1, x0) = y0 / h, y(x2, x1) = y1 / h, …, y(xn, xn-1) = yn-1 / h;
y(x2, x1, x0) = 2y0 / 2!h2, y(x3, x2, x1) = 2y1 / 2!h, …;
y(xk, xk-1, x0) = ky0 / k!h.
Если у(x)=Pn(x) - полином степени n , то для него первая разделенная разность P(x, x0) = (P(x) – P(x0)) / (x – x0) - есть полином степени (n-1), вторая разделенная разность P(x,x0,x1) - полином степени (n-2), так что разделенная разность (n+1)-го порядка равна нулю.
Разделенные разности располагаются по схеме:
Рассмотрим первую разделенную разность для функции y(x)
y(x, x0) = (y(x) – y0) / (x – x0), откуда y(x) = y0 + (x – x0) y(x, x0).
Далее имеем
y(x, x0) = y(x0, x1) + (x – x1) y(x, x0, x1),
y(x, x0, x1) = y(x0, x1, x2) + (x – x2) y(x, x2, x1, x0)
и т.д. Отсюда получаем формулу
y(x) = y0 + (x – x0) y(x0, x1) + (x – x0) (x – x1) y(x0, x1, x2) + … +
+ (x – x0) (x – x1) … (x – xn-1) y(x0, x1, …, xn) +
+ (x – x0) … (x – xn) y(x, x0, …, xn)
или
y(x) = Pn(x) + (x – x0) (x – x1) … (x – xn) y(x, x0, x1, …, xn),
где
. |
(6.10) |
Если положить в формуле (6.10) x = xk, k = 0, 1, …, n, получим Pn(xk) = yk.
Следовательно, полином (6.10) является интерполяционным полиномом, построенным по (n+1) узлам x0, x1, ... , xn . Он называется интерполяционным многочленом Ньютона.
В силу того, что любой k-й член полинома Ньютона (6.10) зависит только от к первых узлов интерполяции и от значений функции в этих узлах, добавление новых узлов вызывает лишь добавление в формуле (6.10) новых членов без изменения первоначальных, в этом состоит существенное, с точки зрения организации вычислений, преимущество полинома Ньютона по сравнению с полиномом Лагранжа.
Формулу для полинома Ньютона (6.10) можно переписать в следующем виде:
В данном случае базис состоит из функций вида
,
В этом случае ck = y(x0, x1, ..., xk), После вычисления коэффициентов ck , значения полинома Ньютона в точке x удобно вычислять по схеме Горнера
Pn(x) = y0 + (x – x0)[y(x0, x1) + (x - x1)[y(x0, x1, x2) + …]].
Вычисление значений x полинома Pn(x) (после вычисления ck) требует n умножений и 2n сложений (или вычитаний), т.е. Q = 3n.
На практике избегают пользоваться интерполяционными многочленами высоких степеней. Объясняется это тем, что с ростом числа узлов сетки погрешность интерполирования f(x) – Ln(x) может не только не уменьшаться, но и в некоторых случаях постепенно расти с увеличением n. В этом случае говорят, что интерполяционный процесс расходится. Например, последовательность многочленов Ньютона, построенных для непрерывной функции f(x) = x на отрезке [-1, 1] не сходится к функции f(x) = x ни в одной точке отрезка [-1, 1] кроме точек –1, 0, 1. Поэтому более предпочтительной является интерполяция сплайнами, к рассмотрению которой мы переходим.