اسپلاین مکعبی

درون‌یابی

تابع S(x)S(x) را درونیاب اسپلاین مکعبی در نقاط x0,x1,…,xnx_0, x_1, \ldots, x_n می‌نامیم اگر ۷ خاصیت زیر برقرار باشند:

۱) روی هر زیر بازه‌ی [xi,xi+1][x_i, x_{i+1}] برای هر x داشته باشیم S(x)=Si(x)S(x) = S_i(x) یعنی

S(x)={S0(x),x∈[x0,x1]S1(x),x∈[x1,x2]⋮Sn−1(x),x∈[xn−1,xn]S(x) = \begin{cases} S_0(x) & , x \in [x_0, x_1] \\ S_1(x) & , x \in [x_1, x_2] \\ \vdots \\ S_{n-1}(x) & , x \in [x_{n-1}, x_n] \end{cases}

۲) برای هر i=0,1,…,ni = 0, 1, \ldots, n تابع Si(x)S_i(x) یک چند جمله‌ای از درجه‌ی حداکثر ۳ است.

۳) برای هر i=0,1,…,ni = 0, 1, \ldots, n داشته باشیم Si(xi)=fiS_i(x_i) = f_i. از طرفی Sn−1(xn)=fnS_{n-1}(x_n) = f_n یعنی برای هر i=0,1,…,n−1i = 0, 1, \ldots, n-1 داشته باشیم Si(xi+1)=Si+1(xi+1)S_i(x_{i+1}) = S_{i+1}(x_{i+1}).

۴) برای هر i=0,1,…,n−2i = 0, 1, \ldots, n-2 داشته باشیم Si(xi+1)=Si+1(xi+1)S_i(x_{i+1}) = S_{i+1}(x_{i+1}).

۵) برای هر i=0,1,…,n−1i = 0, 1, \ldots, n-1 داشته باشیم Si′(xi+1)=Si+1′(xi+1)S_i'(x_{i+1}) = S_{i+1}'(x_{i+1}).

۶) برای هر i=0,1,…,n−1i = 0, 1, \ldots, n-1 داشته باشیم Si′′(xi+1)=Si+1′′(xi+1)S_i''(x_{i+1}) = S_{i+1}''(x_{i+1}).

۷) یکی از شرایط مرزی زیر برقرار باشد:

الف) شرط مرزی آزاد(اسپلاین طبیعی):

S′′(x0)=S′′(xn)=0S''(x_0) = S''(x_n) = 0

ب) شرط مرزی مشتق دوم:

S′′(x0)=f′′(x0)وS′′(xn)=f′′(xn)S''(x_0) = f''(x_0) \quad و \quad S''(x_n) = f''(x_n)

قرار می‌دهیم

hi=xi+1−xi,i=0,1,…,nh_i = x_{i+1} - x_i, \quad i = 0, 1, \ldots, n

همچنین قرار می‌دهیم

Si(x)=ai+bi(x−xi)+ci(x−xi)2+di(x−xi)3S_i(x) = a_i + b_i(x - x_i) + c_i(x - x_i)^2 + d_i(x - x_i)^3

برای S(x)S(x) داریم

ai=fi,i=0,1,…,na_i = f_i, \quad i = 0, 1, \ldots, n

cic_i ها از دستگاه معادلات خطی زیر به دست می‌آیند.

{c0=13S′′(x0)hi−1ci−1+2(hi−1+hi)ci+hici+1=3hi(ai+1−ai)−3hi−1(ai−ai−1),i=1,…,n−1cn=13S′′(xn)\begin{cases} c_0 = \frac{1}{3} S''(x_0) \\ h_{i-1}c_{i-1} + 2(h_{i-1} + h_i)c_i + h_ic_{i+1} = \frac{3}{h_i} (a_{i+1} - a_i) - \frac{3}{h_{i-1}} (a_i - a_{i-1}), & i = 1, \ldots, n-1 \\ c_n = \frac{1}{3} S''(x_n) \end{cases}

did_i ‌ها نیز از رابطه‌ی زیر محاسبه می‌شود.

di=ci+1−ci3hi,i=0,1,…,n−1d_i = \frac{c_{i+1} - c_i}{3h_i}, \quad i = 0, 1, \ldots, n-1

و در نهایت، bib_i ‌ها به صورت زیر به دست می‌آیند

bi=1hi(ai+1−ai)−hi3(2ci+ci+1),i=0,1,…,n−1b_i = \frac{1}{h_i} (a_{i+1} - a_i) - \frac{h_i}{3} (2c_i + c_{i+1}), \quad i = 0, 1, \ldots, n-1

روش‌های مرتبط