Matlab进行Lagrange多项式插值
拉格朗日插值法对函数y=1./(1+25*x.^2)在区间[-1,1]进行5次、10次、15次插值观察龙格现象 主程序
1.拉格朗日
function [c,l]=lagran(x,y)
%c为多项式函数输出的系数 %l为矩阵的系数多项式 %x为横坐标上的坐标向量 %y为纵坐标上的坐标向量 w=length(x); n=w-1;
l=zeros(w,w); for k=1:n+1 v=1;
for j=1:n+1 if k~=j
v=conv(v,poly(x(j)))/(x(k)-x(j)) %对多项式做卷积运算 end end l(k,:)=v; end c=y*l;
2.在matlab窗口中输入:
x=linspace(-1,1,6);y=1./(1+25*x.^2); lagran(x,y)
回车可得结果: ans =
在matlab窗口中输入:
x=linspace(-1,1,11);y=1./(1+25*x.^2); lagran(x,y)
回车可得结果: ans =
在matlab窗口中输入:
x=linspace(-1,1,16);y=1./(1+25*x.^2); lagran(x,y)
回车可得结果: ans =
+003 *
Columns 1 through 14
Columns 15 through 16
3.由以上结果可定义一下函数: function y=f1(x) y=1./(1+25*x.^2); function y=f2(x) y=*x.^4 *x.^2+; function y=f3(x)
y=*x.^10+*x.^*x.^6+*x.^*x.^2+1; function y=f4(x)
y=1*10^3**x.^14+*x.^*x.^10+*x.^*x.^6+*x.^*x.^2+ 4. 在matlab窗口中输入:
s1=@f1;s2=@f2;s3=@f3;s4=@f4;fplot(s1,[-1 1],'r');hold on;fplot(s2,[-1 1],'k');hold on;fplot(s3,[-1 1],'g');hold on;fplot(s4,[-1 1],'b');xlabel('input');ylabel('output');title('龙格现象');legend('s1=f(x)','s2=L5(x)','s3=L10(x)','s4=L15(X)');grid on 可以得到下图:
相关推荐: