85984 (574964), страница 2
Текст из файла (страница 2)
Нехай задана таблиця чисел
і
, котрі є значеннями функції
і її першої похідної
у вузлах i, i =0,1, ..., N. Необхідна апроксимувати функцію W() з допомогою цих даних.
Розглянемо апроксимацію кубічними В-сплайнами. Конструкція нормованого
кубічного В-сплайна зазвичай задається так:
(17)
В правій частині (17) стоять многочлени третього степеня виду:
(18)
Коефіцієнти ai , bi , ci , di визначаються із системи чотирьох рівнянь, отриманих при умовах:
и
. В результаті її розв’язку можна записати:
(19)
,
,
При конкретизації виразу (18) використовуються формули (19), що задовольняють умови стику у вузлах i-2, i-1, i , i+1 для сплайнів:
(20)
Та їх похідних по , позначених штрихом:
(21)
В роботі Б.Зав’ялова [6] для рівномірної сітки
i=0,1, ... , N, задовольняючи наступні умови (20), (21), отримано такий вираз для
Тут
,
а також з’ясовано, що S0=2/3, S*=1/6, S**=1/2h.
Загальний інтерполяційний вираз, в якому використовуються нормовані кубічні В-сплайни (22), записуються так:
, (23)
де
, а
. Коефіцієнти
bi+1,bi+2 визначаються із умов, що задовольняють значення функції W(), відомих в деяких вузлах
. Зазвичай вибирають
,
, а
задовольняють нерівність:
.
Запишемо (23) в розгорнутому вигляді. Для цього, використавши (22) отримаємо всі вирази для
. Сплайн
отримаємо із четвертої рівності (22), якщо там формально замінити на 1+ . Тоді
(24)
Вираз для
береться безпосередньо із (22)
(25)
Сплайн
записується на основі другої рівності (22) шляхом формальної заміни на -1
(26)
І, нарешті із першого виразу (22), замінюючи на -2, отримаємо:
. (27)
Тоді остаточний варіант інтерполяційного виразу, основаного на застосуванні нормованих кубічних В-сплайнів, отримаємо шляхом підстановки виразів (24)-(27) в (23)
(28)
Вираз (28) дає четвертий порядок апроксимації функції
по кроку h 0( h4 ) . Якщо в формулі (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 |
|
,
,
,
,
,
,














