Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВЫЧМАТ_лекц+практ2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.21 Mб
Скачать

2. Приложение интерполяции к вычислительным задачам

2.1. Численное решение уравнений. Пусть на отрезке [a, b] надо найти корень уравнения f(x) = 0. Если функция f(x) монотонна на [a, b], то одним из эффективных методов решения является обратная интерполяция. Предлагается следующий алгоритм.

1. Выбираем некоторый шаг h и просчитываем значения у = f(х) с этим шагом на [a, b].

2. Задаемся некоторым значением n и выбираем на [a, b] n + 1 точку. Для повышения точности рекомендуется выбирать точки так, чтобы примерно половина из них была с одной стороны от корня (в них f(xi) < 0), а другая половина была с другой стороны от корня (в них f(xi) > 0). Тогда корень будет близок к середине отрезка интерполяции, т.е. там, где точность максимальна.

3. Строим Qn (y) и вычисляем х* = Qn (0). Это и будет приближенным корнем уравнения.

4. Для повышения точности можно применить итерационный вариант метода. Для этого задаемся некоторым  > 0 и проверяем, достигнута ли заданная точность. В качестве критерия можно использовать неравенства | xn – x0 | <  или | f(x*) | < . Первое (оценка по аргументу) означает, что интервал интерполяции, на котором находится корень, достаточно мал. Второе (оценка по функции) – что в найденной точке функция приблизительно равна 0. Если выбранный критерий точности удовлетворен, то стоп.

5. Если точность не достигнута, то к имеющимся узлам интерполяции добавляем новый – (х*, f(x*)). Можно применять одну из двух стратегий модификации набора узлов:

а) стратегия добавления – не менять старые узлы; при этом общее число узлов и степень многочлена возрастает на 1.

б) стратегия замены – исключить один из старых узлов, например, тот, в котором значение |уi| максимально (т.е. наиболее отлично от 0); общее число узлов и степень многочлена не изменяется.

После этого вернуться к пункту 3.

Пример 3.2. Найти корень уравнения f(x)  cos(x) – x = 0 на интервале [–1, 2.5] с точностью по функции 10–5.

Положим h = 0.5 и составим таблицу значений у(х) (таблица 3.2):

Таблица 3.2.

x

– 1.0

– 0.5

0

0.5

1.0

1.5

2.0

2.5

y

1.54

1.38

1.0

0.38

– 0.46

– 1.43

– 2.42

– 3.30

В качестве узлов интерполяции будем использовать точки при х = 0; 0.5; 1.0; 1.5. Строим матрицу D для обратных разделенных разностей:

0 0 0 0

0.5 -0.8033194 0 0

D = 1 -0.6850734 -0.1412264 0

1.5 -0.6174713 -0.1028578 -0.039573

Получаем многочлен

Q3 (y) = 0 – 0.8033194 (у – 1) – 0.1412264 (у – 1) (у – 0.377583) –

– 0.039573 (у – 1) (у – 0.377583) (у + 0.459698).

Отсюда Q3 (0) = х* = 0.74312596; f(x*) = – 0.006769 – точность не достигнута. Заменяем новой точкой (0.74312596; – 0.006769) старый узел (1.5; –1.429263), в котором значение функции наиболее отличается от 0. Получаем новую матрицу D

0 0 0 0

0.5 -0.8033194 0 0

D = 1 -0.6850734 -0.1412264 0

0.743126 -0.7381297 -0.1696096 -0.0626661

и новый многочлен

Q3 (y) = 0 – 0.8033194 (у – 1) – 0.1412264 (у – 1) (у – 0.377583) –

– 0.0626661 (у – 1) (у – 0.377583) (у + 0.459698)

Q3 (0) = х* = 0.7391176; f(x*) = – 0.000054 – точность не достигнута. Заменяем на новую точку (0.7391176; – 0.000054) старый узел (0; 1). Получаем новую матрицу D

0.7391176 0 0 0

0.5 -0.6331945 0 0

D = 1 -0.5675757 -0.0783713 0

0.743126 -0.5969738 -0.0942385 -0.0350323

Q3 (y) = 0.7391176 – 0.6331945 (у – 0.000054) – 0.0783713 (у – 0.000054) (у – 0.377583) –

– 0.0350323 (у – 0.000054) (у – 0.377583) (у + 0.459698)

Q3 (0) = х* = 0.73908513; f(x*) = 1.488  10 – 9 – точность достигнута.

2.2. Поиск минимума функции одной переменной. Пусть даны три точки на плоскости: A = (x0, y0); B = (x1, y1); С = (x2, y2); x0 < x1 < x2.

Def. Три точки на плоскости (x0, y0), (x1, y1), (x2, y2) образуют выпуклую тройку, если при x0 < x1 < x2 выполнены также неравенства у1 < у0, у1 < у2.

Ставится задача: найти приближенно точку минимума функции у(х) по трем точкам, образующим выпуклую тройку. Эта задача решается с помощью параболической интерполяции. Согласно этому методу строят многочлен Ньютона 2-й степени Р2 (х) (параболу) и находят точку его минимума, т.е. точку, в которой .

Имеем: P2 (x) = y0 + (х – x0) 1[x0, x1] + (х – x0) (х – x1) 2[x0, x1, x2]. Найдем производную, приравняем ее к нулю и решим полученное линейное уравнение. Получим:

. (3.1)

Свойство. Если узлы интерполяции образуют выпуклую тройку, то хmin [x0, x2], т.е. точка минимума, получаемая методом параболической интерполяции, устойчива.

Если минимизируемая функция у(х) задана аналитически, то решение можно получить с любой заданной точностью. Для этого используют итерационный вариант метода параболической интерполяции. Cтроят новую точку F = (хmin , у(хmin )) и проверяют, достигнута ли требуемая точность. Если да, то хmin – решение задачи, СТОП. В противном случае заменяют точкой F один из старых узлов, например тот, в котором значение уi максимально, и повторяют интерполяцию.

В качестве критерия точности по функции можно использовать условие max { уi } – min { уi } < , т.е. значения функции в узлах совпадают с заданной точностью. В качестве критерия точности по аргументу можно использовать условие max { хi } – min { хi } < , т.е. значения аргумента лежат в достаточно малом интервале.

Перед применением метода выбирают некоторый шаг h и просчитывают значения у(х) с этим шагом на [a, b] для обнаружения выпуклой тройки.

Замечание 1. Так как на последних итерациях значения функции очень близки, то вычисления надо проводить с большим числом значащих цифр.

Замечание 2. Если требуется найти максимум функции, то для того, чтобы не менять все выкладки и формулу (3.1), удобнее поменять знак функции и искать min (– y(x)).

Пример 3.3. Найти минимум функции f(x) = 0.5 x2 – sin(x) на отрезке [–1, 2.5] с точностью по аргументу 10–3.

Положим h = 0.5 и составим таблицу значений у = f(х) (таблица 3.3). График функции – на рис. 3.1.

Рис. 3.1. График функции f(x) = 0.5 x2 – sin(x)

Таблица 3.3.

x

– 1.0

– 0.5

0

0.5

1.0

1.5

2.0

2.5

y

1.34

0.60

0.0

–0.35

– 0.34

0.13

1.09

2.53

В качестве узлов интерполяции будем использовать точки при х = 0; 0.5; 1.0, т.к. они образуют выпуклую тройку. Строим матрицу D для разделенных разностей:

0 0 0

D = -0.35443 -0.70885 0

-0.34147 -0.34147 0.73476

Отсюда F = (хmin , у(хmin )) = (0.732369; –0.4004509).

Рис. 3.2. Применение параболической интерполяции, 1-я итерация

минимизируемая функция f(x)    узлы интерполяции

парабола  точка (хmin , f(хmin ))

После 1-й итерации точность не достигнута, следовательно, заменяем точкой F узел при х = 0, т.к. у(0) = 0 = max. Получаем новую матрицу D:

-0.40045 0 0

D = -0.35443 -0.19807 0

-0.34147 0.22038 0.8369

min , у(хmin )) = (0.7345207095; -0.4004712). Точность не достигнута, следовательно, заменяем точкой F узел при х = 1, т.к. у(1) = -0.341470985 = max, и т.д.

После пятой итерации получаем следующую таблицу узлов:

Таблица 3.4.

х

0.7390872156

0.7393051349

0.7390850585

у

-0.400488612

-0.400488572

-0.400488612

min , у(хmin )) = (0.7390851332; -0.400488572); max { хi } – min { хi } = 2.20110–4 – точность достигнута.