资源描述
实验七
一、阅读理解下列程序,并在计算机上运行.
1. newt.m
%x,y分别为插值节点列向量及节点相应的函数值列向量, A为差商表矩阵, z为插值点,s为插值点的newton插值多项式计算值
function [A,s]=newt(x,y,z)
n=length(x);A=zeros(n);A(:,1)=y;c(1)=y(1);
for j=2:n
for i=j:n
A(i,j)=(A(i,j-1)-A(i-1,j-1))/(x(i)-x(i-j+1));
end
c(j)=A(j,j);
%差商表每一列的第一个数即newton插值多项式的系数
end
s=c(n);
for k=n-1:-1:1 %秦九韶算法计算newton插值多项式的值
s=s*(z-x(k))+c(k);
end
A=[x,A];
以课本P32例2、P33例3测试,并计算课本P6016(x=2.25)
2. neville.m
%x,y分别为插值节点向量及节点相应的函数值列向量, A为逐步插值表,z为插值点
function A=neville(x,y,z)
n=length(x);A=zeros(n);A(:,1)=y;
for j=2:n
for i=j:n
A(i,j)=A(i-1,j-1)+(A(i,j-1)-A(i-1,j-1))*(z-x(i-j+1))/(x(i)-x(i-j+1));
end
end
A=[x,A];
以课本P38例6测试.
3. neville1.m
%x,y分别为插值节点向量及节点相应的函数值列向量,A为逐步插值表,z为插值点,w为精度
function A=neville1(x,y,z,w)
n=length(x);A=zeros(n);A(:,1)=y;
for j=2:n
for i=j:n
A(i,j)=A(i-1,j-1)+(A(i,j-1)-A(i-1,j-1))*(z-x(i-j+1))/(x(i)-x(i-j+1));
if abs(A(i,j)-A(i,j-1))<w |abs(A(i,j)-A(i-1,j))<w
w=1;
break
end
end
if w==1
break
end
end
A=[x,A];
以课本P38例6,对不同的精度进行测试.
二、调试修改程序
gaocila.m (以z=4.5测试(此时y=1.578721))
%验证高次插值的Runge现象
function [y,err]=gaocila(z) % z为插值点
x=-5:5;n=11;y=f(x);
for i=1:n
k=1;
for j=1:n
if j~=i
k=k*(x-X(j))/(X(i)-X(j));
end
end
y=y+k*Y(i);
end
err=f(z)-y;
function y=f(x) % 子函数
y=1./(1+x.*x);
三、编程并在计算机上调试修改运行.
1. 编写复化梯形公式及复化Simpson公式求值程序计算课本P75例2、P8817 .
2. 应用变步长梯形法编程计算课本P77例3.
3. 选做题:应用Romberg算法编程计算课本P81例4.
3
展开阅读全文