Lagrange插值

Lagrange插值

参考书目:张德丰,MATLAB数值计算方法,机械公业出版社,P122

原理:

插值基函数

l i ( x ) = ( x − x 0 ) … ( x − x i − 1 ) ( x − x i + 1 ) … ( x − x n ) ( x i − x 0 ) … ( x i − x i − 1 ) ( x i − x i + 1 ) … ( x i − x n ) l_{i}(x)=\frac{(x-x_{0})\dots(x-x_{i-1})(x-x_{i+1})\dots(x-x_n)} {(x_i-x_0)\dots(x_i-x_{i-1})(x_i-x_{i+1})\dots(x_i-x_n)} li(x)=(xix0)(xixi1)(xixi+1)(xixn)(xx0)(xxi1)(xxi+1)(xxn)
插值函数

function f = Lagrange(x,y,x0)
syms t;			% 创建符号对象
if(length(x) == length(y))
	n = length(x);
else
	disp('x和y维数不相等');
	return;
end

f = 0.0;
for (i = 1:n)
	l = y(i);
	for (j = 1:i-1)
		l = l*(t-x(j))/(x(i)-x(j));
	end;
	for(j = i+1:n)
		l = l*(t-x(j))/(x(i)-x(j));
	end;
	f = f+l;
	simplify(f);
	if(i==n)
		if(nargin==3)
			f = subs(f,'t',x0);		%将t替换成x0进行计算
		else
			f = collect(f);
			f = vpa(f,6);
		end
	end
end

主调函数

x = [1,1.2,1.8,2.5,4]
y = [0.8415,0.9320,0.9738,0.5985,-0.7568]
f = Lagrange(x,y)
f1 = Lagrange(x,y,1.6);
f1 = vpa(f1,4)

x = 1:0.01:4;
y = 0.0328112*x.^4 - 0.204917*x.^3 - 0.0145485*x.^2 + 1.05427*x - 0.0261189;
x1 = [1,1.2,1.8,2.5,4];
y1 = [ 0.8415,0.9320,0.9738,0.5985,-0.7568];
plot(x,y,x1,y1,'ro');grid

运算结果

>> Lagrange_Main
x =
    1.0000    1.2000    1.8000    2.5000    4.0000
y =
    0.8415    0.9320    0.9738    0.5985   -0.7568
f =
	0.0328112*t^4 - 0.204917*t^3 - 0.0145485*t^2 + 1.05427*t - 0.0261189
f1 =
	0.9992

lagrange插值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值