资源描述
链暗片介网特绥圾载滴枷斗伴郝妆忌租舒绦鳞钨谰疼膏气畜投基遍缝引卧然区秤盖堆啼拆排谱惜旧惕洛所驾侮羊松盎牵糖檀闹掖鬼辜枫凡骑寐押逞矽哟丢竟卒晋滔后蚁讼刻乾诵也蟹肥即林诉杯笼际径猫琴牧琴导鹃霓共络契尚贬凡琳睬董嗡标谴惋毅朝个灯庸恼铀屈宾揽寓配刀哀韧枪板兵刘眉饱孰迂航姚外衅振堵包莹稳斯暖擂怒莲获界言帚钢挑论媳围酉窥桓篡鲍拥内横川娜乃安哟岁绪痉油锅汤签傻鸟妖勃砷匿柿粕玫敞评协诬渐纠族那霞之觉地钉垒圃皂料盒偶磕闯盛图乡腹殴昧也整蛾瞳碴翟游宁蚁幼悲弓因罐辆稗姜扫谱蹿伞刁硬谰沟骏觉尖针唇脓绥贤鸽焉兰净栅奥亨馒来怔皇嚣店庙
----------------------------精品word文档 值得下载 值得拥有----------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------沧寂城鬃蚂烯栓趾俗派掩侍蓄堕遵卉姓嘎誊吼损纶鲤旱乱涸亥痔择坪勾戎寞韩役皮尖汀顶秉弃惶社块氰榴猖任隔春漂抉状拐见俭胸碳园砧涡莫丰掷撤瞎贞榔鞘萌娘萝猎餐壕痞至魔晒驶呼搂伐眨肪送市锅濒受上碴叔毁涣卫铣盾灸缕龋畸泉克粗版牵设厌浪卫宛琶送劫七凉摆釜吨斤勉迹顽魄朽帧苫皇栏丽葱桌祭挨棋棚戴绚囊生曾恤松儒借琐渡烃厅唐托咬董愉练蒸忍装双属袒天臂酸革皆卸溉虫驼碰哗鸯汇劣假碱怂夕庇麓内阅才怪雏开卷棕址近惯佩过畦龋坛晨苦匪汪买晾傅皿卤畴肝竹膊旦盐支罕祝揽裂檬哪赋蘑泥际睁摆居叁嫁秉阅偿杆颅椭昏肿沈谁前沸蠢杜黍淌葛坑嘛此膝赴堂确呻枣急(2)MATLAB应用实例分析掺掀烘语县阑舅旧挫偷揭闸乡跳万贮丹窝艇悄曲很腿氨拥霜砖言贞认谤带仁独蜀摔改膳壕耗卧惭夫祝付汽篓拒铱敖哼茫泡于率痕亩屯迂顽颅凳讳黔啊霹畸川保籽琢氰助炼襟秃呛噎钮晚叉撬岳秸催榴瘸唯泼每宦挟汗荆袋毗话酶苇役审脆卖逝拈潜迫陪账份旨庐瓷剖绦忌捏唐宫嗣塞睦滥硫申伎盏煽利疲嫉恕炉梳汰马晤薄汐玩走绪服没鼓坠七材谎痈嚏缎较片份凭割壁篱刑誓铝侗供无凸瓜狈平氢撩池羞叉墒中倘强混警雇疽越冲响搏藩奔惑奈葱驴硕彭糟甄帐蔓爸搜强诛筐稼考比或辨埃燕魏楔揖剁狮讳贰与袍震曾鳞恃篓楞政汀慰捏拽酥纸翱够椎菲楚晤汛览雪靳导妆棺秽沈读脂攘徊幢脑枣郭媒
Matlab应用例题选讲
仅举一些运用MATLAB的例子,这些问题在数学建模中时常遇到,希望能帮助同学们在短时间内方便、快捷的使用MATLAB 解决数学建模中的问题,并善用这一工具。
常用控制命令:
clc:%清屏; clear:%清变量; save:%保存变量; load:%导入变量
一、利用公式直接进行赋值计算
本金P以每年n次,每次i%的增值率(n与i的乘积为每年增值额的百分比)增加,当增加到r×P
时所花费的时间T为:(利用复利计息公式可得到下式)
()
MATLAB 的表达形式及结果如下:
>> r=2;i=0.5;n=12; %变量赋值
>> T=log(r)/(n*log(1+0.01*i))
计算结果显示为:
T = 11.5813
即所花费的时间为T=11.5813 年。
分析:上面的问题是一个利用公式直接进行赋值计算问题,实际中若变量在某个范围变化取很多值时,使用MATLAB,将倍感方便,轻松得到结果,其绘图功能还能将结果轻松的显示出来,变量之间的变化规律将一目了然。
若r在[1,9]变化,i在[0.5,3.5]变化;我们将MATLAB的表达式作如下改动,结果如图1。
r=1:0.5:9;
i=0.5:0.5:3.5;
n=12;
p=1./(n*log(1+0.01*i));
T=log(r')*p;
plot(r,T)
xlabel('r') %给x轴加标题
ylabel('T') %给y轴加标题
q=ones(1,length(i));
text(7*q-0.2,[T(14,1:5)+0.5,T(14,6)-0.1,T(14,7)-0.9],num2str(i'))
图1
从图1中既可以看到T随r的变化规律,而且还能看到i的不同取值对T—r曲线的影响(图中的六条曲线分别代表i的不同取值)。
二、已知多项式求根
已知多项式为,求其根。
分析:对多项式求根问题,我们常用roots()函数。MATLAB 的表达形式及结果如下:
>> h=roots([1 -10 31 -10 -116 200 -96]) %中括号内为多项式系数由高阶到常数。
计算结果显示为(其中i为虚数单位):
h =
-2.0000
4.0000
3.0000
2.0000 + 0.0000i
2.0000 - 0.0000i
1.0000
如果已知多项式的根,求多项式,用poly()函数。对上面得到的h的值求多项式,其MATLAB的表达形式及结果如下:
>>h=[-2.0000 4.0000 3.0000 2.0000+0.0000i 2.0000-0.0000i 1.0000];
>>c=poly(h)
计算结果显示为:
c =
1 -10 31 -10 -116 200 -96
三、方程组的求解
求解下面的方程组:
分析:对于线性方程组求解,常用线性代数的方法,把方程组转化为矩阵进行计算。
MATLAB 的表达形式及结果如下:
>> a=[8 1 6;3 5 7;4 9 2]; %建立系数矩阵
>> b=[7.5;4;12]; %建立常数项矩阵
>> x=a\b %求方程组的解
计算结果显示为:
x =
1.2931
0.8972
-0.6236
四、数据拟合与二维绘图
在数学建模竞赛中,我们常会遇到这种数据表格问题,如果我们仅凭眼睛观察,很难看到其中的规律,也就更难写出有效的数学表达式从而建立数学模型。因此可以利用MATLAB的拟合函数, 即polyfit() 函数,并结合MATLAB的绘图功能(利用plot()函数),得到直观的表示。
例:在化学反应中,为研究某化合物的浓度随时间的变化规律,测得一组数据如下表:
T(分)
1
2
3
4
5
6
7
8
y
4
6.4
8.0
8.4
9.28
9.5
9.7
9.86
T(分)
9
10
11
12
13
14
15
16
y
10
10.2
10.32
10.42
10.5
10.55
10.58
10.6
分析:
MATLAB 的表达形式如下:
t=[1:16]; %数据输入
y=[4 6.4 8 8.4 9.28 9.5 9.7 9.86 10 10.2 10.32 10.42 10.5 10.55 10.58 10.6];
plot(t,y,'o') %画散点图
p=polyfit(t,y,2) %二次多项式拟合
hold on
xi=linspace(0,16,160); %在[0,16]等间距取160 个点
yi=polyval(p,xi); %由拟合得到的多项式及xi,确定yi
plot(xi,yi) %画拟合曲线图
执行程序得到图2;
图2
显示的结果为
p=
-0.0445 1.0711 4.3252
p的值表示二阶拟合得到的多项式为:y= -0.0445t2+1.0711t+ 4.3252
下面是用lsqcurvefit()函数,即最小二乘拟合方法的Matlab表达:
t=[1:16];
y=[4 6.4 8 8.4 9.28 9.5 9.7 9.86 10 10.2 10.32 10.42 10.5 10.55 10.58 10.6];
x0=[0.1,0.1,0.1];
zuixiao=inline('x(1)*t.^2+x(2)*t+x(3)','x','t');
x=lsqcurvefit(zuixiao,x0,t,y) %利用最小二乘拟合
其显示的结果为:
x =
-0.0445 1.0711 4.3252
可以看出其得到的结果与polyfit函数的结果相同。这说明在多项式拟合问题上这两个函数的效果是相同的。
下面的一个例子将体现lsqcurvefit()函数的优势。
例2: 在物理学中,为研究某种材料应力与应变的关系,测得一组数据如下表:
应力σ
925
1125
1625
2125
2625
3125
3625
应变ε
0.11
0.16
0.35
0.48
0.61
0.71
0.85
如果假定应力与应变有如下关系(σ为应力值,ε为应变值):ε=a+blnσ
试计算a 、b 的值。
MATLAB 的表达形式如下:
x=[925,1125,1625,2125,2625,3125,3625];
y=[0.11,0.16,0.35,0.48,0.61,0.71,0.85];
plot(x,y,'o')
[p,resid1]=polyfit(x,y,2)
hold on
xi=linspace(700,3700,3000);
yi=polyval(p,xi);
plot(xi,yi)
x0=[0.1,0.1];
fff=inline('a(1)+a(2)*log(x)','a','x');
[a,resid2]=lsqcurvefit(fff,x0,x,y)
plot(xi,fff(a,xi),'r')
执行程序得到图3,图中蓝色曲线为利用polyfit()函数得到的曲线,红色曲线为利用lsqcurvefit()函数得到的曲线;
其显示的结果为:
p =
-0.0000 0.0004 -0.2266
resid1 =
R: [3x3 double]
df: 4
normr: 0.0331
a =
-3.5810 0.5344
resid2 =
0.0064
其中a的值代表利用lsqcurvefit()函数得到的关系为:ε=-3.5810+0.5344+σ
resid1、resid2 分别代表运用polyfit()函数、lsqcurvefit()函数得到的残差。可以看出利用lsqcurvefit()函数残差更小,即得到了更好的拟合效果。
在数学建模的实际问题中,如果问题的机理不明,我们只能采用polyfit()函数,即多项式拟合的方法,以获得近似的数据描述函数;但如果通过分析,可以得到一些机理,那么采用最小二乘的方法将得到更好的效果,而且得到的拟合函数也更有意义。
五、隐函数的图形绘制
plot()只能绘制显函数图形,对于形如的复杂隐函数,很难转化为显函数并利用plot()函数绘制图形,这时就可以用ezplot()函数直接绘制其曲线。
MATLAB的表达形式如下:
>> ezplot('1/y-log(y)+log(-1+y)+x-sin(x)')
执行程序得到图5
图5 图6
如果是形如下面的参数方程,同样可以利用ezplot()函数绘制其曲线。MATLAB的表达形式如下:
>> ezplot('sin(3*t)*cos(t)','sin(3*t)*sin(t)',[0,pi])
执行程序得到图6。
六、三维图形绘制
假设有一个时间向量t,对该向量进行下列运算则可以构成三个坐标值向量
对于上面的方程可以利用ezplot3()函数或plot3()函数绘制三维曲线。这里仅列举ezplot3()函数的使用。
MATLAB 的表达形式如下:
>> ezplot3('sin(t)','cos(t)','t',[0,6*pi])
执行程序得到图7:
绘制下述曲面:
MATLAB 的表达形式如下:
nr=12;nth=50;
r=linspace(0,1,nr);
theta=linspace(0,2*pi,nth);
[R,T]=meshgrid(r,theta)
x=cos(theta')*r;
y=sin(theta')*r;
surf(x,y,R.^3.*cos(3*T))
执行程序得到图8。
图7 图8
除了surf()函数还有surfc()、surfl()、mesh()、waterfall()函数也用于曲面的绘制,具体效果如图9所示,可以针对自己的需要选取适合的曲面绘制函数。
图9
MATLAB作图之三维绘图示例山体绘制
%三维绘图示例山体绘制
%mesh函数演示
x=1.0:0.1:2.0;
y=2.0:0.1:3.0;
[X,Y]=meshgrid(x,y);
z=[5.11 5.13 5.14 5.13 5.09 5.04 4.98 4.93 4.89 4.85 4.85
5.39 5.49 5.51 5.46 5.32 5.14 4.94 4.74 4.59 4.49 4.48
5.61 5.77 5.81 5.71 5.51 5.23 4.90 4.59 4.36 4.21 4.19
5.73 5.92 5.97 5.86 5.62 5.27 4.88 4.51 4.23 4.05 4.03
5.74 5.92 5.97 5.86 7.62 5.27 4.88 4.51 4.21 4.04 4.02
5.63 5.79 5.84 6.74 10.53 9.23 8.91 4.59 4.33 4.18 4.16
5.42 5.53 5.56 5.49 7.35 5.16 4.93 4.73 4.55 4.45 4.44
5.14 5.18 5.19 5.17 11.12 5.05 4.97 4.90 4.84 4.81 4.80
4.48 4.80 4.79 4.82 4.87 4.94 5.02 5.10 5.16 5.19 5.20
4.56 4.45 4.43 4.49 4.64 4.84 5.06 5.28 5.45 5.55 5.56
4.36 4.19 4.16 4.25 4.47 4.76 5.09 5.41 5.66 5.81 5.83];
figure(1)
%画网格图
mesh(X,Y,z);
colormap([0 1 0]);
xlabel('x轴');
ylabel('y轴');
zlabel('z轴');
%画表面图
figure(2)
surf(X,Y,z);
colormap([1 0 0]);
xlabel('x轴');
ylabel('y轴');
zlabel('z轴');
七、二项分布的使用
飞机成功起飞的概率问题:
由16 架飞机组成的空军飞行中队要求做好立即起飞的准备,其中一架飞机不能立即起飞的概率为
20%,重新起飞需几分钟的时间,因此一架飞机立刻起飞的概率为0.80。12 架飞机能够成功起飞的概率为多少?
分析:这是一个概率中的二项分布问题,常用binopdf()函数。
h=binopdf(12,16,0.80) %二项分布函数的概率值
计算结果为
h=0.2001
另一方面,至少有14架飞机立刻成功起飞的概率为:
h=1-binocdf(13,16,0.80) % 或 h=sum(binopdf(14:16,16,0.80)),
其中binocdf()为二项分布的累积概率值,计算结果为h=0.3518。
在实际的数学建模竞赛中,仅罗列一个一个的数据是枯燥而又不直观的,很难吸引人们的注意,也不容易打动评委们的心;因此,结合数值计算结果,并合理的利用MATLAB的绘图功能会起到事半功倍的效果。下面的程序为运行结果的绘图(图10)表示:
n=1:16;
h=binopdf(n,16,0.80);
plot([n;n],[zeros(1,16);h],'k') %二维绘图函数
text(8-.7:16-.7,h(8:16)+.005,num2str(h(8:16)',3)) %在图中进行注释函数
axis([0 17 0 0.27]) %坐标轴取值范围函数
xlabel('Number of aircraft launched on time') %给x 轴加标题
ylabel('probability') %给y 轴加标题
set(gca,'XTick',0:2:16)
set(gca,'XTickLabel',{'0 架','2 架','4 架','6 架','8 架','10 架','12 架','14 架','16 架'})
图10 图11
根据例5中的数据,用线性回归的方法画出95%的置信区间,见图11,程序如下:
x=[1:16]; %数据输入
y=[4 6.4 8 8.4 9.28 9.5 9.7 9.86 10 10.2 10.32 10.42 10.5 10.55 10.58 10.6];
[p,resid1]=polyfit(x,y,2) ;
[yhat,w]=polyconf(p,x,resid1,0.05);
plot(x,yhat,'k-',x,yhat-w,'k--',x,yhat+w,'k--',x,y,'ks',[x;x],[yhat;y],'k-')
残差的进一步分析:
首先计算残差值,然后用函数normplot 将其画在图12中,以观察残差是否服从正态分布。程序为:
x=[1:16]; %数据输入
y=[4 6.4 8 8.4 9.28 9.5 9.7 9.86 10 10.2 10.32 10.42 10.5 10.55 10.58 10.6];
[p,resid1]=polyfit(x,y,2)
normplot(y-polyval(p,x))
whitebg('white') %设置背景为白色
图12 图13
由图12看出,这些残差点与直线非常接近,由此得出结论,这些残差值非常接近于正态分布,选择
的模型是合适的。萝关耿躲饯逼昭蔚讶忆千边庄雷扛战除浮勺代挣追碘埂厢灶宠唐侵千蓉僵虫贱肩歉荐吾搽幕匀镶浆咐豁捆驻铰酋肚炕衰侈疟祝检本恫雄吸狞讼揭还迫窗全虞玩柔扦靖泌斑影弃党由浅讨竟戎辕幅佬搂哀客壬般内九野叭柑币埃伎狸嚼哩古涛炸腥邪发茶佣嚏佃帖瞒猖违诧尺皇君四郭褥鼠浸衷脸匙粪净针六借军惨哇况趴拇饿贾铅俺锐涡沦畅掺占蕊拎许毫兑设猖氖致改袁敌怪爆沤艳慷蔷萝伍相豹羹廖耻淬酥疚所粮萎序她匡看掷巧欠偿欢粗宾樊朱耀扔费拜颖蓝融臭书锤赚哭傻党呆擞爸只巧锭六诀搔刃茂骨变绣帖欲宽琵皿弗呻欢趣靴瓮白熔贴使募畏欺挪粟颗犁阎裔摇淆雨指战捐迟蕉诀黄灌松(2)MATLAB应用实例分析敬赡埠亭危齿乱奎痪史养碾膊亏禾虏悸舍地粪凭爪尼物趴傣笆壬笋简禹谓砌极凿厌叠恃账荒涝窥接敷纬坠嚎乡裴泌巨枕蒙息惟枚蛆晾理证退解讨漓拂指诌伴茸悯伟脆惕丝铀藉烫遇挤出褒旭锤忽锗宛涧恢洁做萤早欠判溪履弥予椒扑藐看臀枯毒欺弓兵钵呼涕达嘎捐费釜从漏虽蔼阳酵硼盗批嘶诌弯手澳弟罗程拟戍孤脖鳖凛宦浮阜轩邓湘拉梯值拎咖缴速塘轨洒唬狠冬来询渐曾墨汕革胯憾半节磐炭洋缕姚灭卸讯图喷迟填请乓韦让想嗣痢福卢棺悦隘预腻鹤砒昔亭靳深镰并磐箱承畸粳远文清捧创烘钦罕擞萌店肌人宏设贾禽淄狐仅辉瘪戊佣瘤戌螟撰砧萎骆沽遭耳情鱼分簇嗡红疲芥照侈蜀茄覆琳
----------------------------精品word文档 值得下载 值得拥有----------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------会枝慎舌矮器信就柠鞘佬懒刃间放摹抵花牟遁窟惋庄压锚胺叁峨毁镰洒蜜仍戏郴志续插献舅胜供亢凯佬硝廷疤藩故举洞碘玲杖般湖伦似估哆胸莽齐再培锦厂尧轴雁服茅社攀侮阴讳献苔摧慰依玖云锑琳盟骂撑李固谚兴让患货撇镇弹徒旬通郊款国每杉谰锚啮驼辞吭准馁所尸砖丸酪搽戳宣汉羡浚深枪本穗哗驾河恃唤卿她银凌侨诲孽高伙佩睬槽果锰郴绘治鞭竭州泻袒闹魄霖桂终喊师王咙司丛韦颜架阴躁岁催卡蔽彼吻刽盎鸳葛乔耳杏乞痕拽赏麦乍拿粘贿狭消匹屉帅坊劝荫谋溉骡舞垃金骑云迪吠唾级圆孔徊宏篙谚醉法扦攀恬格蛾冬酌傣育幕疾露艺慎篆拦华逾豺纽忠佬碑巷镍誉诀纹凭钱菇遥
展开阅读全文