Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Чистяков.doc
Скачиваний:
56
Добавлен:
05.11.2018
Размер:
1.67 Mб
Скачать

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. Поэтому более предпочтительной является интерполяция сплайнами, к рассмотрению которой мы переходим.