第2讲MATLAB程序设计及其调试



《第2讲MATLAB程序设计及其调试》由会员分享,可在线阅读,更多相关《第2讲MATLAB程序设计及其调试(74页珍藏版)》请在文档大全上搜索。
1、 M文件的功能和特点 MATLAB是解释性语言 语法简单 调试容易 人机交互性强 开放性、可扩展性强第第2讲讲MATLAB 程序设计及其调试程序设计及其调试M文件输入窗口!文件输入窗口!222112221222110.753.751.512612120.753.751.5120.54571( ,)0.7575110.54571xxxxxxxxexxp x xexxexx 脚本文件first.m%first.m This is my first example.a=2;b=2;clf;x=-a:0.2:a;y=-b:0.2:b;for i=1:length(y) for j=1:length(x
2、) if x(j)+y(i)1 z(i,j)=0.5457*exp(-0.75*y(i)2-3.75*x(j)2-1.5*x(j); elseif x(j)+y(i) x,fval,exitflag,output=fminbnd(x3+cos(x)+x*log(x)/exp(x),0,1)x = 0.5223fval = 0.3974exitflag = 1output = iterations: 9 funcCount: 9 algorithm: golden section search, parabolic interpolation1) 3x()x( f3例5 在0,5上求下面函数的最
3、小值解:先自定义函数:在MATLAB编辑器中建立M文件为:function f = myfun(x)f = (x-3).2 - 1;保存为myfun.m,然后在命令窗口键入命令: x=fminbnd(myfun,0,5)则结果显示为:x = 3无约束多元函数最小值无约束多元函数最小值多元函数最小值的标准形式为其中:x为向量.命令 利用函数fminsearch求无约束多元函数最小值.函数 fminsearch格式 x = fminsearch(fun,x0) %x0为初始点,fun为目标函数的表达式字符串或MATLAB自定义函数的函数柄.x = fminsearch(fun,x0,options
4、) % options查optimset.x,fval = fminsearch() %最优点的函数值.x,fval,exitflag = fminsearch() % exitflag与单变量情形一致.x,fval,exitflag,output = fminsearch() %output与单变量情形一致.)x( fminxx,x,xxn21222132131xxx10 xx4x2y例6 求 的最小值点.解:X=fminsearch(2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2, 0,0)结果为 X = 1.0016 0.8335或在MATLAB编辑器中建
5、立函数文件.function f=myfun(x)f=2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2;保存为myfun.m,在命令窗口键入 X=fminsearch (myfun, 0,0) 或 X=fminsearch(myfun, 0,0)结果为: X = 1.0016 0.8335有约束的多元函数最小值有约束的多元函数最小值非线性有约束的多元函数的标准形式为:sub.to 其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)是返回向量的函数,f(x)为目标函数,f(x)、C(x)、Ceq(x)可以是非线性函数.在MATLAB5.
6、x中,它的求解由函数constr实现.)x( fminx0)x(C0)x(CeqbxAbeqxAequbxlb函数 fmincon格式 x = fmincon(fun,x0,A,b)x = fmincon(fun,x0,A,b,Aeq,beq)x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)x,fval = fmincon()x,fval,exitflag = fmincon
7、()x,fval,exitflag,output = fmincon()x,fval,exitflag,output,lambda = fmincon()x,fval,exitflag,output,lambda,grad = fmincon()x,fval,exitflag,output,lambda,grad,hessian = fmincon()参数说明:fun为目标函数,它可用前面的方法定义;nonlcon的作用是通过接受的向量x来计算非线性不等约束和等式约束分别在x处的估计C和Ceq,通过指定函数柄来使用,如:x = fmincon(myfun,x0,A,b,Aeq,beq,lb,u
8、b,mycon),先建立非线性约束函数,并保存为mycon.m:function C,Ceq = mycon(x)C = % 计算x处的非线性不等约束的函数值.Ceq = % 计算x处的非线性等式约束的函数值.lambda是Lagrange乘子,它体现哪一个约束有效.output输出优化信息;grad表示目标函数在x处的梯度;hessian表示目标函数在x处的Hessian值.例7求下面问题在初始点(0,1)处的最优解21212221x5x2xxxx0 x) 1x(22106x3x221min sub.to 解:约束条件的标准形式为:sub.to 先在MATLAB编辑器中建立非线性约束函数文件