Matlab应用篇.docx
《Matlab应用篇.docx》由会员分享,可在线阅读,更多相关《Matlab应用篇.docx(23页珍藏版)》请在冰豆网上搜索。
Matlab应用篇
四.应用篇
MATLAB为我们提供了高效的编程环境,在解决实际问题和求解数学模型时,不必象使用一般的计算机语言那样将算法的每一个细节都考虑进去。
用一系列的MAATLAB的命令解决问题时,实际上是将已有的程序模块进行组合拼装。
在这样的高层次上考虑算法设计时,自然就节约了工作时间并避免了低层次的重复劳动。
73.罗伦兹吸引子的空间曲线是如何绘制的?
罗伦兹微分方程组的解曲线——Lorenz吸引子是三维空间中的一条曲线,如图4-1所示这条曲线相互缠绕而互不相交。
如果将这条曲线视为某一动点的轨迹,这个动点将随自变量t的增大,在空间中的两个定点附近作环绕运动。
图4-1罗伦兹吸引子
罗伦兹常微分方程组为
给定初值条件
取
2.2204×10-16,则得微分方程组
将三个方程的右端函数写成向量形式,得
由于MATLAB中有常数eps=2.2204×10-16,初始条件可以用列向量[00eps]T表示。
首先建立描述微分方程组右端函数的函数文件(文件名为:
flo.m):
functionz=flo(t,y)
A=[-8./30y
(2);0-10.10.;-y
(2)28.-1];
z=A*y;
将这一文件保存在MATLAB的工作目录下,然后在MATLAB环境中键入如下指令:
[t,y]=ode23('flo',0,80,[00eps]');
u=y(:
1);v=y(:
2);w=y(:
3);plot3(u,v,w)
MATLAB的图形窗口将显示Lorenz吸引子的图形如图4-1所示。
另外,还可以绘制动画,如果关闭MATLAB的图形窗口,并在命令窗口中再键入
comet3(u,v,w)
便可以观察到Lorenz吸引子的图形生成过程的动态演示。
命令comet3的使用格式和上面的plot3的使用格式相同,不同的是绘图效果增加了动感,其功能是在绘图时以动点模拟慧星运行并带有一条尾巴。
74.如何为足球队排名次?
已知我国8支足球队在1988~1989年全国足球甲级队联赛中的成绩,按国际足联公布的鼓励进攻的三分制计算比赛积分(胜—得3分;平—得1分;负—得0分)有下面的得分表
表4-1
T1
T2
T3
T4
T5
T6
T7
T8
T1
×
4
4
9
0
3
6
2
T2
4
×
3
5
2
2
4
1
T3
4
6
×
5
3
3
3
3
T4
0
2
2
×
0
3
1
1
T5
6
2
3
6
×
7
9
7
T6
3
2
3
3
1
×
3
4
T7
0
1
3
3
0
6
×
7
T8
2
4
3
4
1
4
1
×
表中第k行数据表示第k队与其它各队比赛所得分数。
为了依据现有的数据,对各足球队的实力给予科学客观的评价,可以用不同的方法排名次。
第一种方案是依照各队的总分排名,下面的程序就是根据上表中的数据建立得分矩阵,将每一行求和得各队总分,然
后根据总分排名次。
a=[04490362;40352241;46053333;02200311;
62360797;32331034;01330607;24341410];
f=sum(a')
[ffl]=sort(-f)
运行程序后,屏幕显示
ff=-40-28-27-21-20-19-19-9
l=51327684
由于MATLAB中的排序命令sort将数组由小到大排序,而我们需要将各队总分数按递减排序,所以将所有分数取负号后再使用排序命令。
上面结果列表如下
表4-2总分排序数据结果
名次
1
2
3
4
5
6
7
8
队号
5
1
3
2
7
6
8
4
总分
40
28
27
21
20
19
19
9
第二种方案是根据得分矩阵的正特征值所对应的特征向量排名。
利用上面程序中已经建立的得分矩阵求矩阵的特征值,用命令eig(a)可得
ans=
20.3443
-2.8104+5.1609i
-2.8104-5.1609i
-1.9756+2.1810i
-1.9756-2.1810i
-3.5585+0.8359i
-3.5585-0.8359i
-3.6552
观察数据结果知,第一个特征值为正,取这一正特征值对应的特征向量用命令
[x,d]=eig(a);g=x(:
1)'
得
-0.3636-0.3224-0.4133-0.1438-0.5680-0.2938-0.2837-0.2880
这一向量每一元素均为负数,由特征向量的性质将其反号仍为特征向量。
用排序命令
[f,l]=sort(g)
将特征向量元素排序,得
f=-0.5680-0.4133-0.3636-0.3224-0.2938-0.2880-0.2837-0.1438
l=53126874
由排序结果列表,得
表4-3特征向量方法排序结果
名次
1
2
3
4
5
6
7
8
队号
5
3
1
2
6
8
7
4
元素
0.5680
0.4133
0.3636
0.3224
0.2938
0.2880
0.2837
0.1438
比较两种排名方案结果,尽管结果不完全一致,但第一名和最后一名是一致的。
这说明,分数是反映各队实力的一个方面,但并不是全面。
最强的队与各队比赛总会得分,而弱队与其它队比赛总不会得分。
在比赛中,一个实力中等的球队遇上强队时不会得分,遇上弱队时会得分,所以总分排名次的方法不是很公平的,特征向量法则比较公平。
当特征向量中元素均为正时,各元素的大小就反映了各球队实力的强弱。
75.怎样研究概率论中的生日问题?
假设每个人的生日在一年365天中的任意一天都是等可能性的,那么随机找n个人(不超过365人)。
这n个人生日各不相同的概率(可能性)可用公式
计算出。
因而,n个人中至少有两人生日相同这一随机事件发生的概率为
首先利用上面的公式,用计算机分别计算出一个团体的人数分别为n=1,2,…,100时的100个概率值。
用下面程序段
m=365;n=m;
fork=1:
100
p(k)=1-n/m;
m=m*365;n=n*(365-k);
end
使用指令p
(1),p
(2),p(3),…,p(100)可得出其相应的概率值。
用指令plot(p)绘制出图形(图4-2),可以直观地了解概率值随团体人数变化的规律。
图4-2概率曲线
现在考虑几个特殊概率值,一个有三十个同学的学生班上,至少有两个同学“生日相同”的概率为p(30)=0.7063。
五十个人的团体中,至少有两人生日在同一天(只考虑月日,不考虑年的不同)的概率为p(50)=0.9704。
在七十个人的团体中,p(70)=0.9992。
考虑团体总人数对概率值的影响,为了求在某团体中保证“至少有两人生日相同”的概率大于99%时的总人数。
键入下列命令
find(p>0.99)(回车)
计算机屏幕将显示
ans=5758596061……979899100
所以,团体人数若超过57人,则这个团体中至少有两人生日相同的概率将大于99%。
最后,考虑用计算机数值模拟。
随机产生30个正整数,介于1到365之间(代表30个同学的生日),然后统计数据,观察是否有两人以上的人生日相同。
当30个人中有两人生日相同时,计算机输出为“1”,否则输出为“0”。
如此重复观察200次,计算出这一事件发生的频率f200。
下面由MATLAB程序做计算机模拟200次重复观察:
n=0;
form=1:
200%做200次随机试验
y=0;x=1+fix(365*rand(1,30));%产生30个随机数
fori=1:
29
forj=i+1:
30
ifx(i)==x(j),y=1;break,end%寻找30个随机数中是否有相同数
end
end
n=n+y;%累计有两人人生日相同的试验次数
end
f=n/m%计算频率
将程序重复运行三次后,数据结果为
f200=0.7350、0.7150、0.7250
比较前面所计算的p(30)=0.7063,说明概率值和频率值比较接近,但是存在着差异。
76.怎样用动态规划算法求最短路径问题?
动态规划是用于分析一类多阶段决策过程的最优化方法。
它解决问题的思路是将一个比较复杂的问题分解为多个同一类型的子问题,然后将这些子问题按整体最优的思想逐个地求最优解,最后再求出整个问题的最优解。
一个简单的最短路径问题描述如下:
图4-3中20个结点表示20台不同地理位置上的计算机,为了将数据文件从编号为20的结点通过中间结点传输到编号为1的结点。
求最短路径(数据在各相邻结点间传送的时间如图中所示)。
被传送的数据文件从编号为20的结点出发,最
终到达编号为1的结点。
无论哪一种方案都需要水平方向走4步,垂直方向走3步。
从第20号结点到1号结点的所有路径数为
用动态规划算法解决问题的理论依据是最优性原理,最优性原理可简述为:
不论前面的状态和策略如何,以后的最优策略只取决于最初策略所确定的当前状态。
具体求解问题时要用到递归方程,递归方程所起的作用是将一个子问题的解与下一个子问题相联系。
由最优性原理可知,在从编号为20的结点到编号为1的结点的最短路径上,各结点到编号为1的结点的的路径也是各结点到编号为1的结点的最短路径。
我们称编号为1的结点为目标结点,用dk表示编号为k的结点到目标结点的最短路径长度。
由最优性原理可得
d20=min{2+d18,1+d19},d18=min{3+d15,2+d16},d19=min{2+d16,3+d17},
d15=min{2+d11,2+d12},d16=min{4+d12,2+d13},d17=min{1+d13,2+d14},
d11=2+d7,d12=min{1+d7,3+d8},d13=min{1+d8,1+d9},d14=min{3+d9,3+d10},
d7=3+d4,d8=min{2+d4,4+d5},d9=min{2+d5,4+d6},d10=4+d6,
d4=1+d2,d5=min{2+d2,5+d3},d6=3+d3,d2=2+d1,d3=3+d1,d1=0。
由d2=2,d3=3,应