Автор работы: Пользователь скрыл имя, 21 Января 2012 в 10:03, контрольная работа
Рассматривается как происходит интерполяция сплайнами. Формальная постановка, метод прямой и обратной прогонки
•1 Введение
◦1.1 Постановка математической задачи
•2 Изложение метода
◦2.1 Метод прогонки
◦2.2 Пример: интерполирование неизвестной функции
•3 Ошибка интерполяции
◦3.1 Пример: интерполяция синуса
•4 Список литературы
•5 См. также
Интерполяция кубическими сплайнами
Содержание
[убрать]
|
Введение
Постановка математической задачи
Одной из основных задач численного анализа является задача об интерполяции функций. Пусть на отрезке задана сетка и в её узлах заданы значения функции , равные . Требуется построить интерполянту — функцию , совпадающую с функцией в узлах сетки:
( 1 )
Основная цель интерполяции — получить быстрый (экономичный) алгоритм вычисления значений для значений , не содержащихся в таблице данных.
Интерполируюшие функции , как правило строятся в виде линейных комбинаций некоторых элементарных функций:
где — фиксированный линейно независимые функции, — не определенные пока коэффициенты.
Из условия (1) получаем систему из уравнений относительно коэффициентов :
Предположим, что система функций такова, что при любом выборе узлов отличен от нуля определитель системы:
.
Тогда по заданным однозначно определяются коэффициенты .
Изложение метода
Интерполяция кубическими сплайнами является частным случаем кусочно-полиномиальной интерполцией. В этом специальном случае между любыми двумя соседними узлами функция интерполируется кубическим полиномом. его коэффициенты на каждом интервале определяются из условий сопряжения в узлах:
Кроме того, на границе при и ставятся условия
( 2 )
Будем искать кубический полином в виде
( 3 )
Из условия имеем
( 4 )
Вычислим производные:
и потребуем их непрерывности при :
( 5 )
Общее число неизвестных коэффициентов, очевидно, равно , число уравнений (4) и (5) равно . Недостающие два уравнения получаем из условия (2) при и :
Выражение из (5) , подставляя это выражение в (4) и исключая , получим
Подставив теперь выражения для и в первую формулу (5), после несложных преобразований получаем для определения разностное уравнение второго порядка
( 6 )
С краевыми условиями
( 7 )
Условие эквивалентно условию и уравнению . Разностное уравнение (6) с условиями (7) можно решить методом прогонки, представив в виде системы линейных алгебраических уравнений вида , где вектор соответствует вектору , вектор поэлементно равен правой части уравнения (6), а матрица имеет следующий вид:
где и .
Метод прогонки
Метод прогонки, основан на предположении, что искомые неизвестные связаны рекуррентным соотношением:
( 8 )
Используя это соотношение, выразим и через и подставим в i-e уравнение:
,
где - правая часть i-го уравнения. Это соотношение будет выполняться независимо от решения, если потребовать
Отсюда следует:
Из первого уравнения получим:
После нахождения прогоночных коэффициентов и , используя уравнение (1), получим решение системы. При этом,
Пример: интерполирование неизвестной функции
Построим интерполянту для для функции , заданной следующим образом:
Вводные значения для задачи интерполяции
1 | 1.0002 |
2 | 1.0341 |
3 | 0.6 |
4 | 0.40105 |
5 | 0.1 |
6 | 0.23975 |
В результате интерполяции были рассчитаны следующие коэффициенты интерполянты:
Результат интерполяции
Интервал | ||||
1,0002 | -0,140113846 | 0,440979231 | -0,266965385 | |
1,0341 | -0,291901538 | -0,359916923 | 0,217718462 | |
0,6 | -0,22553 | 0,293238462 | -0,266658462 | |
0,40105 | -0,100328462 | -0,506736923 | 0,306015385 | |
0,1 | -0,134456154 | 0,411309231 | -0,137103077 |
Ошибка интерполяции
Нас будет интересовать
поведение максимального
от шага h, где .
Известно, что если функция имеет четыре непрерывные производные, то для ошибки интерполяции определенным выше кубическим сплайном верна следующая оценка
причем константа в этом неравенстве является наилучшей из возможных
Пример: интерполяция синуса
Постром интерполянту функции на отрезке , взяв равномерно отстоящие узлы с шагом 0.5 и шагом 0.25, и сравним полученные результаты.
Ошибка интерполяции | Оценка ошибки | Иллюстрация | |
|
0.429685 | 3.(3) |
Результат интерполяции sin(4x) с шагом 0.5 |
0.005167 | 0.208(3) |
Результат интерполяции sin(4x) с шагом 0.25 |
Как видно из полученных иллюстрации, уже при шаге 0.25 интерполянта визуально ничем не отличается от исходной функции.
Код программы на языке С++ с помощью которой были произведены все расчеты, можно скачать тут.