北京科技大学数值计算方法上机实验报告,数值计算方法实验报告,数值计算实验报告,数值计算,数值计算方法,matlab数值计算,数值计算方法pdf,数值计算原理,数值计算与计算机应用,matlab数值计算pdf
《数值计算方法》
上机作业
应用软件:MATLAB、Turbo C2.0
学 院 计算机与通信工程学院
专业班级?????电信10??? ????
姓??名??? 赵倩悦?????
学??号?? ???
??
2012年5 月14日
第一章
1、用拉格朗日插值公式、牛顿插值公式、埃特金差值公式编写教材第一章习题4的数值计算程序。并打印牛顿差商表、埃特金差商表。
(1)拉格朗日插值M文件函数如下:
function y=Lagrange(x0,y0,x)
n=length(x0);m=length(x);
for i=1:m
z=x(i);
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if j~=k
p=p*(z-x0(j))/(x0(k)-x0(j));
end
end
s=y0(k)*p+s;
end
y(i)=s;
end
在matlab的命令窗口中输入:
>> x=[0 pi/6 pi/4 pi/3 pi/2 ]
x =
0 0.5236 0.7854 1.0472 1.5708
>> y=[0 0.5 0.707 0.866 1];
Lagrange(x,y,pi/12)
得到最后的结果:
ans =
0.2588
(2)牛顿差商表M文件程序如下:
x=[0 pi/6 pi/4 pi/3 pi/2];
y=[0 0.5 0.707 0.866 1];
n=length(x);
newton=[x',y'];
for j=2:n
for i=n:-1:1
if i>=j
y(i)=(y(i)-y(i-1))/(x(i)-x(i-j+1));
else
y(i)=0;
end
end
newton=[newton,y'];
end
disp('牛顿差商表如下:')
disp(newton)
牛顿差商表如下:
0 0 0 0 0 0
0.5236 0.5000 0.9549 0 0 0
0.7854 0.7070 0.7907 -0.2091 0 0
1.0472 0.8660 0.6073 -0.3502 -0.1347 0
1.5708 1.0000 0.2559 -0.4474 -0.0929 0.0266
得到最后的结果:
f(pi/12)= 0.25875
2、编写显示拉格朗日插值基函数的图形程序。
function y=lagrange_intrp(xdata,ydata,x)
n=length(xdata);m=length(ydata);
if n~=m
error('插值数据长度不等 ');
end
ii=1:n;y=zeros(size(x));
for i=ii
ij=find(ii~=i);V=1;
for j=1:length(ij)
if abs(xdata(i)-xdata(ij(j)))
error('输入的n+1个节点不是互异的');
end
V=V.*(x-xdata(ij(j)));
end
y=y+V*ydata(i)/prod(xdata(i)-xdata(ij))
end
在matlab命令窗口中输入:
>> xdata=0:0.125:0.5;
>> ydata=[0 6.24 7.75 4.85 0];
>> xi=0:0.01:0.5;
>> yi=lagrange_intrp(xdata,ydata,xi);
>> plot(xdata,ydata,'ko')
>> plot(xdata,ydata,'ko')
>> hold on
>> plot(xi,yi,'k')
>> title('拉格朗日插值')
>> legend('给定的节点数据','差值曲线')
得到:
3、编写显