魏霖靜 鄭琯荷(甘肅農(nóng)業(yè)大學(xué)信息科學(xué)技術(shù)學(xué)院 甘肅 蘭州 730070)
三次樣條插值函數(shù)在多媒體課件中的實(shí)現(xiàn)
魏霖靜 鄭琯荷
(甘肅農(nóng)業(yè)大學(xué)信息科學(xué)技術(shù)學(xué)院 甘肅 蘭州 730070)
作為計(jì)算方法中的一種重要的插值函數(shù),三次樣條插值函數(shù)一直是學(xué)生學(xué)習(xí)的一大重點(diǎn)及難點(diǎn),要如何學(xué)好三次樣條插值函數(shù)也成了教師和學(xué)生共同思考的問(wèn)題。通過(guò)多媒體課件可以更好的表達(dá)這一函數(shù)的思想。
三次樣條插值函數(shù);多媒體課件
三次樣條插值函數(shù)是教學(xué)的重點(diǎn)及難點(diǎn),普通的板書(shū)及講授不能很好的讓學(xué)生了解掌握這個(gè)函數(shù),因此,我們使用多媒體課件的形式來(lái)表達(dá),讓學(xué)生清晰明了的掌握。
函數(shù)S(x)∈C2[a,b],且在每個(gè)小區(qū)間[xj,xj+1]上是三次多項(xiàng)式,其中a=x0 若在節(jié)點(diǎn)xj上給定函數(shù)值Yj=f(Xj).(j=0,1,,n),并成立S(xj)=yj.(j= 0,1,,n),則稱(chēng)S(x)為三次樣條插值函數(shù)。 由于插值節(jié)點(diǎn)有n+1個(gè),故得到n個(gè)小區(qū)間,而每個(gè)小區(qū)間上要求一個(gè)三次多項(xiàng)式,每個(gè)區(qū)間需要4個(gè)條件,所以要確定樣條函數(shù)S,共需要4n個(gè)條件。 在插值節(jié)點(diǎn)上,S(xj)=f(xj),j=0,1,2,...,n,得到n+1個(gè)條件,在j=1,2,...,n-1,由S,S的一階導(dǎo)數(shù),S的二階導(dǎo)數(shù)連續(xù)可以得到3(n-1)個(gè)條件,所以總共得到了,4n-2個(gè)條件,要確定S還需要兩個(gè)條件。就是通常所說(shuō)的邊界條件。 邊界通常有自然邊界(邊界點(diǎn)的導(dǎo)數(shù)為0),夾持邊界(邊界點(diǎn)導(dǎo)數(shù)給定),非扭結(jié)邊界(使兩端點(diǎn)的三階導(dǎo)與這兩端點(diǎn)的鄰近點(diǎn)的三階導(dǎo)相等)。一般的計(jì)算方法書(shū)上都沒(méi)有說(shuō)明非扭結(jié)邊界的定義,但數(shù)值計(jì)算軟件如Matlab都把非扭結(jié)邊界條件作為默認(rèn)的邊界條件 如果假設(shè)S'(xi)=mi,i=0,1,…,n,利用分段Hermite插值多項(xiàng)式,當(dāng)x∈[xi-1,xi]時(shí): 其中hi=xi-xi-1。為確定S(x),只要確定mi,i=0,1,…,n。就可以用S"(xi-0)=S"(xi+0)來(lái)求出mi。 當(dāng)x∈[xi-1,xi]時(shí),由于: 所以可得出: 3(λif[xi-1,xi]+μif[xi,xi+1])=gi,最后得出: λimi-1+2mi+μimi+1=gi,i=1,2,…,n-1. (*式) 再結(jié)合不同的邊界條件,可得到關(guān)于mi的方程。 如邊界條件為:m0=y'0,mn=y'n,帶入(*式)可得: 如邊界條件為:S"(x0)=y"0,S"(xn)=y"n,則有: 連同(*式)一起,可得: 如邊界條件是周期性邊界條件,由S'(x0+0)=S'(xn-0),和S"(x0+0)=S" (xn-0),得到m0=mn和λnmn-1+2mn+μnm1=gn,其中: 所以得到: 在Matlab[2]環(huán)境下根據(jù)上述算法步驟進(jìn)行編 程,主要源程序段如下: function[]=spline3(X,Y,dY,x0,m) N=size(X,2); s0=dY(1);sN=dY(2); interval=0.025; disp('x0為插值點(diǎn)') x0 h=zeros(1,N-1); for i=1:N-1 h(1,i)=X(i+1)-X(i);end d(1,1)=6*((Y(1,2)-Y(1,1))/h(1,1)-s0)/h(1,1); d(N,1)=6*(sN-(Y(1,N)-Y(1,N-1))/h(1,N-1))/h(1,N-1); for i=2:N-1 d(i,1)=6*((Y(1,i+1)-Y(1,i))/h(1,i)-(Y(1,i)-Y(1,i-1)) /h(1,i-1))/(h(1,i)+h(1,i-1));end mu=zeros(1,N-1);md=zeros(1,N-1); md(1,N-1)=1;mu(1,1)=1; for i=1:N-2 u=h(1,i+1)/(h(1,i)+h(1,i+1));mu(1,i+1)=u; md(1,i)=1-u;end p(1,1)=2;q(1,1)=mu(1,1)/2; for i=2:N-1 p(1,i)=2-md(1,i-1)*q(1,i-1);q(1,i)=mu(1,i)/p(1,i);end p(1,N)=2-md(1,N-1)*q(1,N-1); y=zeros(1,N);y(1,1)=d(1)/2; for i=2:N y(1,i)=(d(i)-md(1,i-1)*y(1,i-1))/p(1,i);end x=zeros(1,N);x(1,N)=y(tǒng)(1,N); for i=N-1:-1:1x(1,i)=y(tǒng)(1,i)-q(1,i)*x(1,i+1);end fprintf('M為三對(duì)角方程的解
');M=x; 在c語(yǔ)言[3]環(huán)境下根據(jù)上述算法步驟進(jìn)行編程,主要源程序段如下: void cubic_getval (real_T*y,const int_T*size,const real_T*map,const real_T x,const int_T step) { int_T n=size[0]; //曲線系數(shù) real_T*ai=(real_T*)malloc(sizeof(real_T)*(n-1)); real_T*bi=(real_T*)malloc(sizeof(real_T)*(n-1)); real_T*ci=(real_T*)malloc(sizeof(real_T)*(n-1)); real_T*di=(real_T*)malloc(sizeof(real_T)*(n-1)); real_T*h=(real_T*)malloc(sizeof(real_T)*(n-1));//x的?? /*M矩陣的系數(shù) *[B0,C0,... *[A1,B1,C1,... *[0,A2,B2,C2,... *[0,... An-1,Bn-1] */ real_T*A=(real_T*)malloc(sizeof(real_T)*(n-2)); real_T*B=(real_T*)malloc(sizeof(real_T)*(n-2)); real_T*C=(real_T*)malloc(sizeof(real_T)*(n-2)); real_T*D=(real_T*)malloc(sizeof(real_T)*(n-2));//等號(hào)右邊的常數(shù)矩陣; real_T*E=(real_T*)malloc(sizeof(real_T)*(n-2));//M矩陣 real_T*M=(real_T*)malloc(sizeof(real_T)*(n));//包含端點(diǎn)的M矩陣; 分段插值 分段線性插值 分段三次Hermite插值 分段插值可以得到整體連續(xù)函數(shù),但在連接點(diǎn)處一般不光滑,而Hermite插值雖然在連接點(diǎn)處一階光滑,但整體插值由于結(jié)點(diǎn)多次數(shù)高而有可能發(fā)生龍格現(xiàn)象。 希望:既想分段插值,又想在結(jié)點(diǎn)處保持光滑,甚至二階光滑——三次樣條。 三次樣條插值 舉例說(shuō)明: 例4:對(duì)如下Runge現(xiàn)象中的函數(shù),求用n分點(diǎn)作節(jié)點(diǎn)的三次樣條插值多項(xiàng)式s3(x)的圖像。 取n=5,10,20等,將區(qū)間等分成n份,取分點(diǎn)作為插值節(jié)點(diǎn),利用matldb函數(shù)csape()作出它的三次樣條插值函數(shù),并作出這些插值函數(shù)與被插函數(shù)的圖像。 但由于插值節(jié)點(diǎn)數(shù)目較多,故不列出插值函數(shù)的表達(dá)式,只畫(huà)出它們的圖象與被插函數(shù)的圖象的復(fù)合,從這些圖象可以看出,隨著節(jié)點(diǎn)數(shù)目的增多,樣條插值函數(shù)圖象越來(lái)越符合被插函數(shù),因此避免Runge現(xiàn)象,也就是說(shuō)三次樣條插值函數(shù)具有收斂性。 用多媒體課件表達(dá)出來(lái)的三次樣條插值函數(shù),能生動(dòng)形象的表達(dá)出來(lái).讓學(xué)生和教師都能在課堂上達(dá)到事半功倍的效果。 [1]易大義,沈云寶,李有法.計(jì)算方法[M].浙江:浙江大學(xué)出版社,2002,(6):55-63. [2]張錚,楊文平,石博強(qiáng),等.MATLAB程序設(shè)計(jì)與實(shí)例應(yīng)用[M].北京:中國(guó)鐵道出版社,2003. [3]http://www.cnblogs.com/xpvincent/archive/2013/01/26 / 2878092 .html. G642.3 A 2095-7327(2016)-04-0097-03 蘭州市科技局項(xiàng)目編號(hào)2014-1-74。 魏霖靜(1977—),女,甘肅農(nóng)業(yè)大學(xué)信息科學(xué)技術(shù)學(xué)院副教授,博士,研究方向?yàn)橹悄苡?jì)算,生物信息學(xué)、網(wǎng)絡(luò)。2.三次樣條插值函數(shù)的推導(dǎo)過(guò)程
3.經(jīng)典算法
4.三次樣條插值算法的多媒體課件表示
5.結(jié)論