Кубічний сплайн

Матеріал з testwiki
Перейти до навігації Перейти до пошуку

Кубічний сплайн — гладка функція, область визначення якої розбито на скінченне число відрізків, на кожному з яких вона збігається з деяким кубічним многочленом.

Опис

Функція f(x) задано на відрізку [a,b], розбитому на частини [xi1,xi], a=x0<x1<...<xN=b. Кубічним сплайном дефекту 1 (різниця між степенем і гладкістю сплайна) називається функція S(x), яка:

  • на кожному відрізку [xi1,xi] є многочленом степеня не вище від трьох;
  • має неперервні першу і другу похідні на всьому відрізку [a,b];
  • в точках xi виконується рівність S(xi)=f(xi), тобто сплайн S(x) інтерполює функцію fв точках xi.

Для однозначного задання сплайна перелічених умов недостатньо, для побудови сплайна необхідно накласти додаткові вимоги — граничні умови:

  1. «Природний сплайн» — граничні умови виду: S(a)=S(b)=0;
  2. Неперервність другої похідної — граничні умови виду: S(a)=S(b)=0;
  3. Періодичний сплайн — граничні умови виду: S(a)=S(b)і S(a)=S(b).

Теорема. Для будь-якої функції f і будь-якого розбиття відрізка [a,b] на частини [xi1,xi]існує рівно один природний сплайн Si(x), що задовольняє переліченим вище умовам.

Ця теорема є наслідком загальнішої теореми Шенберга — Вітні про умови існування інтерполяційного сплайна.

Побудова

На кожному відрізку [xi1,xi], i=1,N функція S(x) є многочленом третього степеня Si(x), коефіцієнти якого треба визначити. Запишемо для зручності Si(x) у вигляді:

Si(x)=ai+bi(xxi)+ci(xxi)2+di(xxi)3

тоді

Si(xi)=ai,S'i(xi)=bi,S'i(xi)=2ci,S'i(xi)=6dii=1,N.

Умови неперервності всіх похідних до другого порядку включно записуються у вигляді

Si(xi1)=Si1(xi1),

S'i(xi1)=S'i1(xi1),
S'i(xi1)=S'i1(xi1),

де i змінюється від 1 до N, а умови інтерполяції у вигляді

Si(xi)=f(xi).

Позначимо:hi=xixi1(i=1,N),fi=f(xi)(i=0,N)

Звідси отримуємо формули для обчислення коефіцієнтів «природного сплайна»:

ai=f(xi);
di=cici13hi;
bi=aiai1hi+2ci+ci13hi;
ci1hi+2ci(hi+hi+1)+ci+1hi+1=3(ai+1aihi+1aiai1hi),
причому cN=S(xN)=0 і c13d1h1=S(x0)=0.

Якщо врахувати, що c0=cN=0, то c можна обчислити методом прогонки для тридіагональної матриці.

Примітки

Шаблон:Примітки

Література

  1. Шаблон:Книга
  2. Шаблон:Книга
  3. Шаблон:Книга
  4. Шаблон:Книга

Посилання

Шаблон:Криві