Matlab 三次樣條插值多項式表示
阿新 • • 發佈:2019-01-28
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)
%邊界型別可為:'complete',給定邊界一階導數.
% 'not-a-knot',非扭結條件,不用給邊界值.
% 'periodic',週期性邊界條件,不用給邊界值.
% 'second',給定邊界二階導數.
% 'variational',自然樣條(邊界二階導數為0)
% .
%例 考慮資料
% x | 1 2 4 5
% ---|-------------
% y | 1 3 4 2
% 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);