- 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)