Знаходження наближеного значення таблично заданої функції використовуючи кубічну сплайн-інтерполяцію

Використання однієї інтерполяційної формули для великого числа вузлів, як у випадку інтерполяційних формул Ньютона чи Лагранжа являється недоцільним. Такий інтерполяційний многочлен сильно проявляє свої коливальні властивості, і його значення між вузлами можуть сильно відрізнятися від значень інтерпольованої функції. Однією з можливостей обійти такий недолік є застосування сплайн-інтерполяції. Ідея сплайн-інтерполяції полягає в побудові поліномів між парами сусідніх вузлів інтерполяції, причому для кожної пари вузлів будується свій поліном. Найпоширеніший у практиці є кубічний сплайн, для побудови якого необхідно побудувати n многочленів третьої степені:

Сплайн-інтерполяція

Для визначення невідомих Сплайн-інтерполяція многочлена (1) необхідно 4n рівняннь. Частина з них, а саме 2n, може бути отримана з умови проходження сплайна через вузли інтерполяції Сплайн інтерполяція:

Сплайн-інтерполяція

де Сплайн-інтерполяція. Науступні (2n-2) рівняння знайдемо з умови неперервності перших і других похідних у вузлах інтерполяції, тобто з умови гладкості кривої в усіх точках. Для цього знайдемо першу і другу похідну тричлена (1):

Сплайн-інтерполяція

після чого прирівняємо отримані похідні в точці Сплайн-інтерполяція, обчисленні через лівий і правий інтервал від Сплайн-інтерполяція (Сплайн-інтерполяція):

Сплайн-інтерполяція

Замінивши у формулах (4), (5) Сплайн-інтерполяція з урахуванням Сплайн-інтерполяція, отримаємо:

Сплайн-інтерполяція

На даному етапі ми маємо 4n невідомих і (4n-2) рівняння. Тобто, необхідно знайти ще два рівняння. Їх отримаємо прирівнявши до нуля другі похідні в першому і останньому вузлах інтерполяції: Сплайн-інтерполяція. В результаті будемо мати:

Сплайн-інтерполяція

Таким чином ми отримали систему лінійних алгебраїчних рівнянь, яка складається з рівнянь (2), (3), (6)-(9) і з допомогою якої легко можна знайти невідомі коефіцієнти Сплайн-інтерполяція. Для цього приведемо її до більш зручного вигляду. З умови (2) знаходимо всі коефіцієнти Сплайн-інтерполяція. Далі, з (7)- (9) отримуємо:

Сплайн-інтерполяція

Підставляючи (2), (8) і (9) у формулу (3), отримаємо розрахункові формули для обчислення коефіцієнтів Сплайн-інтерполяція:

Сплайн-інтерполяція

Підставимо тепер формули (10), (11) у формулу (7), і таким чином виключимо з неї невідомі Сплайн-інтерполяція та Сплайн-інтерполяція. В рузультаті отримуємо систему рівнянь з трьохдіагональною матрицею у якій невідомими являються тільки коефіцієнти Сплайн-інтерполяція:

spline_interpolation44

Розв’язавши її методом прогонки, за  знайденими коефіцієнтами Сплайн-інтерполяція знаходимо Сплайн-інтерполяція і Сплайн-інтерполяція. Тобто, для того, щоб знайти наближене значення таблично заданої функції у вузлах відмінних від заданих, використовуючи для цього кубічну сплайн-інтерполяцію, необхідно в першу чергу знайти коефіцієнти Сплайн-інтерполяція, в наступній послідовності: спочатку з формули (2) знаходимо коефіцієнти Сплайн-інтерполяція; далі, розв’язавши систему (12) знаходимо Сплайн-інтерполяціяСплайн-інтерполяція та Сплайн-інтерполяція знаходимо з допомогою формул (10) та (11) відповідно. Наступним кроком є визначення інтервалу Сплайн-інтерполяція в який потрапляє аргумент Сплайн-інтерполяція після чого, в якості наближеного значення в цій точці береться значення: Сплайн-інтерполяція.

Кубічна сплайн-інтерполяція – приклад:

Знайти наближене значення функції spline_interpolation341 в точці spline_interpolation351, якщо відома наступна таблиця її значень:

Таблиця фіксованих значень функції

Розв’язок даної задачі будемо здійснювати використовуючи формулу кубічної сплайн-інтерполяції (1). Для цього, в першу чергу, необхідно відшукати значення її коефіцієнтів при невідомих.

Отже, як уже зазначалось вище, на першому кроці, скориставшись формулою (2) знаходимо коефіцієнти Сплайн-інтерполяція:

spline_interpolation43

Далі, використовуючи формулу (12), запишемо рівняння системи з трьохдіагональною матрицею. Розв’язавши дану систему, отримаємо значення коефіцієнтів Сплайн-інтерполяція:

На останньому кроці, скориставшись формулами (10) та (11) знаходимо коефіцієнти Сплайн-інтерполяція таСплайн-інтерполяція:

spline_interpolation39

Після того, як значення всіх коефіцієнтів spline_interpolation46 відомі, переходимо до відшукання наближеного значення функції у заданій точці. Для цього, визначемо між якими вузлами фіксованих значень міститься точка spline_interpolation351. В нашому випадку вона міститься між вузлами spline_interpolation40 та spline_interpolation41. Далі, для даної пари сусідніх вузлів, побудуємо інтерполяційний поліном. В результаті отримаємо:

spline_interpolation45

Підставляючи в дану формулу spline_interpolation351, отримуємо наближене значення функції у заданій точці:

spline_interpolation42

Блок-схема програмної реалізації наближення таблично заданої функції використовуючи кубічну сплайн-інтерполяцію:

spline_interpolation47

6 коментарів

  1. Було би добре, якщо можна було побачити, якою вийшла тридіагональна матриця для тестових даних, що тут є. Це зекономить величезну кількість часу на розуміння алгоритму.

  2. Доброго дня paul. Не зовсім зрозумілою являється Ваша репліка “Було би добре, якщо можна було побачити, якою вийшла тридіагональна матриця для тестових даних, що тут є”. Якщо мова йде про приклад, що розглядається в параграфі, а якщо бути більш точним, то про процес знаходження коефіцієнтів ci, то у розміщеному вище рішенні, все це міститься.

  3. У формулі (12) помилка. Якщо комірки нумеруються від 1 до n,то вираз y_{i-1}-y_{i-2},де y_{0} це неіснуючий елемент для i=2, хоча індексація починається з 1.Мабудь там повинно бути 3*((y_{i+1}-y_{i})/h_{i}-(y_{i}-y_{i-1})/h_{i-1})

  4. Шановний noadmin, формула (12) є безпомилковою (індексація елементів таблично заданої функції починається з нуля).

  5. Так, як і всіх решту масивів з блок схеми?

  6. Ні Богдан. Індексація решти масивів з блок-схеми починається з одиниці.

Залишити коментар

Your email address will not be published. Required fields are marked *

*