資源簡介
在matlab中實現三次樣條插值,在周期邊界條件下,以龍格函數為例。
代碼片段和文件信息
function?y=cubicspline3(x)?
%第三類周期邊界條件下三次樣條插值;
%x?=?linspace(-1140);
%x所求點;
%y所求點函數值;
%x0?已知插值點;
%y0?已知插值點函數值;
%f_0左端點一次導數值;
%f_n右端點一次導數值;
x0?=?linspace(02*pi20);
y0=sin(x0);
n?=?length(x0);
z?=?length(y0);
h?=?zeros(n-11);
k=zeros(n-21);
l=zeros(n-21);
S=2*eye(n);
for?i=1:n-1
????h(i)=?x0(i+1)-x0(i);
end
for?i=1:n-2
????k(i)=?h(i+1)/(h(i+1)+h(i));
????l(i)=?1-k(i);
end
%對于第一種邊界條件:
k?=?[0;k];??????????????
l?=?[l;0]; ?
%構建系數矩陣A:
for?i?=?1:n-1
????S(ii+1)?=?k(i);
????S(i+1i)?=?l(i);
end
S(2n)=S(21);
S(21)=0;
S(n2)=h(1)/(h(1)+h(n-1));
S(nn-1)=h(n-1)/(h(1)+h(n-1));
%建立均差表:
F=zeros(n-12);
for?i?=?1:n-1
????F(i1)?=?(y0(i+1)-y0(i))/(x0(i+1)-x0(i));
end
D?=?zeros(n-21);
for?i?=?1:n-2
????F
評論
共有 條評論