matlab插值法实例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Several Typical Interpolation in Matlab
Lagrange Interpolation
Supposing:
If x=175, while y=?
Solution:
Lagrange Interpolation in Matlab:
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
input:
x0=[144 169 225]
y0=[12 13 15]
y=lagrange(x0,y0,175)
obtain the answer:
x0 =
144 169 225
y0 =
12 13 15
y =
13.2302
Spline Interpolation
Solution :
Input x=[ 1 4 9 6];y=[ 1 4 9 6];x=[ 1 4 9 6];pp=spline(x,y) pp = form: 'pp' breaks: [1 4 6 9] coefs: [3x4 double] pieces: 3 order: 4 dim: 1 output : pp.coefs ans =
-0.0500 0.5333 -0.8167 1.0000 -0.0500 0.0833 1.0333 2.0000 -0.0500 -0.2167 0.7667 4.0000 It shows the coefficients of cubic spline polynomial , so:
S (x )=,
169,3)9(1484.0)9(0063.0)9(0008.0,94,2)4(2714.0)4(0183.0)4(0008
.0,
41,1)1(4024.0)1(0254.0)1(0008.0232
3
23≥≤+-+---≥≤+-+---≥≤+-+---x x x x x x x x x x x x
Newton’s Interpolation
Resolve
65
Solution:
Newton’s Interpolation in matlab :
function yi=newint(x,y,xi); n=length(x); ny=length(y); if n~=ny
error end
Y=zeros(n);Y(:,1)=y';
for k=1:n-1
for i=1:n-k
if abs(x(i+k)-x(i)) Y(i,k+1)=(Y(i+1,k)-Y(i,k))/(x(i+k)-x(i)); end end m=length(xi);yi=zeros(1,m); for i=1:n; z=ones(1,m); for k=1:i-1; z=z.*(xi-x(k)); end yi=yi+Y(1,i)*z; end input: x=[1 4 9]; y=[1 2 3]; xi=[5 6]; yi=newint(x,y,xi); operate the program and obtain the answer : yi= 2.2667 2.5000 The difference between several One-dimensional Interpolations like `nearest`、`linear`、`spline`、`cubic` Supposing ()π4,0∈x ,y = sin(x).*exp(-x/5),plot the figure . Solution: program of MA TLAB : x = 0:1:4*pi; y = sin(x).*exp(-x/5); xi = 0:0.1:4*pi; y1 = interp1(x, y, xi, 'nearest'); y2 = interp1(x, y, xi, 'linear'); y3 = interp1(x, y, xi, 'spline'); y4 = interp1(x, y, xi, 'cubic'); plot(x, y , 'o', xi ,y1 ,'g-' ,xi ,y2 ,'r:' ,xi ,y3 ,'k-.', xi, y4, 'b--'); legend('Original', 'Nearest', 'Linear', 'Spline', 'Cubic'); operate the program and obtain the figure : (It shows that the smoothness of 'nearest' is the worst and `cubic` is the best.)