Lagrange插值法和Newton插值法.docVIP

  • 87
  • 0
  • 约2.09千字
  • 约 3页
  • 2020-12-17 发布于浙江
  • 举报
插值法函数逼近 实验目的:通过上机操作掌握插值法函数逼近的算法实现,掌握Lagrange插值法和Newton插值法的思想和区别。 二、实验内容: Lagrange插值法和Newton插值法的算法实现。 理论基础: (一)、Lagrange插值法: n次Lagrange插值基函数: ,l,i=0,1,…,n 是n次多项式并满足 li(xj)= n次Lagrange插值多项式: 显然,L并满足插值条件 L,j=0,1,…,n. 、Newton插值法 均差: f[xk]=f(xk), f[xk,xk+1]=(f[xk+1]-f[xk])/(xk+1-xk) f[xk,xk+1]=(f[xk+1]-f[xk])/(xk+1-xk) 为f在x上的零阶均差,在x上的一阶均差和在上的二阶均差. n次Newton插值多项式: f(x)=f(x0)+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+…+f[x0,x1,…xn](x-x0)(x-x1)…(x-xn) Lagrange 插值法: 代码: function yh= lagrange( x,y,xh ) n=length(x); m=length(xh); x=x(:); y=y(:); xh=xh(:); yh=zeros(m,1); c1 = ones(1,n-1); c2 = ones(m,1); for i=1:n, xp = x([1:i-1 i+1:n]); yh = yh + y(i) * prod((xh*c1-c2*xp)./(c2*(x(i)*c1-xp)),2); end 运行结果: x(1)=0.4; x(2)=0.50; x(3)=0.70; x(4)=0.80; y(1)=-0.916281; y(2)=-0.693147; y(3)=-0.356675; y(4)=-0.223144; xh=0.6; lagrange(x,y,xh) ans = -0.5100 Newton 插值法: 代码: function newtoncz(a,b,n,f) ln=length(n); for k=1:ln m=n(k)-1; y=zeros(1,m+1); A=zeros(m+1); w=zeros(1,m+1); h=(b-a)/m; for i=1:m+1 x(i)=a+(i-1)*h; y(i)=subs(f,findsym(f),x(i)); end A(:,1)=y; for i=2:m+1 for j=i:m+1 A(j,i)=(A(j,i-1)-A(j-1,i-1))/(x(j)-x(j-i+1)); end end p=A(1,1); w=vpa(w,4); syms X; w(1)=X-x(1); for i=2:m+1 w(i)=w(i-1)*(X-x(i)); p=A(i,i)*w(i-1)+p; p=simplify(p); end p=vpa(p,4); fprintf(n=%d的newton插值多项式为:,n(k)); disp(p); 运行结果: a=-1; b=1; n=[5,7,13]; syms X; f=1/(1+25*X.^2); newtoncz(a,b,n,f) n=5的newton插值多项式为:3.316*X^4-4.277*X^2+1. n=7的newton插值多项式为: -13.13*X^6+20.96*X^4+.3475e-14*X^3-8.784*X^2-.2420e-15*X+1. n=13的newton插值多项式为: 909.9*X^12-.3411e-12*X^11-2336.*X^10+.6632e-12*X^9+2202.*X^8-.1573e-12*X^7-955.4*X^6+.2341e-12*X^5+198.7*X^4-.3535e-13*X^3-19.58*X^2+.7881e-15*X+1.000 四、比较分析: Lagrange插值多项式结构简单紧凑,在理论分析中甚为方便,在数值分析中经常使用,但在使用过程中也存在不便之处,当插值节点增加(相应的插值多项式的

文档评论(0)

1亿VIP精品文档

相关文档