matlab应用实例分析
1Matlab应用例题选讲仅举一些运用MATLAB的例子,这些问题在数学建模中时常遇到,希望能帮助同学们在短时间内方便、快捷的使用MATLAB 解决数学建模中的问题,并善用这一工具。常用控制命令:clc: %清屏; clear :%清变量; save:% 保存变量; load:% 导入变量一、利用公式直接进行赋值计算本金P以每年n次,每次i%的增值率(n与i的乘积为每年增值额的百分比)增加,当增加到 r×P时所花费的时间T为:(利用复利计息公式可得到下式)( ))01.ln()01.( irTiPrn 12,5.0,2niMATLAB 的表达形式及结果如下:>> 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 2 3 4 5 6 7 8 90510152025303540rT0.511.5 22.533.5图12从图1中既可以看到T随r的变化规律,而且还能看到 i的不同取值对T—r曲线的影响(图中的六条曲线分别代表i的不同取值)。二、已知多项式求根已知多项式为 ,求其根。96201603103456 xxxh分析:对多项式求根问题,我们常用roots()函数。MATLAB 的表达形式及结果如下:>> h=roots([1 -10 31 -10 -116 200 -96]) %中括号内为多项式系数由高阶到常数。计算结果显示为(其中i为虚数单位):h =-2.0000 4.0000 3.0000 2.0000 + 0.0000i2.0000 - 0.0000i1.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三、方程组的求解求解下面的方程组: 12944753.68321x分析:对于线性方程组求解,常用线性代数的方法,把方程组转化为矩阵进行计算。baxab\MATLAB 的表达形式及结果如下:>> a=[8 1 6;3 5 7;4 9 2]; %建立系数矩阵>> b=[7.5;4;12]; %建立常数项矩阵>> x=a\b %求方程组的解计算结果显示为:x =1.29310.8972-0.6236四、数据拟合与二维绘图在数学建模竞赛中,我们常会遇到这种数据表格问题,如果我们仅凭眼睛观察,很难看到其中的规律,也就更难写出有效的数学表达式从而建立数学模型。因此可以利用MATLAB的拟合函数, 即polyfit() 函数,并结合MATLAB的绘图功能(利用plot()函数),得到直观的表示。3例:在化学反应中,为研究某化合物的浓度随时间的变化规律,测得一组数据如下表:分析: 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 onxi=linspace(0,16,160); %在[0,16]等间距取160 个点yi=polyval(p,xi); %由拟合得到的多项式及xi,确定yiplot(xi,yi) %画拟合曲线图执行程序得到图2;0 2 4 6 8 10 12 14 16456789101图2显示的结果为p=-0.0445 1.0711 4.3252p的值表示二阶拟合得到的多项式为:y= -0.0445t 2+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函数的结果相同。这说明在多项式拟合问题上这两个函数的效果是相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 4同的。下面的一个例子将体现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 onxi=linspace(700,3700,3000);yi=polyval(p,xi);plot(xi,yi)x0=[0.1,0.1];f