資源描述:
《三次樣條插值作業(yè)題.docx》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、例1設(shè)為定義在[0,3]上的函數(shù),有下列函數(shù)值表:xi0123yi00.521.5且,,試求區(qū)間[0,3]上滿足上述條件的三次樣條插值函數(shù)本算法求解出的三次樣條插值函數(shù)將寫成三彎矩方程的形式:其中,方程中的系數(shù),,,將由Matlab代碼中的變量Coefs_1、Coefs_2、Coefs_3以及Coefs_4的值求出。以下為Matlab代碼:%=============================%本段代碼解決作業(yè)題的例1%=============================clearallclc%自變量x與因變量y,兩個邊界條件的取
2、值IndVar=[0,1,2,3];DepVar=[0,0.5,2,1.5];LeftBoun=0.2;RightBoun=-1;%區(qū)間長度向量,其各元素為自變量各段的長度h=zeros(1,length(IndVar)-1);fori=1:length(IndVar)-1h(i)=IndVar(i+1)-IndVar(i);end%為向量μ賦值mu=zeros(1,length(h));fori=1:length(mu)-1mu(i)=h(i)/(h(i)+h(i+1));endmu(i+1)=1;%為向量λ賦值lambda=zeros(1
3、,length(h));lambda(1)=1;fori=2:length(lambda)lambda(i)=h(i)/(h(i-1)+h(i));end%為向量d賦值d=zeros(1,length(h)+1);d(1)=6*((DepVar(2)-DepVar(1))/(IndVar(2)-IndVar(1))-LeftBoun)/h(1);fori=2:length(h)a=(DepVar(i)-DepVar(i-1))/(IndVar(i)-IndVar(i-1));b=(DepVar(i+1)-DepVar(i))/(IndVar(
4、i+1)-IndVar(i));c=(b-a)/(IndVar(i+1)-IndVar(i-1));d(i)=6*c;endd(i+1)=6*(RightBoun-(DepVar(i+1)-DepVar(i))/(IndVar(i+1)-IndVar(i)))/h(i);%為矩陣A賦值%將主對角線上的元素全部置為2A=zeros(length(d),length(d));fori=1:length(d)A(i,i)=2;end%將向量λ的各元素賦給主對角線右側(cè)第一條對角線fori=1:length(d)-1A(i,i+1)=lambda(i)
5、;end%將向量d的各元素賦給主對角線左側(cè)第一條對角線fori=1:length(d)-1A(i+1,i)=mu(i);end%求解向量MM=Ad';%求解每一段曲線的函數(shù)表達式fori=1:length(h)Coefs_1=M(i)/(6*h(i));Part_1=conv(Coefs_1,...conv([-1,IndVar(i+1)],...conv([-1,IndVar(i+1)],[-1,IndVar(i+1)])));S_1=polyval(Part_1,[IndVar(i):0.01:IndVar(i+1)]);Coefs_2
6、=M(i+1)/(6*h(i));Part_2=conv(Coefs_2,...conv([1,-IndVar(i)],...conv([1,-IndVar(i)],[1,-IndVar(i)])));S_2=polyval(Part_2,[IndVar(i):0.01:IndVar(i+1)]);Coefs_3=(DepVar(i)-M(i)*h(i)^2/6)/h(i);Part_3=conv(Coefs_3,[-1,IndVar(i+1)]);S_3=polyval(Part_3,[IndVar(i):0.01:IndVar(i+1)]
7、);Coefs_4=(DepVar(i+1)-M(i+1)*h(i)^2/6)/h(i);Part_4=conv(Coefs_4,[1,-IndVar(i)]);S_4=polyval(Part_4,[IndVar(i):0.01:IndVar(i+1)]);S=S_1+S_2+S_3+S_4;plot([IndVar(i):0.01:IndVar(i+1)],S,'LineWidth',1.25)%在樣條插值曲線的相應(yīng)位置標(biāo)注該段曲線的函數(shù)表達式text(i-1,polyval(Part_1,3),...['itS',num2str(i)
8、,'(x)=',num2str(Coefs_1),'(',num2str(IndVar(i+1)),'-x)^{3}+',...num2str(Coefs_2),'