MATLAB 在实际问题中的分析与应用
自20世纪80年代以来,出现了多种科学计算语言,亦称数学软件,比较流行的有MATLAB、Mathematical、Maple等。因为他们具有功能强、效率高、简单易学等特点,在在许多领域等到广泛应用。MATLAB便是一种影响大、流行广的科学计算语言。MATLAB的语法规则简单,更加贴近人的思维方式。
MATLAB是英文Matrix Laboratory(矩阵实验室)的缩写。自1984年由美国Math Works公司推向市场以来,得到了广泛的应用和发展。在欧美各高等院校MATLAB已经成为线性代数、自动控制理论、数字信号处理、时间序列分析、动态系统仿真、图像处理等诸多课程的基本教学工具,成为大学生、硕士生以及博士生必须掌握的基本技能。在设计研究单位和工业部门,MATLAB已被广泛的应用于研究和解决各种具体的工程问题。近年来,MATLAB在我国也开始流行,应用MATLAB的单位和个人急剧增加。可以预见,MATLAB将在我国科学研究和工程应用中发挥越来越大的作用。
Mat lab 是当前数值计算方面应用地非常广泛的一种计算机软件,特别是在工程应用求解中发挥了重要作用。其所具有的浅显易懂的编程语言、强大的绘图功能、大量的内部函数等都
深深地吸引了我认真地去学习它。同时在上《过程装备力学基础》时,其中涉及有很多的问题是超越方程、微积分的问题,难以用普通的线性方法求解,而Mat lab 在此方面有强大的功能,特别是超越方程的精确求解以及图形的绘制方面。数学当中的绘制函数图象、绘制立体图形的交线(如绘制两个等直径圆柱体的交线)、求多项式的根等问题,这些问题如果依靠我们人工进行操作,则需要很多的时间和精力,当我们掌握了基本原理后,借助于MATLAB进行解决则会大大提高效率和精确度。
仅举一些运用MATLAB的例子。
常用控制命令:
click:%清屏; 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)
Label('r') %给x轴加标题
label('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的拟合函数, 即prolific() 函数,并结合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=politic(t,y,2) %二次多项式拟合
Hold on
xi=lenspiece(0,16,160); %在[0,16]等间距取160 个点
y I =polygala(p, xi); %由拟合得到的多项式及xi,确定y i
plot(xi, y I ) %画拟合曲线图
执行程序得到图2;
图2
显示的结果为
p=
-0.0445 1.0711 4.3252
p的值表示二阶拟合得到的多项式为:y= -0.0445t2+1.0711t+ 4.3252
下面是用lsqcurvefit()函数,即最小二乘拟合方法的Mat lab表达:
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];
x 0=[0.1,0.1,0.1];
min=inline ('x(1)*t.^2+x(2)*tax(3)','x','t');
x=lsqcurvefit(zuixiao,x0,t,y) %利用最小二乘拟合
其显示的结果为:
x =
-0.0445 1.0711 4.3252
可以看出其得到的结果与politic函数的结果相同。这说明在多项式拟合问题上这两个函数的效果是相同的。
下面的一个例子将体现lsqcurvefit()函数的优势。
例2: 在物理学中,为研究某种材料应力与应变的关系,测得一组数据如下表:
应力σ | 925 | 1125 | 1625 | 2125 | 2625 | 3125 | 3625 |
应变ε | 0.11 | 0.16 | 0.35 | 0.48 | 0.61 | 0.71 | 0.85 |
如果假定应力与应变有如下关系(σ为应力值,ε为应变值):
试计算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 (t,y,’o')
[p,resid1]=politic(x, y, 2)
Hold on
Xi=lenspiece (700, 3700, 3000);
Yi =polygala (pox);
Plot ( xi, y I )
X0= matlab学好了有什么用[0.1, 0.1];
Fife =inline ('a (1)+a(2)*log(x)','a' ,' x');
[a,resid2]=lsqcurvefit (ff f , x0,x,y)
plot( xi, ff f a, xi),'r')
执行程序得到图3,图中蓝曲线为利用prolific()函数得到的曲线,红曲线为利用lsqcurvefit()函数得到的曲线;
其显示的结果为:
p =
-0.0000 0.0004 -0.2266
resid1 =
R: [3x3 double]
D f: 4
Norms: 0.0331
a =
-3.5810 0.5344
resid2 =
0.0064
其中a的值代表利用lsqcurvefit()函数得到的关系为:ε=-3.5810+0.5344 σ
resid1、resid2 分别代表运用politic()函数、lsqcurvefit()函数得到的残差。可以看出利用lsqcurvefit()函数残差更小,即得到了更好的拟合效果。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论