Міністерство освіти і науки України
Черкаський національний університетІмені Богдана Хмельницького
Кафедра математики та методики навчання математики
Кваліфікаційна робота з математики
Застосування сплайн-функцій до розв’язування задач інтерполяції
Автор:
Вишемірська Тетяна Володимирівна
Четвертий курс, денна форма навчання, математичний факультет
Науковий керівник:
Доктор фізико-математичних наук, професор
Стеблянко Павло Олексійович
Черкаси 2010
Зміст
Вступ
1.В-сплайни
1.1Базис із В-сплайнів
1.2В-сплайни нульового степеня та рекурентна форма запису В-сплайнів вищих порядків
1.3Лінійні В-сплайни
1.4Квадратичні В-сплайни
2. Кубічні В-сплайни
2.1Формули задання кубічних B-сплайнів
2.2Базис у просторі кубічних сплайнів
2.3 Задачі інтерполяції з граничними умовами першого та другого роду
2.4.Апроксимація кубічними В-сплайнами
2.5Практичність вивчення кубічних В-сплайнів у вищих навчальних закладах
3. Практична частина
3.1Задача №1
3.2Задача №2
Висновки
Список використаних джерел
Вступ
Сплайн-інтерполяція на сьогоднішній день є одним із найточніших методів наближення. В теорію наближень сплайни ввійшли зовсім недавно і відразу ж зайняли в ній досить важливе місце. Буквально протягом кількох років для сплайнів були розв’язані апроксимаційні задачі, на розв’язання яких для поліномів були потрачені десятиліття. З подальшим вивченням і застосуванням сплайн-функцій, знадобилося їх певне спрощення, для полегшення розрахунків. Саме тоді і з’явилися В-сплайни, які як виявилося не тільки є простішими для обчислень, але й дають більшу точність наближення, що є дуже важливим при розв’язуванні практичних задач.
Актуальність:
Сьогодні сплайн-функції відіграють дуже важливу роль, вони входять в курс «Чисельні методи», як додатковий метод інтерполяції, а також використовуються в курсі «Рівняння математичної фізики» для розв’язування нерозв’язних диференціальних рівнянь; з допомогою сплайнів і В-сплайнів (в основному кубічних) розв’язуються (з великою точністю) ті задачі, які не можна розв’язати іншими, відомими, методами.
В-сплайн – це крива з неперервними старшими похідними до n
-ої, де n
– порядок сплайна.
Мета курсової роботи
: Розглянути кубічні В-сплайни, а також лінійні та квадратичні В-сплайни, форми їх запису та формули для розрахунків інтерполяційних задач, рекурентні формули для представлення В-сплайнів 1-го, 2-го, 3-го та вищих порядків. З’ясувати практичність застосування Кубічних В-сплайнів у ВНЗ при розв’язуванні задач інтерполяції. Застосувати на практиці отримані знання.
Для досягнення мети були поставлені такі завдання
:
– знайти і опрацювати літературу із даної теми;
– систематизувати опрацьований матеріал;
– отримати формули для розрахунків інтерполяційних задач;
– визначити практичність кубічних В-сплайнів в порівнянні з іншими сплайнами і В-сплайнами;
1
B
-сплайни
1.1 Базис із В-сплайнів
Одним з найширше використовуваних представлень кривих в комп'ютерному баченні є представлення у вигляді В-сплайну. Важливо розрізняти сплайни і В-сплайни. В-сплайни є поліноміальними функціями. Сплайни є лінійною комбінацією В-сплайнів. У літературі сплайни зазвичай визначаються як різні види степеневої функції. Для обчислень зручніше визначати сплайни рекурсивними функціями.
Приймемо без доведення наступну лему, яку буде використано для доведення важливої теореми:
Лема 1
. Нехай - множина сплайнів порядку m
дефекту1 порозбиттю. Якщо і сплайн із задовольняє умови, то на .
Теорема 1
. Системаіз В-сплайнів
, (1) порядку за розбитям з носіямиєбазисом в .
Доведення.
Нехай
, ; (2) потрібнодовести,що ().Безпосередньо із визначенняВ-сплайнів (1)виплива, що при ;але тоді з урахуванням(2)
, ів силулеми1 для . Таким чином,
, .(3)
Оскількинапроміжку, а при , тоіз(3)слідує,що, такщо
, .
Для при і при , а тому і
, .
Розмірковуючи аналогічно,далі прийдемодорівності
що йтребабулодовести.
Наслідок
1.
Будь-якийсплайн із єдиним чином представляється у вигляді
, .(4)
Якщо сплайн із однозначно визначається деяким набором із інтерполяційних умов, то, підставляючи в ці умови замість суму (4), отримаємо систему лінійних рівнянь для визначення коефіцієнтів . Усилу скінченності носіїв сплайнів в кожному рядочку визначника цієї системи, не дорівнюватимуть нулю лише елементів - значення сплайнів (або їх похідних) в одній із точок розбиття . При цьому не нульові елементи, які відповідають внутрішнім умовам інтерполяції, будуть розміщені вздовж головної діагоналі визначника. Саме це і забезпечує, принаймні для малих , простоту обчислення коефіцієнтів лінійної комбінації (4) [1].
1.2
В-сплайн нульового степеня та рекурентна форма запису В-сплайнів вищих порядків
В-сплайном нульового степеня
, побудованим на числовій прямій по розбиттю , називається функція вигляду:
, (5)
Єдине обмеження полягає в тому, що В-сплайни повинні відповідати умові:
Зокрема, якщо , то [2].
В-сплайн степеня , побудований на числовій прямій по розбиттю , визначається наступною рекурентною формулою:
, (6)
де , . (7)
При однаковій відстані між сусідніми вузлами В-сплайни називаються однорідними
, в протилежному випадку неоднорідними
. Для однорідних B-сплайнів, базисні B-сплайни однакового степеня є зміщеними екземплярами однієї функції [3].
Нерекурсивним визначенням базисних B-сплайнів є
, (8)
де , [3]. (9)
1.3 Лінійні B-сплайни
Лінійні B-сплайни є неперервними, але не диференційованими.
Скориставшись рекурентною формулою (6), отримаємо формулу для лінійного В-сплайна:
(10)
Підставивши у (10) формулу (5) маємо:
(11)
Або у випадку рівномірної сітки з кроком () отримаємо:
(11’)
Нижче на малюнку 1 представлено графік В-сплайна 1-го порядку:
Мал. 1 - Графік В-сплайна
1.4 К
вадратичні B-сплайни
Із рекурентної формули (6), отримаємо наступну форму запису квадратичного В-сплайна:
(12)
Тепер ми можемо, або скористатись лише формулою (11), підставивши її у (12) отримаємо:
(13)
А у випадку рівномірної сітки з кроком h
матимемо:
(13’)
Або спершу в (12) підставимо (10) і, зробивши відповідні перетворення, отримаємо квадратичний В-сплайн в вигляді:
, (14)
а потім в (14) підставимо (5) і отримаємо ту ж саму формулу (13) [4].
Графік В-сплайна 2-го - - степеня представлено на малюнку 2:
Мал. 2 - Графік В-сплайна
В-сплайн довільного степеня може бути відмінним від нуля лише на деякому відрізку (визначеному вузлами)[4].
2
Кубічні
B
-сплайни
2.1 Формули задання кубічних B-сплайнів
Зробивши аналогічні дії, що й при квадратичному В-сплайні, ми отримаємо формулу (15) для кубічного В-сплайна:
Зауваження. Кубічні В-сплайни зручніше нумерувати так, щоб сплайн був відмінний від нуля на відрізку [5]. Запишемо тепер у випадку рівномірної сітки (з кроком ) його:
(15’)
Типічний графік кубічного В-сплайну показано на мал. 3:
Мал. 3 - Типічний графік кубічного В-сплайну
2.2 Базис у просторі кубічних сплайнів
Функція :
а) двічі неперервно диференційовна на відрізку ;
б)відмінна від нуля тільки на чотирьох відрізках
Відрізок називають носієм функції [6].
Доповнимо розбиття допоміжними вузлами:
,взятими довільно.
За розширеною сіткою:
:можна побудувати сім’ю з кубічних В-сплайнів:
,
Ця сім’я утворює базис в просторі кубічних сплайнів на відрізку . Тим самим довільний кубічний сплайн , побудований по розбиттю із вузла, може бути представлений на цьому відрізку в вигляді лінійної комбінації:
Умовами задачі коефіцієнти цього розбиття визначаються однозначно [7].
2.3 Задачі інтерполяції з граничними умовами першого та другого роду
У випадку коли задані значення функції в вузлах сітки і значення і першої похідної функції на кінцях сітки (задача інтерполяції з граничними умовами першого роду), коефіцієнти обчислюються із системи наступного вигляду:
, де (16)
Після виключення і отримується лінійна система з невідомими і 3-діагональною матрицею, яку можна розв’язати, як методом Гауса, так і методом прогонки [8].
При розв’язанні задачі інтерполяції другого роду використовують значення похідних другого порядку на кінцях сітки: і . І коефіцієнти вже обчислюються із системи:
(16’)
таким самим чином, як і під час розв’язування задачі інтерполяції першого роду.
2.4 Апроксимація кубічними В-сплайнами
Нехай задана таблиця чисел і , котрі є значеннями функції і її першої похідної у вузлах a
i
, i
=0,1, ..., N
. Необхідна апроксимувати функцію W
(a
) з допомогою цих даних.
Розглянемо апроксимацію кубічними В-сплайнами. Конструкція нормованого
кубічного В
-сплайна зазвичай задається так:
(17)
В правій частині (17) стоять многочлени третього степеня виду:
(18)
Коефіцієнти ai
, bi
, ci
, di
визначаються із системи чотирьох рівнянь, отриманих при умовах: и . В результаті її розв’язку можна записати:
(19)
, ,
При конкретизації виразу (18) використовуються формули (19), що задовольняють умови стику у вузлах ai
-2
, ai
-1
, ai
,
ai
+1
для сплайнів:
(20)
Та їх похідних по a, позначених штрихом:
(21)
В роботі Б.Зав’ялова [6] для рівномірної сітки i
=0,1, ... , N
, задовольняючи наступні умови (20), (21), отримано такий вираз для
Тут , а також з’ясовано, що S
0
=2/3, S*
=1/6, S**
=1/2h.
Загальний інтерполяційний вираз, в якому використовуються нормовані кубічні В
-сплайни (22), записуються так:
, (23)
де , а . Коефіцієнти bi+1
,bi+2
визначаються із умов, що задовольняють значення функції W
(a), відомих в деяких вузлах . Зазвичай вибирають , , а задовольняють нерівність: .
Запишемо (23) в розгорнутому вигляді. Для цього, використавши (22) отримаємо всі вирази для . Сплайн отримаємо із четвертої рівності (22), якщо там формально замінити x на 1+ x . Тоді
(24)
Вираз для береться безпосередньо із (22)
(25)
Сплайн записується на основі другої рівності (22) шляхом формальної заміни x на x-1
(26)
І, нарешті із першого виразу (22), замінюючи x на x-2, отримаємо:
. (27)
Тоді остаточний варіант інтерполяційного виразу, основаного на застосуванні нормованих кубічних В-сплайнів, отримаємо шляхом підстановки виразів (24)-(27) в (23)
(28)
Вираз (28) дає четвертий порядок апроксимації функції по кроку h
0( h
4
) . Якщо в формулі (28) виключити коефіцієнти, виразивши їх через значення апроксимуючої функції у вузлах, то отримаємо:
, де (29)
(30)
Більш високий порядок апроксимації можна отримати за допомогою так званих напружених сплайнів,
при цьому інтерполяційний вираз (29) зберігає свій вигляд, а функції, які входять до його складу задаються так:
, (31) де
;; ;
; ; .
Інтерполяційний вираз виду (29) використовується, як для визначення шуканих величин між вузлами координатної сітки, так і для апроксимації частинних похідних, котрі входять до складу повної системи рівнянь [8].
2.5 Практичність вивчення кубічних В-сплайнів у вищих навчальних закладах
В-сплайни є більш практичні у використанні ніж природні сплайни, оскільки поліноміальні коефіцієнти природних сплайнів вимагають всіх вузлових точок. Їх обчислення залучає розв’язання вимірних матриць. У цьому є два недоліки: переміщення однієї вузлової точки зачіпає всю криву і під час розв’язування матриці можна зіткнутися з швидкою зміною кривої. З іншого боку, В-сплайни складаються з сегментів кривих, залежних тільки від кількох вузлових точок. Це називається локальним контролем. Таким чином, переміщення вузлової точки зачіпає тільки маленьку частину кривої. B-сплайни мають ту ж саму неперервність, як і природні сплайни, але не інтерполюють їх вузлові точки. Тому, ми говоримо про наближення багатокутника, а не про вставку вузлової точки.
Першим кроком є вибір порядку базису сплайнів, щоб досягати бажану гладкість і полегшити обчислювання.
Як найефективніші, були вибрані кубічні В-сплайни, тобто сплайни третього порядку, через наступні причини:
1. Поліноми нижніх степенів дають дуже низьку гнучкість в управлінні формою кривої. В-сплайни першого порядку (прямі лінії) не дають задовільної гладкості апроксимуючої кривої. В-сплайни другого порядку дають гладку криву, але проблема виникає в точках, де з'єднуються сегменти кривої. Щоб зрозуміти цю проблему, ми введемо нове означення:
Означення
. Позначимо сегмент кривої. Якщо напрям і величина і рівні в точці з'єднання, крива, що складається з цих двох сегментів, називається неперервною.
В-сплайни другого порядку і неперервні, що не гарантує задовільну неперервність в об'єднаних точках. Проблема вирішується, використовуючи кубічні В-сплайни, які є , і і неперервними.
2.Поліноми вищого степеня віднімають багато часу в обчислювальному процесі і можуть нести небажані скачки. Крива може "скакати" назад і вперед важко керованими способами.
3. Кажучи, що кубічні В-сплайни дають "задовільну" неперервність, мається на увазі, що око не може виявити геометричну неоднорідність степеня вище, ніж два і практично досить використовувати В-сплайни третього ступеня [9].
Отже, хоч кубічні В-сплайни і є методом, важчим у розрахунках, ніж інші, відомі методи, які застосовуються у задачах для наближення, але він дає набагато точніший результат, і є просто незамінним при розв’язуванні задач, які неможливо розв’язати іншими методами.
3.
Практична частина
3.1 Задача №1
Потрібно інтерполювати (використовуючи задачу першого або другого роду) одну з відомих функцій, з допомогою кубічних В-сплайнів, у випадку рівномірної сітки розбиття.
Розв’язання:
Для розв’язання цієї задачі візьмемо функцію і будемо її інтерполювати на відрізку , розбивши його на 6 рівних частин (). Маємо рівномірну сітку, отже будемо користуватися формулою (15’). Знайдемо і (задача інтерполяції першого роду): ,
(15’’) Виключимо із системи (16) і : , , (32)
і отримаємо наступну систему:
, (33) де
, ,
, ,(34)
, .
Розв’язавши систему (33), знайдемо коефіцієнти , для шуканого сплайна:
(де у нашому випадку ).
Отже необхідно знайти і підставити відповідні значення та розв’язати матричне рівняння:
,
де - тридіагональна матриця, а - шуканий вектор коефіцієнтів.
Для нашої функції маємо наступні дані:
,,
,,
,,
,,
,,
,,
,,
,.
Тоді три діагональна матриця і вектор відповідно дорівнюватимуть:
, ,
підставивши їх у матричне рівняння, отримаємо вектор :
,
,.
Отже, маємо інтерполяційний сплайн функції на проміжку :
Побудуємо його графік (в середовищі Matlab):
Мал. 4, 5 – Графіки функції
На малюнку 4 зображено графік функції , а на малюнку 5 – графік функції (зображено зеленим кольором), яка накладається на графік функції . Як бачимо наш інтерполяційний сплайн фактично повністю співпадає з і лише при великому збільшенні можна побачити розбіжності (малюнок 6 і 7), тобто має місце незначна похибка. Знайдемо її.
Мал. 6, 7 – Розбіжності
Для цього будемо шукати максимальну похибку на кожному з відрізків розбиття. Скористаємося наступними формулами:
,(35)
Отже на проміжку маємо графік зображений на малюнку 8 (побудований в середовищі Mathcad). Неозброєним оком похибки не видно, але вона є, і це показано на малюнку 9, який зображає функцію .
Мал. 8 – Графік, побудований в середовищі Mathcad
Мал. 9 – Найбільша похибка відрізку
Як видно з малюнка 9, найбільша похибка на даному відрізку приблизно дорівнює:
при і відповідно .
Аналогічно розглянемо всі проміжки розбиття і знайдемо максимальні значення похибок на кожному з них, які представлені в наступній таблиці:
сегмент | |||
0,27 | -2,023 | 0,021% | |
0,82 | -1,472 | 0,022% | |
1,36 | -0,584 | 0,028% | |
1,78 | 0,584 | 0,028% | |
2,34 | 1,489 | 0,021% | |
2,88 | 2,023 | 0,021% |
З таблиці видно, що максимальна похибка менша за 0,03%, і, оскільки, задовільною вважається похибка менша чим 5%, то отриману можна вважати практично нульовою.
3.2 Задача №2
Потрібно інтерполювати (використовуючи задачу першого або другого роду) одну з відомих функцій, з допомогою кубічних В-сплайнів, у випадку нерівномірної сітки розбиття.
Розв’язання:
Для розв’язання цієї задачі візьмемо функцію і будемо її інтерполювати на відрізку , розбивши його на 5 частин ([0,1], [1,9/5], [9/5,12/5], [12/5,14/5], [14/5,3]). Маємо нерівномірну сітку, отже будемо користуватися формулою (15). Знайдемо і (задача інтерполяції першого роду). Аналогічно, як і в першій задачі використаємо формули (34) і розв’яжемо систему (33). Для нашої функції маємо наступні дані:
-2 | -2 | ||
-1 | -1 | ||
0 | 0 | 1 | 1 |
1 | 1 | ||
2 | |||
3 | |||
4 | |||
5 | 3 | ||
6 | 3,1 | ||
7 | 3,2 |
,,
,,
,,
,,
,,
,,
,,
,
,.
Тоді тридіагональна матриця і вектор відповідно дорівнюватимуть:
,, підставивши
їх у матричне рівняння, отримаємо вектор :
,. Отже, маємо інтерполяційний сплайн функції на проміжку :
Побудуємо його графік (в середовищі Matlab):
Мал. 10 і 11 – Графік функції
На малюнку 10 зображено графік функції , а на малюнку 11 – графік функції (зображено синім кольором), яка накладається на графік функції . Як бачимо наш інтерполяційний сплайн фактично повністю співпадає з і лише при великому збільшенні можна побачити розбіжності (малюнок 12 і 13), тобто має місце незначна похибка. Знайдемо її.
Мал. 12, 13 – Розбіжності
Для цього будемо шукати максимальну похибку на кожному з відрізків розбиття. Скористаємося наступними формулами:
,(36)
Неозброєним оком похибки не видно, але вона є, і це показано на малюнку 14, який зображає функцію на кожному проміжку розбиття.
Мал. 14 – Похибки
Аналогічно, як і в попередній задачі розглядаємо всі проміжки розбиття і знаходимо максимальні значення похибок на кожному з них, які представлені в наступній таблиці:
Таблиця 5. - Всі проміжки розбиття
сегмент | |||
[0,1] | 0,5 | 1,786 | 0,1049% |
[1,] | 1,38 | -3,141 | 0,0682% |
[,] | 2,12 | -1,431 | 0,0228% |
[,] | 2,63 | 1,548 | 0,0028% |
[,3] | 2,82 | 1,813 | 0,0002% |
З таблиці видно, що максимальна похибка менша за 0,11%, і, оскільки, задовільною вважається похибка менша чим 5%, то отримана нас повністю задовольняє. Ще можна відзначити, що найменша величина похибки досягається на найменшому із сегментів розбиття, тобто чим менші проміжки розбиття тим більша точність (але розбиття на занадто малі сегменти може значно ускладнити обрахунки).
Висновки
У курсовій роботі було розглянуто лінійні , квадратичні та кубічні В-сплайни. Було отримано форми запису цих сплайнів та виведено деякі формулидлярозрахунків інтерполяційнихзадач.А також представлені рекурентні формули для виведення В-сплайнів 1-го, 2-го, 3-го та вищих порядків.
Із розглянутих сплайнів найкращі інтерполяційні якості мають кубічні В-сплайни, тому що саме вони забезпечують задовільну гладкість, на відмінно від лінійних і квадратичних В-сплайнів, а також для кубічних В-сплайнів використовуються порівняно нескладні обчислення, що не скажеш про сплайни вищих порядків, які до того ж можуть мати небажані скачки.
Необхідно відмітити перевагуВ-сплайнів надзвичайними сплайн-функціями. В-сплайни складаються з сегментів кривих, залежних тільки від кількох вузлових точок, і тому при локальних змінах крива змінюється лише на одному сегменті, ніяк не впливаючи на криві на інших сегментах.
Як було перевірено на практиці кубічні В-сплайни забезпечують дуже високу точність у розрахунках, яка складає менше ніж 0,2%, в той час як задовільною вважається похибка не більше 5%.
Отже, хоч кубічні В-сплайни, і є методом важчим у розрахунках ніж інші відомі методи, які застосовуються у задачах для наближення, але він дає набагато точніший результат, і є просто незамінним при розв’язуванні задач, які неможливо розв’язати іншими методами. Це дуже важливо, і тому В-сплайни доцільно вивчати у ВНЗ, щоб студенти могли розв’язувати, нерозв’язні раніше, задачі, і отримувати результати високої точності.
Кубічні В-сплайни мають численні застосування як в математичній теорії, так і в різноманітних обчислювальних задачах. Сплакни застосовують при вивченні «Чисельних методів», як додатковий метод інтерполяції, та при розв’язуванні рівнянь математичної фізики. Особливо зручно з допомогою сплайн-функцій розв’язувати апроксимаційні та інтерполяційні задачі.
Список використаних джерел
1.Корнейчук Н. П. Сплайны в теории приближения. / Н. П. Корнейчук. – М. : Наука, 1984. – 352с.
2.Сплайн – интерполяция. // Електронний ресурс: http://petrsu.karelia.ru/psu/Deps/IMO/Complex/part3/part34_a.htm
3.Калиткин Н. Н. Численные методы. / Н. Н. Калиткин. – М. : Нака, 1978. – 512с.
4.СеливановаИ. А. Интерполяция сплайнами. / И. А. Селиванова.–Свердловск: УПИ, 1989. – 11с.
5.Пак Т. В. Лабораторные работы по Численным методам. / Т. В. Пак. Учебно-методическое пособие. – Владивосток: Изд-во Дальневост. ун-та, 2006. – 24с.
6.Завьялов Ю. С. Методы сплайн-функций. / Ю. С. Завьялов, Б. И. Квасов, В. Л. Мирошниченко. – М. : Наука, 1980. – 280с.
7.В-сплайн. // Електронний ресурс: http://uk.wikipedia.org/wiki/B-сплайн
8.Шикин Е. В. Кривые и поверхности на экране компьютера. / Е. В. Шикин, Л. П. Плис. Руководство по сплайнам для пользователей. – М. : ДИАЛОГ-МИФИ, 1996. – 240с.
9.В-сплайны. // Електронний ресурс: http://www.masters.donntu.edu.ua/2005/kita/tribrat/library/splines.htm