您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > matlab培训讲义
=115-7-25&rid=1111119MATLAB解方程讲师:施六五邮箱:shiliuwu@126.com主要内容:界面设置编辑和调试解方程拟合积分优化一、界面的设置Perference设置字体,属性等Setpath添加路径,增加具体的子函数Desktop→DesktopLayout→DefaultCommandwindow(tabtype)Commandhistory帮助窗口(docdocsearchlookfor)二、编辑与调试M文件:函数文件和脚本文件文件的命名:不能与matlab内部函数同名多行注释:1.Ctrl+R,Ctrl+T2.ifoend,3.%{%}自动缩进:Ctrl+I双击变量查看该程序的所有的该变量做标记Ctrl+F2更多右键信息设置断点,F5,F10,F11,GountilCursor分块执行%%程序中断:命令窗口输入Ctrl+Ccell模式%%按住Ctrl+Enter解方程线性方程非线性方程隐函数方程带参数的方程求解微分方程积分方程优化线性方程组Ax=bx=A\b矩阵的分解求解线性方程组矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积。常见的矩阵分解有LU分解、QR分解、Cholesky分解,以及Schur分解、Hessenberg分解、奇异分解等。(具体可以查看帮助文件)非线性方程求解函数:fzero求解单变量非线性方程的根基本用法:z=fzero('fname',x0,tol,trace)例子:初值的选取Datacursor获取坐标ar-1-0.8-0.6-0.4-0.200.20.40.60.81-20-15-10-505X:0.6674Y:0.03477texp(-3t)sin(4t+2)+4exp(-0.5t)cos(2t)-0.5函数:fsolve基本用法:X=fsolve(@fun,x0,options)clc;clear;closeallf{1}=inline('x-0.6*sin(x)-0.3*cos(y)');f{2}=inline('y-0.6*cos(x)+0.3*sin(y)');holdonh=arrayfun(@(i)ezplot(f{i},[-1,1,-1,1]),[1,2]);set(h(1),'color','r')-1-0.8-0.6-0.4-0.200.20.40.60.81-1-0.8-0.6-0.4-0.200.20.40.60.81xyy-0.6cos(x)+0.3sin(y)=0X=0.62249Y=0.38153Level=0.0057698functiony=myfun(x)y(1)=x(1)-0.6*sin(x(1))-0.3*cos(x(2));y(2)=x(2)-0.6*cos(x(1))+0.3*sin(x(2));end隐函数的求解给定一个隐函数的自变量,通过数值方法求解得到因变量。输入一个数组:f=@(x)@(y)(exp(y)+x.^y).^(1/y)-x.^2.*yf1=@(x)arrayfun(@(a)fsolve(f(a),rand),x)f=@(x)@(y)(exp(y)+x.^y).^(1/y)-x.^2.*yf1=@(x)arrayfun(@(a)fsolve(f(a),rand),x)f1就是一个匿名函数,输入可以是一个数组。带参数的非线性方程的求解a=[1368532112];b=-fliplr(a);xy=zeros(2,length(a));index=1:length(b);m=arrayfun(@(t)fsolve(@(x)myfun1(x,a(t),b(t)),xy(:,t)),index,'UniformOutput',false);微分方程常微分方程求解:解析解的求解,用dsolve函数。基本用法:dsolve('eq1','eq2',...,'cond1','cond2',...,'v')具体可以查看下帮助文件。当微分方程不能得到解析解,matlab有许多函数求解微分方程得到数值解。函数:ode45基本用法:[T,Y]=solver(odefun,tspan,y0,options)下面看一个例子:functiondy=myfun_3(x,y)dy=zeros(2,1);dy(1)=cos(y(1)-sin(x+y(2))+dy(2))-sin(2*x/y(1)+y(2));dy(2)=-2*x*y(2)+y(1)+sin(x-dy(1))*y(1);clc;clear;closealloptions=odeset('RelTol',1e-4,'AbsTol',[1e-41e-4]);[T,Y]=ode45(@myfun_3,[02.5],[10.25],options);plot(T,Y(:,1),'r*-',T,Y(:,2),'b+-')00.511.522.50.20.40.60.811.21.41.61.8二阶微分方程的求解(帮助文件exmple2)对于多阶方程的求解主要是自己使用相关的算法(欧拉法、二阶或四阶龙格库塔法求解得到数值解)Ode45ode23等带参数的微分方程clear;clc;closealllorenzeq=@(t,x,beta,rou,sig)[-beta*x(1)+x(2)*x(3);rou*x(2)+rou*x(3);-x(1)*x(2)+sig*x(2)-x(3)];beta=2;rou=5;sig=20;t_final=100;x0=[001e-10];[t,x]=ode45(@(t,x)lorenzeq(t,x,beta,rou,sig),[0,t_final],x0);plot(t,x);figure;plot3(x(:,1),x(:,2),x(:,3));axis([1042-2020-2025])其他类型单个高阶微分方程高阶常微分方程隐式微分方程微分代数方程延迟微分方程边值问题偏微分方程Simulink求解见《高等应用数学问题的matlab求解》拟合线性回归非线性拟合线性回归Regress查看帮助文件非线性拟合CftoolSftool参考matlab技术论坛电子期刊第三期查看一个简单的例子帮助文件functionyhat=hougen(beta,x)b1=beta(1);b2=beta(2);b3=beta(3);b4=beta(4);b5=beta(5);x1=x(:,1);x2=x(:,2);x3=x(:,3);yhat=(b1*x2-x3/b5)./(1+b2*x1+b3*x2+b4*x3);loadreactionbeta=nlinfit(reactants,rate,@hougen,beta);积分quadquadlquad2dtriplequad等2次积分3次积分高次积分蒙特卡洛法优化优化工具箱提供了一般和大型的非线性优化函数,同时提供了了线性规划,二次规划,非线性最小二乘以及非线性方程的求解的工具。•主要特性:–无约束非线性极小化问题–约束性线性极小化、极大极小、多目标优化,半无穷极小化问题。–二次规划和线性规划问题–非线性最小二乘和边界曲线拟合问题–非线性系统方程求解问题–约束线性最小二乘问题–大型问题的特殊算法优化工具箱简介:下面我们看几个咱们一般常用的函数。单目标优化问题求解的函数(1)、函数:fminband用于求解一元函数在区间中的极小值基本用法:x=fminbnd(fun,x1,x2,options)例子可以查看下帮助文件。(2)、函数:fminsearch基于单纯形算法求一元函数或多元函数的极小值点和函数值基本用法:x=fminsearch(fun,x0,options)clc;clear;closeall;f=inline('x(1)+x(2).^2./(4*x(1))+x(3).^2./x(2)+2./x(3)');options=optimset('PlotFcns',@optimplotfval,'Display','Iter');[x,fval,exitflag]=fminsearch(f,[0.50.50.5],options);(3)、函数:fminunc基于拟牛顿法求无约束条件下多元函数的极小值点和最小值。基本用法:[x,fval]=fminunc(filename,x0,option)例子省略(帮助文件)。(4)、函数:fmincon专门用于求解各种约束下的最优化问题。0102030405060708044.24.44.64.855.25.4IterationFunctionvalueCurrentFunctionValue:4基本用法:[x,fval]=fmincon(filename,x0,A,b,Aeq,beq,Lb,Ub,Non,option)建立目标函数;functiony=myfun_5(x)y=x(1).^3+x(2).^2-4*x(1)+4;建立约束非线性条件:function[c,ceq]=non(x)c=x(1).^2-x(2)+1;ceq=[];主程序:clc;clear;closeall;lb=[0,0];A=[-11];b=2;x0=[10,10];options=optimset;options.Display='iter-detailed';options.Algorithm='interior-point';%options=optimset('Algorithm','sqp','Display','iter-detailed','PlotFcns',@optimplotx);[x,fval,exitflag]=fmincon(@myfun_5,x0,A,b,[],[],lb,[],@non,options);(5)、函数:ga基本用法:x=ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon,options)functiony=myfun_6(x)y=100*(x(1)^2-x(2))^2+(1-x(1))^2;function[c,ceq]=constrain(x)c=[1.5+x(1)*x(2)+x(1)-x(2);-x(1)*x(2)+10];ceq=[];clc;clear;closeallnvars=2;lb=[00];ub=[113];options=gaoptimset('PlotFcns',{@gaplotbestf,@gaplotmaxconstr},'Display','iter');[x,fval]=ga(@myfun_6,nvars,[],[],[],[],lb,ub,@constrain,options);Ga算法的参数设置:遗传算法是从一个种群开始对问题的最优解搜索,更有利于全局最优化解的搜索,但遗传算法需要指定各个自变量的范围,不能像最优化工具箱中可以使用无穷区间的概念;该算法也不依赖于导数信息或其它辅助信息就能进行最优搜索,但遗传算法采用的是概率性规则而不是确定性规则,所以每次得出的结果不完全相同。多目标优化问题算法:1、权和法该法将多目标向量问题转化为所有目标的加权求和的标量问题,即:21min().()miixifxwFx加权因子的选取方法许多,有专家打分法、分法、容限法和加权因子分解法等。该问题可以用标准的无约束最优化算法进行求解。直接转化为单目标优化问题求解,可以使用单目标规划函数。2、约束法约束法克服权和法的某些凸型问题。它对目标函数向量中的主要目标pF进行最小化,将其他目标用不等式约束形式写出:min().()pxpifxsubFx1,.....,imip将多目标同样转化为单目标问题,可以使用上面介绍的函数fmincon进行求解。3、目标达到法目标函数系列
本文标题:matlab培训讲义
链接地址:https://www.777doc.com/doc-2887307 .html