Matlab上机题代码及结果4题.docx
《Matlab上机题代码及结果4题.docx》由会员分享,可在线阅读,更多相关《Matlab上机题代码及结果4题.docx(12页珍藏版)》请在冰豆网上搜索。
Matlab上机题代码及结果4题
例1下图描述了六个城市之间的航空航线图,其中1、2、……、6表示六个城市,带箭头线段表示两个城市之间的航线。
用MATLAB软件完成以下操作:
(1)构造该图的邻接矩阵A;
(2)若某人连续乘坐五次航班,那么他从哪一个城市出发到达哪一个城市的方法最多?
(3)若某人可以乘坐一次、二次、三次或四次航班,那么他从哪一个城市出发总是不能达到哪一个城市?
航空航线图(六城市)
解:
(1)构造邻接矩阵
;
(2)计算矩阵可达矩阵
,找出该矩阵的最大元素,并确定它所在的位置;
(3)计算可达矩阵
,找出该矩阵中零元素的位置。
在MATLAB软件的M编辑器中编写m文件:
%图与矩阵
clear
A=[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为:
010001
001100
000110
010000
101000
010010
矩阵A^5为:
255531
244320
235521
021321
264541
144742
矩阵A^5最大值7的位置在:
64
矩阵A+A^2+A^3+A^4为:
265642
144631
254541
133310
356642
366541
矩阵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下表给出了平面坐标系中五个点的坐标。
五点数据表
x
0
1
2
3
4
y
-27
0
21
0
-75
(1)请过这五个点作一个四次多项式函数
,并求当
时的函数值
。
用MATLAB绘制多项式函数
曲线、已知点及插值点(5,
)。
(2)请根据这五个点,拟合一个二次多项式函数
,并用MATLAB绘制多项式函数
曲线及已知的五个点。
解:
(1)根据已知条件,把五个点的坐标值分别代入四次多项式函数,可以得到如下线性方程组:
对应矩阵等式为:
,其中
,
,
系数矩阵A的行列式为范德蒙行列式,且五个坐标点的横坐标各不相同,则该行列式不等于零,所以方程组有唯一解。
(2)根据已知条件,把五个点的坐标值分别代入二次多项式函数,可以得到如下线性方程组:
对应矩阵等式为:
,其中
,
,
该方程组有三个未知数,但有五个方程,进一步分析可以得到该方程组无解,即不存在一个二次多项式曲线刚好能过已知的五个点。
MATLAB软件提供了一个利用最小二乘法解决超定方程组近似解的方法。
即可以找到一条二次曲线来近似地描述已知5点的变化情况。
在MATLAB软件M文件编辑器中编写程序m:
%多项式插值和函数逼近
clear
closeall
x=[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的多项式函数值yi
x0=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的多项式函数值yi
subplot(1,2,2);
plot(xi,yi,x,y,'o');%绘制二次多项式函数及已知五点
axissquare;
axis([-15-15050])
gridon;
在MATLAB命令窗口输入m文件名称,
计算结果为:
四次多项式系数为:
-27
12
26
-12
1
四次多项式函数插值点p(5)=
-192
二次多项式系数为:
-32.1429
60.6857
-17.5714
下图给出了MATLAB绘制的图形。
从图中可以形象地看出插值和拟合的区别。
插值和拟合的示意图
实验习题
下表给出了平面坐标系中六个点的坐标。
表六点数据表
x
0
1
2
3
4
5
y
-750
0
840
1344
1134
0
(1)请过这六个点作一个五次多项式函数
,并求当
时的函数值
。
用MATLAB绘制多项式函数
曲线、已知点及插值点(-1,
)。
(2)请根据这六个点,拟合一个三次多项式函数
。
并用MATLAB绘制多项式函数
曲线及已知点。
习题答案:
题目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为:
01111
10111
11011
11101
11110
矩阵A^4为:
5251515151
5152515151
5151525151
5151515251
5151515152
传4次后回到第一个人的传法:
260
矩阵A+A^2+A^3为:
1617171717
1716171717
1717161717
1717171617
1717171716
传到第二个人的传法:
340>>
题目2:
%多项式插值和函数逼近
clear
closeall
x=[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的多项式函数值yi
x0=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的多项式函数值yi
subplot(1,2,2);
plot(xi,yi,x,y,'o');%绘制二次多项式函数及已知五点
axissquare;
axis([-15-15050])
gridon;
结果:
>>ti2
四次多项式系数为:
-750.0000
575.0000
230.0000
-48.0000
-8.0000
1.0000
四次多项式函数插值点p(-1)=
-1.0560e+003
二次多项式系数为:
-757.2381
647.8254
187.6190
-57.4444