Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Матан v.0.1.doc
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
2.66 Mб
Скачать

2.2. Вычислительная схема Эйткена

Рассмотрим два частных случая интерполяции по Лагранжу.

1. Табличная функция имеет лишь два узла (так называемая линейная интерполяция): . В этом случае интерполяционный полином Лагранжа имеет вид:

= .

Обозначение вводится для того, чтобы отразить в символе конкретные номера узлов интерполяции, используемых при построении полинома Лагранжа.

Для таблицы интерполяционный полином запишется в виде:

.

2. Табличная функция имеет 3 узла (n = 3) ( ), так называемая квадратичная интерполяция:

Преобразуем второе слагаемое:

.

Подставим полученное уравнение в выражение для . Собрав подобные члены и учитывая соотношения для двух и трех узлов получим

.

выражение, связывающее последующую (квадратичную) интерполяцию с предыдущей (линейной).

Методом математической индукции доказывается, что формула есть частный случай рекуррентного соотношения

Алгоритм, использующий рекуррентную формулу, называется вычислительной схемой Эйткена построения полинома Лагранжа степени (n-1) для табличной функции с n узлами интерполяции.

Как любое рекуррентное соотношение вычислительная схема Эйткена программируется организацией соответствующего циклического процесса.

Sub Aitken () ’ интерполяция по Эйткену

Dim x (1 to 20) As Single

Dim y (1 to 20) As Single

Dim f (1 to 20) As Single

Dim x1 (1 to 20) As Single

Dim y1 (1 to 20) As Single

Dim E As Single

Dim N As Integer

Dim k As Integer

Dim i As Integer

Dim j As Integer

Dim l As Integer

Dim z As Single

Dim a As String

Dim m As Integer

a = InputBox (“Число интерполяционных узлов = ”)

N = CInt (a)

For i = 1 to N

x (i) = WorkSheets (1). Cells (1, i). Value

x1 (i) = x (i)

y (i) = WorkSheets (1). Cells (2, i). Value

y1 (i) = y (i)

next i

a = InputBox (“Значение аргумента x = ”)

z = CSng (a)

5: a = InputBox (“Требуемая точность Е = ”)

E = CSng (a)

f (2) = ((x (2) – z ) * y (1) – (x (1) - z) * y (2)) / (x (2) – x (1))

if N > 2 then 10

m = MsgBox (f (2), 1, “линейная интерполяция”)

10: for k = 3 to N – 1

for j = 1 to k – 1

for i = j + 1 to k

y (i) = ((z – x (j)) * y (i) – (z – x (i)) * y (j)) / (x (i) – x (j))

next i

next j

f (k) = y (k)

if abs (f (k) – f (k - 1)) < = E then 20

for l = 1 to N: y (l) = y1 (l): x (l) = x1 (l): next l

next k

z = abs (f (N – 1) – f (N - 2))

m = MsgBox (z, 1, “точность не достигнута”)

goto 30

m = MsgBox (k – 1, 2, “точность достигнута при степени = ”)

a = InputBox (“вводить новый аргумент? (да – 1, нет - 0)”)

k = CInt (a)

if k =1 then 5

stop

Схема Эйткена дает возможность регулирования выбора степени интерполяционного полинома , останавливая вычисления при минимальном значении n на основании критерия точности, который представляет собой побочный продукт алгоритма Эйткена. Дело в том, что разность значений полинома Лагранжа в одном и том же узле и определяет точность предыдущего шага по сравнению с последующим (последовательность интерполяций сходится к полному полиному Лагранжа (n-1).

Таким образом, задавая требуемую точность мы можем считать ее достигнутой при выполнении условия

,

считая (n-1) шаг исконным приближением точности Е.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]