1. 程式人生 > >Matlab 三次樣條插值多項式表示

Matlab 三次樣條插值多項式表示

Matlab Spline pp.coefs

如何運用MATLAB 三次樣條插值的問題,今天做作業,突然想用Matlab搞搞。

題目如下:

清華大學出版社的《數值分析(第5版)》

P49,20題。

x=[0.25 0.3 0.39 0.45 0.53];
y=[ 0.5 0.5477 0.6245 0.6708 0.7280 ]
pp=csape(x,y,'second',[0,0.0]);
disp(pp.coefs);

其中COEFS的含義是在Xi-Xi+1區間上的多項式是,例如COEFS陣列第一行的意思是在X=0.25到X=0.3的區間上時表示式是-6.2652*(X-0.25)^3+0.9697*(X-0.25)^1+0.5;

  -6.2652   0.0000   0.9697   0.5000
   1.8813  -0.9398   0.9227   0.5477
  -0.4600  -0.4318   0.7992   0.6245
   2.1442  -0.5146   0.7424   0.6708

csape,是計算在各種邊界條件下的三次樣條插值。

pp = csape(x,y,conds)

其中conds主要有以下的選項variational(自然邊界條件,首末點二階導數均為0),second(指定首末點的二階導數),periodic(週期性邊界條件,首末點的0~2階導數相等),complete(給定導數情況,預設)

function pp = csape(x,y,conds,valconds)

%pp=csape(x,y,'變界型別','邊界值'),生成各種邊界條件的三次樣條插值. 其中,(x,y)為資料向量
%邊界型別可為:'complete',給定邊界一階導數.
%            'not-a-knot',非扭結條件,不用給邊界值.
%            'periodic',週期性邊界條件,不用給邊界值.
%            'second',給定邊界二階導數.
%            'variational',自然樣條(邊界二階導數為0)
% .
%例 考慮資料
%         x | 1 2 4 5
%        ---|-------------
%         y | 1 3 4 2
%邊界條件S''(1)=2.5,S''(5)=-3,
%    x=[1 2 4 5];y=[1 3 4 2];
%    pp=csape(x,y,'second',[2.5,-3]);pp.coefs
%     xi=1:0.1:5;yi=ppval(pp,xi);
%     plot(x,y,'o',xi,yi);