当前位置:文档之家› 第七讲 Matlab & 最优化

第七讲 Matlab & 最优化


三维曲面

产生三维数据 在MATLAB中,利用meshgrid函数产生平面区 域内的网格坐标矩阵。其格式为: x=a:d1:b; y=c:d2:d; [X,Y]=meshgrid(x,y); 语句执行后,矩阵X的每一行都是向量x,行数 等于向量y的元素的个数,矩阵Y的每一列都是 向量y,列数等于向量x的元素的个数。
逻辑运算

MATLAB提供了3种逻辑运算符:&(与)、 |(或)和~(非)。
矩阵特征值


E=eig(A):求矩阵A的全部特征值,构成 向量E。 [V,D]=eig(A):求矩阵A的全部特征值, 构成对角阵D,并求A的特征向量构成V 的列向量。
M文件




用MATLAB语言编写的程序,称为M文件。M文 件可以根据调用方式的不同分为两类:命令文 件(Script File)和函数文件(Function File)。 例1:命令文件 首先建立命令文件并以文件名f2c.m存盘。 clear; %清除工作空间中的变量 f=input('Input Fahrenheit temperature:'); c=5*(f-32)/9 然后在MATLAB的命令窗口中输入f2c执行该命 令文件
[x,fval,exitflag,output]=fminbnd('(x^3+cos(x)+x*log(x))/exp(x)',0,1)
最优化方法-多维无约束

函数 fminsearch 格式 x = fminsearch(fun,x0) %x0为初始点,fun为 目标函数的表达式字符串或MATLAB自定义函数的函数 柄。 x = fminsearch(fun,x0,options) % options查 optimset [x,fval] = fminsearch(…) %最优点的函数值 [x,fval,exitflag] = fminsearch(…) % exitflag与单变 量情形一致 [x,fval,exitflag,output] = fminsearch(…) %output与 单变量情形一致 X=fminsearch('x(1)^4+x(2)^4-14*x(1)^238*x(2)^2-24*x(1)+120*x(2)',[0,0])
一维最优化方法



函数 fminbnd 格式 x = fminbnd(fun,x1,x2) %返回自变量x在区间 上 函数fun取最小值时x值,fun为目标函数的表达式字符串或 MATLAB自定义函数的函数柄。 x = fminbnd(fun,x1,x2,options) % options为指定优化参 数选项 [x,fval] = fminbnd(…) % fval为目标函数的最小值 [x,fval,exitflag] = fminbnd(…) %xitflag为终止迭代的条 件 [x,fval,exitflag,output] = fminbnd(…) % output为优化信 息 说明 若参数exitflag>0,表示函数收敛于x,若exitflag=0, 表示超过函数估计值或迭代的最大数字,exitflag<0表示函 数不收敛于x;若参数output=iterations表示迭代次数, output=funccount表示函数赋值次数,output=algorithm 表示所使用的算法。
非线性方程数值求解

z=fzero('fname',x0,tol,trace) 其中fname是待求根的函数文件名,x0为搜索 的起点。一个函数可能有多个根,但fzero函数 只给出离x0最近的那个根。tol控制结果的相对 精度,缺省时取tol=eps,trace指定迭代信息 是否在运算中显示,为1时显示,为0时不显示, 缺省时取trace=0。 y=inline('x-10.^x+2');fzero(y,0.5)
线性方程组求解

利用左除运算符的直接解法 对于线性方程组Ax=b,可以利用左除运 算符“\”求解: x=A\b A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4]; b=[13,-9,6,0]'; x=A\b
线性方程组求解

Cholesky分解 R=chol(X):产生一个上三角阵R,使R'R=X。 若X为非对称正定,则输出一个出错信息。 实现Cholesky分解后,线性方程组Ax=b变成 R‘Rx=b,所以x=R\(R’\b)。 A=[2,1,2;1,1,1;2,1,3]; b=[2,0,3]'; R=chol(A) R\(R'\b)
图形保持

hold on/off命令控制是保持原有图形还 是刷新原有图形,不带参数的hold命令 在两种状态之间进行切换。
图形样式


颜色:'c', 'm', 'y', 'r', 'g', 'b', 'w', and 'k'. 线型:'–' for solid, '– –' for dashed, ':' for dotted, '–.' for dash-dot, and 'none' for no line. 标记:'+', 'o', '*', and 'x'.
非线性方程组的求解
建立函数文件myfun.m function q=myfun(p) x=p(1); y=p(2); q(1)=x-0.6*sin(x)-0.3*cos(y); q(2)=y-0.6*cos(x)+0.3*sin(y);

x=fsolve('myfun',[0.5,0.5]',optimset('Display','of f'))
绘图
二维数据曲线图:Plot(x,y) x=0:pi/100:2*pi; y=2*exp(-0.5*x).*cos(4*pi*x); plot(x,y) t=0:0.1:2*pi; x=t.*sin(3*t); y=t.*sin(t).*sin(t); plot(x,y)

绘图

plot(x1,y1,x2,y2,…,xn,yn) 当输入参数都为向量时,x1和y1,x2和 y2,…,xn和yn分别组成一组向量对, 每一组向量对的长度可以不同。每一向 量对可以绘制出一条曲线,这样可以在 同一坐标内绘制出多条曲线。
自适应采样的绘图函数
fplot(fname,lims,tol,选项) 其中fname为函数名,以字符串形式出现, lims为x,y的取值范围,tol为相对允许误 差,其系统默认值为2e-3。选项定义与 plot函数相同。

fplot('cos(tan(pi*x))',[ 0,1],1e-4)
图形窗口的分割
三维曲面
[x,y]=meshgrid(0:0.25:4*pi); z=sin(x+sin(y))-x/10; mesh(x,y,z); axis([0 4*pi 0 4*pi -2.5 1]);
三维曲面
[x,y]=meshgrid(-8:0.5:8); z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps); subplot(2,2,1); mesh(x,y,z); title('mesh(x,y,z)') subplot(2,2,2); meshc(x,y,z); title('meshc(x,y,z)') subplot(2,2,3); meshz(x,y,z) title('meshz(x,y,z)') subplot(2,2,4); surf(x,y,z); title('surf(x,y,z)')
非线性方程组的求解

X=fsolve('fun',X0,option) 其中X为返回的解,fun是用于定义需求解的非线性方 程组的函数文件名,X0是求根过程的初值,option为 最优化工具箱的选项设定。最优化工具箱提供了20多 个选项,用户可以使用optimset命令将它们显示出来。 如果想改变其中某个选项,则可以调用optimset()函数 来完成。例如,Display选项决定函数调用时中间结果 的显示方式,其中‘off’为不显示,‘iter’表示每步都 显示,‘final’只显示最终结果。 optimset(‘Display’,‘off’)将设定Display选项为‘off’。
图形例子
x=0:pi/100:2*pi; y1=2*exp(-0.5*x); y2=cos(4*pi*x); plot(x,y1,x,y2) title('x from 0 to 2{\pi}'); %加图形标题 xlabel('Variable X'); %加X轴说明 ylabel('Variable Y'); %加Y轴说明 text(0.8,1.5,'曲线y1=2e^{-0.5x}'); %在指定位置添 加图形说明 text(2.5,1.1,'曲线y2=cos(4{\pi}x)'); legend('y1','y2') %加图例
向量和矩阵



A=[1,2,3;4,5,6] %产生2X3矩阵,逗号 可用空格代替;size(A)返回维数,元素 可用A(i,j)访问,下标从1开始 b=[7 8] %b=start : step : end b=7 : 1 : 8 %b(2)返回8 转置用单撇表示
相关主题