MATLAB的常用应用总结.docx
- 文档编号:29415127
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:15
- 大小:23.54KB
MATLAB的常用应用总结.docx
《MATLAB的常用应用总结.docx》由会员分享,可在线阅读,更多相关《MATLAB的常用应用总结.docx(15页珍藏版)》请在冰豆网上搜索。
MATLAB的常用应用总结
§7MATLAB的应用
7.1MATLAB在数值分析中的应用
插值与拟合是来源于实际、又广泛应用于实际的两种重要方法。
随着计算机的不断发展
及计算水平的不断提高,它们已在国民生产和科学研究等方面扮演着越来越重要的角色。
下
面对插值中分段线性插值、拟合中的最为重要的最小二乘法拟合加以介绍。
7.1.1分段线性插值
所谓分段线性插值就是通过插值点用折线段连接起来逼近原曲线,这也是计算机绘制图
形的基本原理。
实现分段线性插值不需编制函数程序,MATLAB自身提供了内部函数interpl
其主要用法如下:
interp1(x,y,xi)—维插值
♦yi=interp1(x,y,xi)
对一组点(x,y)进行插值,计算插值点xi的函数值。
x为节点向量值,y为对应的节点函
数值。
如果y为矩阵,则插值对y的每一列进行,若y的维数超出x或xi的维数,则返回NaN。
♦yi=interp1(y,xi)
此格式默认x=1:
n,n为向量y的元素个数值,或等于矩阵y的size(y,1)。
♦yi=interp1(x,y,xi,'method')
method用来指定插值的算法。
默认为线性算法。
其值常用的可以是如下的字符串。
•
nearest
线性最近项插值。
•
linear
线性插值。
•
spline
三次样条插值。
•
cubic
三次插值。
所有的插值方法要求
x是单调的。
x也可能并非连续等距的。
正弦曲线的插值示例:
>>x=0:
0.1:
10;
>>y=sin(x);
>>xi=0:
0.25:
10;
>>yi=interp1(x,y,xi);
>>plot(x,y,'0',xi,yi)
则可以得到相应的插值曲线(读者可自己上机实验)。
Matlab也能够完成二维插值的运算,相应的函数为interp2,使用方法与interpl基本相
同,只是输入和输出的参数为矩阵,对应于二维平面上的数据点,详细的用法见Matlab联
机帮助。
7.1.2最小二乘法拟合
在科学实验的统计方法研究中,往往要从一组实验数据(Xj,yi)中寻找出自变量x和因
变量y之间的函数关系y=f(x)。
由于观测数据往往不够准确,因此并不要求y=f(x)经过所
有的点(Xi,yj,而只要求在给定点人上误差「二f(xj-yi按照某种标准达到最小,通常
采用欧氏范数|卜2作为误差量度的标准。
这就是所谓的最小二乘法。
在MATLAB中实现最
小二乘法拟合通常采用polyfit函数进行。
函数polyfit是指用一个多项式函数来对已知数据进行拟合,我们以下列数据为例介绍这个函数的用法:
>>x=0:
0.1:
1;
>>y=[-0.4471.9783.286.167.087.347.669.569.489.3011.2]
为了使用polyfit,首先必须指定我们希望以多少阶多项式对以上数据进行拟合,如果我们指
定一阶多项式,结果为线性近似,通常称为线性回归。
我们选择二阶多项式进行拟合。
>>P=polyfit(x,y,2)
P=
-9.810820.1293-0.0317
函数返回的是一个多项式系数的行向量,写成多项式形式为:
-9.8108x220.1293X-0.0317
为了比较拟合结果,我们绘制两者的图形:
>>xi=linspace(0,1,100);%绘图的X-轴数据。
>>Z=polyval(p,xi);%得到多项式在数据点处的值。
当然,我们也可以选择更高幕次的多项式进行拟合,如10阶:
>>p=polyfit(x,y,10);
>>xi=linspace(0,1,100);
>>z=ployval(p,xi);
读者可以上机绘图进行比较,曲线在数据点附近更加接近数据点的测量值了,但从整体上来
说,曲线波动比较大,并不一定适合实际使用的需要,所以在进行高阶曲线拟合时,“越高
越好”的观点不一定对的。
7.2符号工具箱及其应用
在数学应用中,常常需要做极限、微分、求导数等运算,MATLAB称这些运算为符号
运算。
MATLAB的符号运算功能是通过调用符号运算工具箱(SymbolicMathToolbox)内的工
具实现,其内核是借用Maple数学软件的。
MATLAB的符号运算工具箱包含了微积分运算、化简和代换、解方程等几个方面的工具,其详细内容可通过MATLAB系统的联机帮助查阅,本节仅对它的常用功能做简单介绍。
7.2.1符号变量与符号表达式
MATLAB符号运算工具箱处理的对象主要是符号变量与符号表达式。
要实现其符号运算,首先需要将处理对象定义为符号变量或符号表达式,其定义格式如下:
格式1:
sym(变量名’)或sym(表达式’)
功能:
定义一个符号变量或符号表达式。
例如:
>>sym(‘x')
>>sym(‘x+1')
格式2:
syms变量名1
%定义变量x为符号变量
%定义表达式x+1为符号表达式
变量名2……变量名n
功能:
定义变量名1、变量2……、变量名n为符号变量。
例如:
>>symsabxt%定义a,b,x,t均为符号变量
7.2.2微积分运算
1、极限
格式:
limit(f,t,a,'left'or‘right')
功能:
求符号变量t趋近a时,函数f的(左或右)极限。
'left表示求左极限,‘right表示求右极限,省略时表示求一般极限;a省略时变量t趋近0;t省略时默认变量为x,若
例如:
求极限limi1亠2■
Xx丿
无x则寻找(字母表上)最接近字母x的变量。
的命令及结果为:
>>symsxt
>>limit((1+2*t/x)A(3*x),x,inf)
ans=
exp(6*t)
再如求函数x/|x|,当x>0时的左极限和右极限,命令及结果为:
>>symsx
>>limit(x/abs(x),x,0,'lefts=-1)
>>limit(x/abs(x),x,0,'riglafs=1
2、导数
格式:
diff(f,t,n)
功能:
求函数f对变量t的n阶导数。
当n省略时,默认n=1;当t省略时,默认变量x,若无x时则查找字母表上最接近字母x的字母。
例如:
求函数f=a*xA2+b*x+c对变量x的一阶导数,命令及结果为
>>symsabcx
>>f=a*xA2+b*x+c;
>>diff(f)
ans=
2*a*x+b
求函数f对变量b的一阶导数(可看作求偏导),命令及结果为
>>diff(f,b)ans=x
求函数f对变量x的二阶导数,命令及结果为
>>diff(f,2)ans=2*a
3、积分
格式:
int(f,t,a,b)
功能:
求函数f对变量t从a到b的定积分.当a和b省略时求不定积分;当t省略时,默认变量为(字母表上)最接近字母x的变量。
例如:
求函数f=a*xA2+b*x+c对变量x不定积分,命令及结果为
>>symsabcx
>>f=a*xA2+b*x+c;
>>int(f)ans=
1/3*a*xA3+1/2*b*xA2+c*x
求函数f对变量b不定积分,命令及结果为
>>int(f,b)
ans=
a*xA2*b+1/2*bA2*x+c*b
求函数f对变量x从1到5的定积分,命令及结果为
>>int(f,1,5)
ans=
124/3*a+12*b+4*c
4、级数求和
格式:
symsum(s,t,a,b)
功能:
求表达式s中的符号变量t从第a项到第b项的级数和。
例如:
求级数1/11/21/^T/x的前三项的和,命令及结果为
>>symsum(1/x,1,3)ans=11/6
7.2.3化简和代换
MATLAB符号运算工具箱中,包括了较多的代数式化简和代换功能,下面仅举出部分常见运算。
simplify
利用各种恒等式化简代数式
expand
将乘积展开为和式
factor
把多项式转换为乘积形式
collect
合并同类项
horner
把多项式转换为嵌套表示形式
例如:
进行合并同类项执行
>>symsx
>>collect(3*xA3-0.5*xA3+3*xA2)
ans=
5/2*xA3+3*xA2)
进行因式分解执行
>>factor(3*xA3-0.5*xA3+3*xA2)
ans=
1/2*xA2*(5*x+6)
7.2.4解方程
1、代数方程
格式:
solve(f,t)
功能:
对变量t解方程f=0,t缺省时默认为x或最接近字母x的符号变量。
例如:
求解一元二次方程f=a*xA2+b*x+c的实根,
>>symsabcx
>>f=a*xA2+b*x+c;
>>solve(f,x)
ans=
[1/2/a*(-b+(bA2-4*a*c)A(1/2))][1/2/a*(-b-(bA2-4*a*c)A(1/2))]
2、微分方程
格式:
dsolve(‘s','s1','s2',…,'x')
其中s为方程;s1,s2,为初始条件,缺省时给出含任意常数c1,c2,的通解;x为
自变量,缺省时默认为t。
例如:
求微分方程y^1y2的通解
>>dsolve(‘Dy=1+yA2')
ans=
tan(t+c1)
7.3优化工具箱及其应用
在工程设计、经济管理和科学研究等诸多领域中,人们常常会遇到这样的问题:
如何从
一切可能的方案中选择最好、最优的方案,在数学上把这类问题称为最优化问题。
这类问题
很多,例如当设计一个机械零件时如何在保证强度的前提下使重量最轻或用量最省(当然偷
工减料除外);如何确定参数,使其承载能力最高;在安排生产时,如何在现有的人力、设备的条件下,合理安排生产,使其产品的总产值最高;在确定库存时如何在保证销售量的前
提下,使库存成本最小;在物资调配时,如何组织运输使运输费用最少。
这些都属于最优化问题所研究的对象。
MATLAB的优化工具箱被放在toolbox目录下的optim子目录中,其中包括有若干个常用的求解函数最优化问题的程序。
MATLAB的优化工具箱也在不断地完善。
不同版本的
MATLAB,其工具箱不完全相同。
在MATLAB5.3版本中,对优化工具箱作了全面的改进。
每个原有的常用程序都重新编制了一个新的程序。
除fzero和fsolve外都重新起了名字。
这
些新程序使用一套新的控制算法的选项。
与原有的程序相比,新程序的功能增强了。
在MATLAB5.3和6.0版本中,原有的优化程序(除fzero和fsolve夕卜)仍然保留并且可以使用,但是它们迟早会被撤消的。
鉴于上述情况,本书将只介绍那些新的常用的几个优化程序。
7.3.1线性规划问题
线性规划是最优化理论发展最成熟,应用最广泛的一个分支。
在MATLAB的优化工具
箱中用于求解下述线性规划的问题
minz=ex
s.t.Ax岂b(线性不等式约束)
Ax=bi(线性等式约束)
LB乞x^UB(有界约束)
的函数是linprog,其主要格式为:
[x,fval,exitflag,output,lambda]=linprog(c,A,b,A1,bi,LB,UB,x0,options)
其中,linprog为函数名,中括号及小括号中所含的参数都是输入或输出变量,这些参数的主要用法及说明如下:
(1)c,A和b是不可缺省的输入宗量;x是不可缺省的输出宗量,它是问题的解。
(2)当x无下界时,在LB处放置[]。
当无上界时,在UB处放置[]。
如果x的某个分
量xi无下界,则置LB(i)=-inf.如果xi无上界,则置UB(i)=inf.如果无线性不等式约束,则
在A和b处都放置[]。
(3)x0是解的初始近似值。
(4)options是用来控制算法的选项参数向量。
(5)输出宗量fval是目标函数在解x处的值。
(6)输出宗量exitflag的值描述了程序的运行情况。
如果exitflag的值大于0,则程序收
exitflag的值小于
敛于解x;如果exitflag的值等于0,则函数的计算达到了最大次数;如果0,则问题无可行解,或程序运行失败。
(7)输出宗量output输出程序运行的某些信息。
(8)输出宗量Lambda为在解x处的值Lagrange乘子。
例:
求解线性规划问题
minz=-2x^-x?
'X3,
s.t.XiX22X3=6,
x14x2-x3乞4,
2xi-2x2X3_12,
捲_0,x2_0,x3空5.
解:
在命令窗口中键入
>>c=[-2,-1,1];a=[1,4,-1;2,-2,1];b=[4;12];a仁[1,1,2];b1=6;
>>lb=[0;0;-inf];ub=[inf;inf;5];
>>[x,z]=linprog(c,a,b,a1,b1,1b,ub)
运行后得到:
x=
4.6667
0.0000
0.6667
z=
-8.6667
7.3.2非线性约束最优化
在MATLAB的优化工具箱中有一个求解下述非线性规划的问题
minf(x)
s.t.Ax_b
(线性不等式约束)
A1x=
(线性等式约束)
C(x)岂0
(非线性不等式约束)
C1(x)=0
(非线性等式约束)
LB空x^UB
的函数是fmincon,其主要格式为:
(有界约束)
[x,fval,exitflag,output,lambda,grad,hessian]=fmincon(‘fun',x0,A,b,A1,b1,LB,
UB,‘nonIcon',options,p1;・p2,)
其中,fmincon为函数名,参数的主要用法有的与线性规划中的相同,下面介绍几个非线性
规划特有的:
(1)‘fun和'x0是不可缺省的输入宗量。
fun是给出目标函数的M文件的名字,x0是极小值点的初始近似值。
x是不可缺省的输出宗量,它是问题的解。
(2)nonIcon是给出非线性约束函数C(x)和C1(x)的M文件的文件名。
(3)宗量p1,p2…是向目标函数传送的参数的值。
(4)输出宗量grad为目标函数在解x处的梯度。
(5)输出宗量hessian为目标函数在解x处的Hessian矩阵。
例:
求解非线性规划问题
x22
minf(x)二2x24x^22x21),
S.t.Xi-X?
—1,
x1x2=0,
1.5x/2「%-x2込0,
-x^-10乞0
解:
建立目标函数的M文件
functiony=nline(x)
y=exp(x
(1))*(4*x
(1)A2+2*x
(2)A2+4*x
(1)*x
(2)+2*x
(2)+1);
建立非线性约束条件的M文件
function[c1,c2]=nyueshu(x)
c1=[1.5+x
(1)*x
(2)-x
(1)-x
(2);-x
(1)*x
(2)-10];
c2=0;
在命令窗口中键入
>>x0=[-1,1];a=[1,-1];b=1;a1=[1,1];b1=0;
>>[x,f]=fmincon(‘nline',x0,a,b,a1,b1,[],[],‘nyueshu')
运行后得到:
x=
-1.22471.2247
f=
1.8951
7.3.3二次规划问题
二次规划数学模型的一般形式为:
1minxTHxcx
2
s.t.Ax_b
Ax二b1
LB-x-UB
其中H为对称矩阵,约束条件与线型规划相同。
在MATLAB的优化工具箱中有一个求
解上述规划问题的程序:
[x,fval,exitflag,output,lambda]=quadprog(H,c,A,b,A1,bl,LB,UB,xO,options)其中,quadprog为函数名,参数的主要用法及说明同线性规划,这里不再赘述。
例求解如下二次优化问题。
22
min£&)=捲x2-8论-10x2
s.t.3x12x2乞6
捲,x2_0
解:
将目标函数化为标准形式
1
■2
0、
+(-8-10)
f(x)=(X1X2)
0
2丿
2
在命令窗口中键入 >>H=[2,0;0,2];c=[-8,-10];a=[3,2];b=6;lb=[0,0];x0=[1,1]; >>x=quadprog(H,c,a,b,[],[],lb,[],x0)运行后得到: x= 0.3077 2.5385 7.3.4foptions函数 对于优化的控制,MATLAB共提供了18个参数,这些参数对优化的进行起者很关键的作用。 下面就对参数选择函数foptions作详细介绍。 •foptions优化函数调用中的参数选择。 参数具体意义如下: options (1)参数显示控制(默认值为0)。 等于1时显示一些结果。 options (2)优化点x的精度控制(默认值为1eV)。 options(3)优化函数F的精度控制(默认值为1e-)。 options(4)违反约束的结束标准(默认值为1e~6)。 options(5)策略选择。 不常用。 options(6)优化程序方法的选择。 值为0时为BFGS算法,值为1时采用 DFP算法。 options(7)线性插值算法选择。 值为0时为混合插值算法,值为1时采用立 方插值算法。 options(8)函数值显示(目标-达到问题中的Lambda)。 options(9)若需要检测用户提供的导数则设为1。 options(10)函数和约束求值的数目。 options(11)函数导数求值的个数 options(12)约束求值的数目。 options(13)等式约束的数目。 options(14)函数求值的最大次数(默认值为100变量个数)。 options(15)用于目标-达到问题中的特殊目标。 options(16)优化过程中变量的最小梯度值。 options(17)优化过程中变量的最大梯度值。 options(18)步长设置(默认值为 1或更小)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 常用 应用 总结