于振廷
摘 要:二次樣條插值在工程設計上被廣泛應用,且具有計算簡單、穩定性好、收斂快等特點。憑借定義討論給定一階導數值時的二次樣條插值,并根據數據用MATLAB實現。
關鍵詞:二次樣條;插值;MATLAB
工程上的許多問題,為了顯示其內在規律的數量關系,我們都可用數學函數的思想y=f(x)來表示。有些問題其計算量大且較為復雜,難以還原準確的f(x)。[ 1 ]因此我們引入差值概念,用分段多項式P(x)近似f(x)。
一、二次樣條插值的特點
二次樣條插值是一種低階次的插值,與高階次插值相比較,它具有計算簡單、穩定性好、收斂性有保證且易在電子計算機上實現等特點,同時能保證在連接處的連續性及一階導數的連續性。[ 2 ]
二、二次樣條差值的定義
給定區間[a,b],取n+1個點分別x0,x1,x2,…xn,另a=x0,b=xn,二次樣條函數S(x)滿足以下條件:
1)S(x)在每個區間間隔[xi-1,xi](i=1,2,…,n)上是一個二階多項式;
2)S(x)在每一個內接點xi(i=1,2,…,n-1)上具有一階的連續導數;
3)S(x)在所有節點滿足S(xi)=yi(i=0,1,2,…,n)。
這樣就可以確定3n-1個方程,并在[a,b]的兩個端點處增加一個條件,這樣就能確定一個特定的二次樣條插值函數。這個條件即邊界條件,本文僅討論給定初始端點的一階導數值: (x0)= 0的情況。[ 3 ]
三、二次樣條插值的計算
給定初始端點一階導數值: (x0)= 0:[ 4 ]
在區間[x0,x1]內,已知S(x0)=y0,S(x1)=y1和 (x0)= 0,由Hermite插值公式可知:
S(x)= (x-x0)2+ 0(x-x0)+y0 (1)
其中hi=xi+1-xi(i=1,2,…,n-1),此時, 1= (x1)= - 0,同樣加上S(x1)=y1,S(x2)=y2,兩個條件可推導出區間[x1,x2]內的二次插值函數,以此類推得到區間內[xi,xi+1](i=1,2,…,n-1)二次樣條插值函數為:
S(x)= (x-xi)2+ i(x-xi)+yi(2)
而 i+1可由公式3遞推得到:
i+1= (xi+1)= - i (3)
四、二次樣條插值函數的MATLAB實現
我們以y=2sin(x)+1為例,在區間[0,π]上分為5段并計算x,y的數值,如表1,并計算得出其端點的一階導數值 =2。
我們僅根據數據x,y, ,用MATLAB的方法計算二次樣條插值,并畫出其仿真圖,如圖1。
表1
clear all
syms z;
x=0:(1/5)*pi:pi;y=[1.0000 2.1756 2.9021 2.9021 2.1756 1.0000];
y1(1,1)=2;n1=length(x)-1;
for i=1:1:n1;
A1=(y(1,i+1)-y(1,i)-(x(1,i+1)-x(1,i))*y1(1,i))/(x(1,i+1)-x(1,i))^2;A2=y1(1,i);A3=y(1,i);
y11(1,i)=A1;y12(1,i)=A2-2*A1*x(1,i);y13(1,i)=A1*x(1,i)^2-A2*x(1,i)+A3;
y1(1,i+1)=2*(y(1,i+1)-y(1,i))/(x(1,i+1)-x(1,i))-y1(1,i)
end
for i=1:1:n1
ai=y11(1,i);bi=y12(1,i);ci=y13(1,i);fi=ai*z.^2+bi*z+ci;ezplot(z,fi,[x(1,i),x(1,i+1)]);
hold on;end
由圖1可知二次樣條插值可以很好的還原原函數。
五、結語
本文對二次樣條插值進行介紹,并引用數據用MATLAB方法計算二次樣條插值,并給出相應的程序以及仿真圖。從結果上看二次樣條插值計算簡單,并可以很好的還原原函數。
參考文獻:
[1] 李慶楊,王能超.數值分析[M].第五版.北京:清華大學出版社,2008.12:22.
[2] 許小勇,鐘太勇.三次樣條插值函數的構造與Matlab實現[J].自動測量與控制,2006,第25卷第11期:76-78.
[3] 李岳生.多點邊值問題與樣條插值[J].中國科學,1983,第二期:147-156.
[4] 劉為,高毅.二次樣條插值研究[J].計算機與數學工程,2011,第3期:21-24.