一、基本原理
比如有如下这些点
x1 | x2 | x3 | x4 |
---|---|---|---|
y1 | y2 | y3 | y4 |
那么在拉个朗日原理中可以把过这些点的曲线表示为:
其g(x)y叫做一个插值基函数 (开关),当x=x1时,g1(x)=1,而当x=x2,x3,x4时,g1(x)都为0,其他的也是如此,这样当x=x1时,f(x)中就只保留了g1(x)y1项,其他项都为0,就保证了过点(x1,y1);其他点以此类推;
原理讲解得很简单,具体可以参考其他文献资料。
二、Matlab代码
matlab
clear
clc
x = [466 741 950 1422 1634];
y = [7.04 4.28 3.40 2.54 2.13];
x1 = min(x):0.5:max(x);
y1 = lagrange(x,y,x1);
plot(x,y,'ko',x1,y1,'r-')
function fx = lagrange(x0,y0,x)
m = length(x);
n = length(x0);
for i = 1:m
z = x(i);
s = 0;
for k = 1:n
p = 1;
for j = 1:n
if j~=k
p = p * (z-x0(j))/(x0(k)-x0(j));
end
end
s = p*y0(k)+s;
end
fx(i) = s;
end
end