❶ matlab中的csape怎麼使用
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);
pp0 = csape(x,[1,zeros(1,length(y)),0],[1,0]);
pp = csape( x, [1 sin(x) 0], [1 2] ) %左邊的點一階導數為1,右邊的點二階導數為0
splinetool是一個圖形化的插值工具
lagrange插值,由於lagrange插值可能不收斂,所以工程中很少有人用這種插值。matlab中沒有專門的lagrange插值函數。但我們可以自己編一個,如下:
%lagrange插值子函數
function y=lagrange(x0,y0,x)
n=length(x0); m=length(x);
for i=1:m
z=x(i);
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if j~=k
p=p*(z-x0(j))/(x0(k)-x0(j));
end
end
s=p*y0(k)+s;
end
y(i)=s;
end