Интерполяция сплайнами
Министерство
образования и науки Российской Федерации
Федеральное
государственное бюджетное образовательное учреждение высшего профессионального
образования
«Донской
государственный университет»
Кафедра
«Программное обеспечение вычислительной техники и автоматизированных систем»
«ПОВТ и АС»
Специальность:
Математическое обеспечение и администрирование информационных систем
КУРСОВАЯ
РАБОТА
по
дисциплине «Методы вычисления»
на
тему: «Интерполяция сплайнами»
Автор:
Моисеенко Александр Николаевич
Руководитель
работы:
Медведева
Татьяна Александровна
Ростов-на-Дону
г.
ЗАДАНИЕ
на курсовую работу по дисциплине «Методы
вычислений»
Студент: Моисеенко Александр Группа ВБМО21
Тема: «Интерполяция сплайнами»
Срок представления работы к защите “__” _______
201_ г.
Исходные данные для курсовой работы: конспект
лекций по методам вычислений, ru.wikipedia.org , кн. Практикум по высшей
математике Соболь Б.В.
Содержание пояснительной записки:
Разделы основной части: 1
ОБЗОР, 2 ФОРМУЛА ИНТЕРПОЛЯЦИИ, 3 АЛГОРИТМ КУБИЧЕСКОЙ ИНТЕРПОЛЯЦИИ, 4
ПРОГРАММНОЕ КОНСТРУИРОВАНИЕ, 5 РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММНОГО СРЕДСТВА.
Руководитель работы: /Медведева Т.А./
РЕФЕРАТ
Отчет содержит: страниц-19,
графиков-3, источников-3, блок-схема -1.
Ключевые слова: ИНТЕРПОЛЯЦИЯ,
СПЛАЙН, Система Mathcad, КУБИЧЕСКАЯ ИНТЕРПОЛЯЦИЯ СПЛАЙНАМИ.
Подробно рассмотрен метод интерполяции
кубическими сплайнами. Представлен соответствующий программный модуль.
Проиллюстрирована блок-схема программного модуля. Рассмотрены несколько
примеров.
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
. ТЕОРЕТИЧЕСКИЙ ОБЗОР
. ИНТЕРПОЛЯЦИЯ
.1 Интерполяция с помощью
квадратичного сплайна
.2 Интерполяция с помощью
кубического сплайна
.3 Постановка задачи
. АЛГОРИТМ ИНТЕРПОЛЯЦИИ С ПОМОЩЬЮ
КУБИЧЕСКОГО СПЛАЙНА
. ПРОГРАММНОЕ КОНСТРУИРОВАНИЕ
. РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММНОГО
СРЕДСТВА
.1 Описание примеров
.2 Результат тестирования
.3 Контрольный пример 1
.4 Контрольный пример 2
.5 Контрольный пример 3
ЗАКЛЮЧЕНИЕ
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
ВВЕДЕНИЕ
Аппроксимация функций заключается в приближенной
замене заданной функции f(x) некоторой функцией j(x)
так, чтобы отклонение функции j(x) от f(x)
в заданной области было наименьшим. Функция j(х) при этом
называется аппроксимирующей. Типичной задачей аппроксимации функций является
задача интерполяции. Необходимость интерполяции функций в основном связана с
двумя причинами:
1. Функция f(x) имеет
сложное аналитическое описание, вызывающее определенные трудности при его
использовании (например, f(x) является спецфункцией:
гамма-функцией, эллиптической функцией и др.).
2. Аналитическое описание функции f(x)
неизвестно, т. е. f(x) задана таблично. При этом необходимо
иметь аналитическое описание, приближенно представляющее f(x)
(например, для вычисления значений f(x) в произвольных точках,
определения интегралов и производных от f(x) и т. п.).
1. ТЕОРЕТИЧЕСКИЙ ОБЗОР
Интерполя́ция - в
вычислительной математике
<https://ru.wikipedia.org/wiki/%D0%92%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0>
способ нахождения промежуточных значений
<https://ru.wikipedia.org/wiki/%D0%97%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5>
величины по имеющемуся дискретному
<https://ru.wikipedia.org/wiki/%D0%94%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C>
набору известных значений. При решении задач с научными и инженерными расчётами
часто приходится оперировать наборами значений, полученных опытным
<https://ru.wikipedia.org/wiki/%D0%AD%D0%BA%D1%81%D0%BF%D0%B5%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D1%82>
путём или методом случайной выборки
<https://ru.wikipedia.org/w/index.php?title=%D0%A1%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D0%B0%D1%8F_%D0%B2%D1%8B%D0%B1%D0%BE%D1%80%D0%BA%D0%B0&action=edit&redlink=1>.
Как правило, на основании этих наборов требуется построить функцию
<https://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F_%28%D0%BC%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0%29>,
на которую могли бы с высокой точностью попадать другие получаемые значения. Такая
задача называется приближение функций. Интерполяцией называют такую
разновидность приближения функций, при которой кривая построенной функции
проходит точно через имеющиеся точки данных.
Сплайн - функция, область
определения которой разбита на конечное число отрезков, на каждом из которых
сплайн совпадает с некоторым алгебраическим полиномом
<#"662568.files/image001.gif"> будем строить функцию вида:
Коэффициенты сплайнов будем искать из следующих условий:
а) условия
Лагранжа
б) непрерывность первой производной
в узловых точках
Последние два условия дают уравнений, в то время как
количество неизвестных коэффициентов. Недостающее уравнение может быть получено
из дополнительных условий, накладываемых на поведение сплайна. Например, можно
потребовать, чтобы значение первой производной сплайна s1 в точке x0 было бы
нулевым, т.е.
Подстановка этих выражений приводит
к следующим уравнениям
,
,
,
где введено обозначение
Выразим из второго уравнения
коэффициенты c1 ,
предварительно подставив в него значения коэффициентов a1 из первого
уравнения:
Затем, подставив это выражение в
уравнение системы, получим простое рекуррентное соотношение для коэффициентов
,
После того, как коэффициенты
рассчитаны, для вычисления самого сплайна достаточно определить номер
интервала, в который попадает точка интерполирования, и воспользоваться
формулой. Для определения номера интервала будем применять алгоритм,
аналогичный тому, что был использован в предыдущем примере для
кусочно-квадратичной интерполяции.
2.2 Интерполяция с помощью
кубического сплайна
Кубическим интерполяционным сплайном,
соответствующим данной функции f(x) и данным узлам xi,
называется функция S(x), удовлетворяющая следующим
условиям:
1. На каждом сегменте [xi - 1,
xi], i = 1, 2, ..., N функция S(x)
является полиномом третьей степени,
2. Функция S(x), а
также ее первая и вторая производные непрерывны на отрезке [a, b],
3. S(xi)
= f(xi), i = 0, 1, ..., N.
На каждом из отрезков [xi - 1,
xi], i = 1, 2, ..., N будем искать функцию S(x)
= Si(x) в виде полинома третьей степени:
Si(x)
= ai + bi(x - xi - 1)
+ ci(x - xi - 1)2 + di(x
-1)3,
xi
- 1
£
x £ xi,
где ai, bi, ci,
di - коэффициенты, подлежащие определению на всех n
элементарных отрезках. Чтобы система алгебраических уравнений имела решение,
нужно, чтобы число уравнений точно равнялось числу неизвестных. Поэтому мы
должны получить 4n уравнения.
Первые 2n уравнения мы получим из
условия, что график функции S(x) должен проходить через заданные
точки, т. е.
Si(xi
- 1) = yi - 1, Si(xi)
= yi.
Эти условия можно записать в виде:
Si(xi
- 1) = ai = yi - 1,
Si(xi)
= ai + bihi + cih + dih
= yi,
где
hi
= xi - xi - 1,
i = 1, 2, ..., n.
Следующие 2n - 2 уравнения вытекают из
условия непрерывности первых и вторых производных в узлах интерполяции, т. е.
условия гладкости кривой во всех точках.
S' i + 1(xi)
= S' i(xi), i = 1, ..., n - 1,'
' i + 1(xi) = S' ' i(xi),
i = 1, ..., n - 1,
S' i (x)
= bi + 2 ci (x - xi - 1)
+ 3 di (x - xi - 1),
S'
i + 1 (x)
= bi + 1 + 2 ci + 1 (x
- xi) + 3 di + 1 (x - xi).
Приравнивая в каждом внутреннем узле x = xi
значения этих производных, вычисленные в левом и правом от узла интервалах,
получаем (с учетом hi = xi - xi - 1):
bi + 1
= bi + 2 hi ci
+ 3h di, i = 1, ..., n - 1,' ' i(x)
= 2 ci + 6 di (x - xi - 1),'
' i + 1(x) = 2 ci + 1
+ 6 di + 1 (x - xi),
если x = xi
ci + 1
= ci + 3 hi di,
i = 1,2, ..., n - 1.
На данном этапе мы имеем 4n неизвестных и
4n - 2 уравнений. Следовательно, необходимо найти еще два уравнения.
При свободном закреплении концов можно
приравнять к нулю кривизну линии в этих точках. Из условий нулевой кривизны на
концах следуют равенства нулю вторых производных в этих точках:
S1'
' (x0) = 0 и
Sn' ' (xn)
= 0,
ci
= 0 и
2 cn + 6 dn
hn = 0.
Уравнения составляют систему линейных
алгебраических уравнений для определения 4n коэффициентов: ai
, bi , ci , di (i = 1, 2,
. . ., n).
Эту систему можно привести к более удобному
виду. Из условия сразу можно найти все коэффициенты ai.
Далее получим:
i = 1,
2, ..., n - 1,
Подставляя, получим:
bi = - (ci
+ 1 + 2ci) , i = 1,2,
..., n - 1,n = - (hn cn)
Исключаем из уравнения коэффициенты bi
и di . Окончательно получим следующую систему уравнений
только для коэффициентов сi:
c1
= 0 и
cn + 1 = 0:i - 1 ci
- 1 + 2 (hi - 1 +
hi) ci + hi ci + 1
= 3 ,
i = 2,
3, ..., n.
По найденным коэффициентам сi легко
вычислить di ,bi.
2.3 Постановка задачи
На отрезке [a, b] заданы n + 1
точки xi = х0, х1, . . ., хn,
которые называются узлами интерполяции, и значения некоторой
функции f(x) в этих точках
f(x0)
= y0, f(x1) = y1,
. . ., f(xn) = yn.
С помощью кубических сплайнов построить
интерполяционную функцию f(x).
3.
АЛГОРИТМ ИНТЕРПОЛЯЦИИ С ПОМОЩЬЮ КУБИЧЕСКОГО СПЛАЙНА
Познакомимся с алгоритмом работы программы.
1. Вычисляем значения и
. На основе этих значений считаем
коэффициенты прогонки и ξ.
. На основе полученных данных
высчитываем коэффициенты
. После чего вычисляем значение
функции с помощью сплайна.
kjj
4. ПРОГРАММНОЕ КОНСТРУИРОВАНИЕ
5. РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММНОГО
СРЕДСТВА
.1 Описание тестовых примеров
В ходе выполнения данной курсовой работы был
разработан программный модуль, который через имеющиеся точки проводит
соответствующую им кривую. Для проверки эффективности работы были проведены
тестовые примеры.
5.2 Результаты тестирования
Для проверки правильности выполнения тестовых
примеров используется встроенная в пакет MATHCAD функция cspline, которая
возвращает вектор вторых производных при приближении в опорных точках к
кубическому полиному.
5.3 Контрольный пример 1
Рисунок 1.1 -результат работы программы
Контрольный пример 2
Рисунок 1.2 -результат работы программы
Контрольный пример 3
Рисунок 1.3 -результат работы программы
ЗАКЛЮЧЕНИЕ
сплайн интерполяция функция
вычислительный
В вычислительной математике существенную роль
играет интерполяция функций, т.е. построение по заданной функции другой (как
правило, более простой), значения которой совпадают со значениями заданной
функции в некотором числе точек. Причем интерполяция имеет как практическое,
так и теоретическое значение. На практике часто возникает задача о
восстановлении непрерывной функции по ее табличным значениям, например,
полученным в ходе некоторого эксперимента. Для вычисления многих функций,
оказывается, эффективно приблизить их полиномами или дробно-рациональными функциями.
Теория интерполирования используется при построении и исследовании квадратурных
формул для численного интегрирования, для получения методов решения
дифференциальных и интегральных уравнений. Основным недостатком полиномиальной
интерполяции является то, что она неустойчива на одной из самых удобных и часто
используемых сеток - сетке с равноудаленными узлами. Если позволяет задача, эту
проблему можно решить за счет выбора сетки с Чебышевскими узлами. Если же мы не
можем свободно выбирать узлы интерполяции или нам просто нужен алгоритм, не
слишком требовательный к выбору узлов, то рациональная интерполяция может
оказаться подходящей альтернативой полиномиальной интерполяции.
К достоинствам сплайн-интерполяции следует
отнести высокую скорость обработки вычислительного алгоритма, поскольку сплайн
- это кусочно-полиномиальная функция и при интерполяции одновременно
обрабатываются данные по небольшому количеству точек измерений, принадлежащих к
фрагменту, который рассматривается в данный момент. Интерполированная
поверхность описывает пространственную изменчивость различного масштаба и в то
же время является гладкой. Последнее обстоятельство делает возможным прямой
анализ геометрии и топологии поверхности с использованием аналитических
процедур.
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
1. Б.В.Соболь, Б.Ч.Месхи,
И.М.Пешхоев. Практикум по вычислительной математике. - Ростов-на-Дону: Феникс,
2008;
2. Н.С. Бахвалов, Н.П. Жидков,
Г.М. Кобельков. Численные методы. Изд-во "Лаборатория базовых
знаний". 2003
3. www.wikipedia.ru/сплайн