例1下图描述了六个城市之间的航空航线图,其中1、2、……、6表示六个城市,带箭头线段表示两个城市之间的航线。用MATLAB软件完成以下操作:(1)构造该图的邻接矩阵A;(2)若某人连续乘坐五次航班,那么他从哪一个城市出发到达哪一个城市的方法最多?(3)若某人可以乘坐一次、二次、三次或四次航班,那么他从哪一个城市出发总是不能达到哪一个城市?123456航空航线图(六城市)解:(1)构造邻接矩阵A;(2)计算矩阵可达矩阵5A,找出该矩阵的最大元素,并确定它所在的位置;(3)计算可达矩阵234AAAA,找出该矩阵中零元素的位置。在MATLAB软件的M编辑器中编写m文件:%图与矩阵clearA=[0,1,0,0,0,1;0,0,1,1,0,0;0,0,0,1,1,0;0,1,0,0,0,0;1,0,1,0,0,0;0,1,0,0,1,0];%构造邻接矩阵B=A^5;C=A+A^2+A^3+A^4;disp('邻接矩阵A为:');disp(A);disp('矩阵A^5为:');disp(B);m=max(max(B));%计算矩阵B的最大值[m_i,m_j]=find(B==m);%寻找矩阵B中元素等于m的位置fprintf('矩阵A^5最大值%d的位置在:\n',m);disp([m_i,m_j]);disp('矩阵A+A^2+A^3+A^4为:');disp(C);[z_i,z_j]=find(C==0);%寻找矩阵C中零元素的位置disp('矩阵A+A^2+A^3+A^4零元素的位置在:');disp([z_i,z_j]);在MATLAB命令窗口中输入m文件名称,计算结果为:邻接矩阵A为:010001001100000110010000101000010010矩阵A^5为:255531244320235521021321264541144742矩阵A^5最大值7的位置在:64矩阵A+A^2+A^3+A^4为:265642144631254541133310356642366541矩阵A+A^2+A^3+A^4零元素的位置在:46从计算结果中可以看出,矩阵A^5最大值出现在矩阵的第六行第四列,说明:这个人如果从城市6出发连续乘坐五次航班后到达城市4,他可以选择的乘机路线最多,共有7种不同的方法。矩阵A+A^2+A^3+A^4的零元素出现在第四行第六列,说明:这个人如果从城市4出发他乘坐一次、二次、三次或四次航班,都无法到达城市6。实验习题5个小朋友玩传球游戏。游戏规则:任意两个人之间都可以相互传球,但自己不能给自己传。请用MATLAB完成以下操作:(1)把五个小朋友看成五个节点,构造这五个节点的邻接矩阵A;(2)假设从第一个小朋友开始传球,经过四次传球后,球又传回到第一个小朋友手里。问共有多少种不同的传法。(3)假设从第一个小朋友开始传球,经过一次,或者二次,或者三次传球,球传给了第二个小朋友。问共有多少种传法。例2下表给出了平面坐标系中五个点的坐标。五点数据表x01234y-270210-75(1)请过这五个点作一个四次多项式函数234401234()pxaaxaxaxax,并求当5x时的函数值45p。用MATLAB绘制多项式函数4()px曲线、已知点及插值点(5,45p)。(2)请根据这五个点,拟合一个二次多项式函数22012()pxaaxax,并用MATLAB绘制多项式函数2()px曲线及已知的五个点。解:(1)根据已知条件,把五个点的坐标值分别代入四次多项式函数,可以得到如下线性方程组:23401234234012342340123423401234234012340000271111022222133330444475aaaaaaaaaaaaaaaaaaaaaaaaa对应矩阵等式为:Aay,其中2342342342342341000011111122221333314444A,01234aaaaaa,27021075y系数矩阵A的行列式为范德蒙行列式,且五个坐标点的横坐标各不相同,则该行列式不等于零,所以方程组有唯一解。(2)根据已知条件,把五个点的坐标值分别代入二次多项式函数,可以得到如下线性方程组:20122012201220122012002711022213304475aaaaaaaaaaaaaaa对应矩阵等式为:Aay,其中22222100111122133144A,012aaaa,27021075y该方程组有三个未知数,但有五个方程,进一步分析可以得到该方程组无解,即不存在一个二次多项式曲线刚好能过已知的五个点。MATLAB软件提供了一个利用最小二乘法解决超定方程组近似解的方法。即可以找到一条二次曲线来近似地描述已知5点的变化情况。在MATLAB软件M文件编辑器中编写程序m:%多项式插值和函数逼近clearcloseallx=[0;1;2;3;4];%输入已知点坐标y=[-27;0;21;0;-75];A=[x.^0,x.^1,x.^2,x.^3,x.^4];%构造范德蒙矩阵a=A\y;%得到适定方程组的唯一解a,即确定了多项式函数%或p=polyfit(x,y,4)%p是按从高次幂到低次幂排列的系数向量;disp('四次多项式系数为:')disp(a);xi=linspace(-1,9.5,100);%构造数组xi,从-1到9.5均匀取100个值yi=a(1)+a(2)*xi+a(3)*xi.^2+a(4)*xi.^3+a(5)*xi.^4;%计算对应xi的多项式函数值yix0=5;y0=a(1)+a(2)*x0+a(3)*x0^2+a(4)*x0^3+a(5)*x0^4;%计算插值点函数值disp('四次多项式函数插值点p(5)=');disp(y0);subplot(1,2,1);plot(xi,yi,x,y,'o',x0,y0,'*');%绘制四次多项式函数、已知五点及插值点axissquare;%使坐标轴为正方形axis([-19-400100])%确定x轴和y轴范围gridon;%显示网格A=[x.^0,x.^1,x.^2];a=A\y;%根据最小二乘法得到超定方程组的近似解a%或p=polyfit(x,y,2)%p是按从高次幂到低次幂排列的系数向量;disp('二次多项式系数为:')disp(a);xi=linspace(-1,5,100);%构造数组xi,从-1到5均匀取100个值yi=a(1)+a(2)*xi+a(3)*xi.^2;%计算对应xi的多项式函数值yisubplot(1,2,2);plot(xi,yi,x,y,'o');%绘制二次多项式函数及已知五点axissquare;axis([-15-15050])gridon;在MATLAB命令窗口输入m文件名称,计算结果为:四次多项式系数为:-271226-121四次多项式函数插值点p(5)=-192二次多项式系数为:-32.142960.6857-17.5714下图给出了MATLAB绘制的图形。从图中可以形象地看出插值和拟合的区别。插值和拟合的示意图实验习题下表给出了平面坐标系中六个点的坐标。表六点数据表x012345y-7500840134411340(1)请过这六个点作一个五次多项式函数23455012345()pxaaxaxaxaxax,并求当1x时的函数值51p。用MATLAB绘制多项式函数5()px曲线、已知点及插值点(-1,51p)。(2)请根据这六个点,拟合一个三次多项式函数2330123()pxaaxaxax。并用MATLAB绘制多项式函数3()px曲线及已知点。习题答案:题目1:clear;A=[0,1,1,1,1;1,0,1,1,1;1,1,0,1,1;1,1,1,0,1;1,1,1,1,0];%构造邻接矩阵B=A^4;C=A+A^2+A^3;disp('邻接矩阵A为:');disp(A);disp('矩阵A^4为:');disp(B);m=sum(diag(B));%计算B对角线元素之和fprintf('传4次后回到第一个人的传法:%d\n',m);disp('矩阵A+A^2+A^3为:');disp(C);n=sum(sum(C))-sum(diag(C));%计算除对角线之外的元素之和fprintf('传到第二个人的传法:%d',n);ti1邻接矩阵A为:0111110111110111110111110矩阵A^4为:52515151515152515151515152515151515152515151515152传4次后回到第一个人的传法:260矩阵A+A^2+A^3为:16171717171716171717171716171717171716171717171716传到第二个人的传法:340题目2:%多项式插值和函数逼近clearcloseallx=[0;1;2;3;4];%输入已知点坐标y=[-27;0;21;0;-75];A=[x.^0,x.^1,x.^2,x.^3,x.^4];%构造范德蒙矩阵a=A\y;%得到适定方程组的唯一解a,即确定了多项式函数%或p=polyfit(x,y,4)%p是按从高次幂到低次幂排列的系数向量;disp('四次多项式系数为:')disp(a);xi=linspace(-1,9.5,100);%构造数组xi,从-1到9.5均匀取100个值yi=a(1)+a(2)*xi+a(3)*xi.^2+a(4)*xi.^3+a(5)*xi.^4;%计算对应xi的多项式函数值yix0=5;y0=a(1)+a(2)*x0+a(3)*x0^2+a(4)*x0^3+a(5)*x0^4;%计算插值点函数值disp('四次多项式函数插值点p(5)=');disp(y0);subplot(1,2,1);plot(xi,yi,x,y,'o',x0,y0,'*');%绘制四次多项式函数、已知五点及插值点axissquare;%使坐标轴为正方形axis([-19-400100])%确定x轴和y轴范围gridon;%显示网格A=[x.^0,x.^1,x.^2];a=A\y;%根据最小二乘法得到超定方程组的近似解a%或p=polyfit(x,y,2)%p是按从高次幂到低次幂排列的系数向量;disp('二次多项式系数为:')disp(a);xi=linspace(-1,5,100);%构造数组xi,从-1到5均匀取100个值yi=a(1)+a(2)*xi+a(3)*xi.^2;%计算对应xi的多项式函数值yisubplot(1,2,2);plot(xi,yi,x,y,'o');%绘制二次多项式函数及已知五点axissquare;axis([-15-15050])gridon;结果:ti2四次多项式系数为:-750.0000575.0000230.0000-48.0000-8.00001.0000四次多项式函数插值点p(-1)=-1.0560e+003二次多项式系数为:-757.2381647.8254187.6190-57.4444