1.2程序设计:
(1)取等距节点,n=5,10,15,20.
%x0、y为被插值函数变量,n为等分数,x(k)为插值点,W_x为Li(x)的分子乘(x-x(j),W1_x为Li(x)的分母,Ln_x为插值函数多项式
syms x0 x1 y x n x_para
x0=-1:0.02:1;%作为画图的点
y=1./(1+25.*(x0.^2));
for n=[5,10,15,20]
k=0:n; %k的范围从0到n,共n+1项
x(k+1)=-1+2*k/n; %从x(1)到x(n+1),共n+1项,即从第0点到第n点
for i=1:(n+1) %共k+1项
part_x(i)=(x_para-x(i)); %每个因式的组成,共k+1种
end
for i=1:(n+1) %共k+1项
W1_x(i)=1;
for j=1:(n+1)
if i~=j
W1_x(i)=W1_x(i)*(x(i)-x(j)); %每个因式的组成,共k+1种
end
end
end
W_x(n+1)=prod(part_x); %累乘函数求w_x
for j=1:(n+1)
ln_x(j)=(1/(1+25*(x(j)^2))) * W_x(n+1) / ( (x_para-x(j))*(W1_x(j)) );
end
Ln_x=sum(ln_x);
x_vector=-0.99:0.008:0.99;
Ln_x=subs(Ln_x,x_para,x_vector);
m=n/5;
subplot(2,2,m);plot(x0,y);
hold on
subplot(2,2,m);plot(x_vector,Ln_x);
legend ('被插值函数','插值函数')
ylabel('f(x) and Ln(x) ');
end
(2)取节点 ,k=0,1,2,…n;分别取n=5,10,15,20能有什么样的结论。
%x0、y为被插值函数变量,n为等分数,x(k)为插值点,W_x为Li(x)的分子乘(x-x(j),W1_x为Li(x)的分母,Ln_x为插值函数多项式
syms x0 x1 y x n x_para
x0=-1:0.02:1;%作为画图的点
y=1./(1+25.*(x0.^2));
for n=[5,10,15,20]
k=0:n; %k的范围从0到n,共n+1项
x(k+1)=cos(k*3.1415926/n); %从x(1)到x(n+1),共n+1项,即从第0点到第n点
for i=1:(n+1) %共k+1项
part_x(i)=(x_para-x(i)); %每个因式的组成,共k+1种
end
for i=1:(n+1) %共k+1项
W1_x(i)=1;
for j=1:(n+1)
if i~=j
W1_x(i)=W1_x(i)*(x(i)-x(j)); %每个因式的组成,共k+1种
end
end
end
W_x(n+1)=prod(part_x); %累乘函数求w_x
for j=1:(n+1)
ln_x(j)=(1/(1+25*(x(j)^2))) * W_x(n+1) / ( (x_para-x(j))*(W1_x(j)) );
end
Ln_x=sum(ln_x);
x_vector=-0.99:0.008:0.99;
Ln_x=subs(Ln_x,x_para,x_vector);
m=n/5;
subplot(2,2,m);plot(x0,y);
hold on
subplot(2,2,m);plot(x_vector,Ln_x);
legend ('被插值函数','插值函数')
ylabel('f(x) and Ln(x) ');
end