十一讲优化与数值积分ppt课件市公开课一等奖百校联赛特等奖课件.pptx
第十一讲 优化、数值积分与常微分方程数值解10/10/10/10/第1页第十一讲 优化、数值积分与常微分方程数值解11.1 无约束优化11.2 约束线性优化11.3 二次规划11.4 非线性方程求解11.5 数值积分理论和方法11.6 数值积分Matlab实现11.7 常微分方程数值解10/10/第2页11.1 无约束优化形如:min f(x),x=(x1,xn)T优化问题常称为无约束线性规划,实际上是多元函数无条件极值问题,极值点是局部最优解,全局最优解只能从局部最优解中比较得到,以下所谓最优解均指局部最优解10/10/第3页11.1 无约束优化1.fminbnd功效:计算非线性一元函数最小值。格式:X,FVAL=fminbnd(fun,x1,x2)例:计算函数f(x)=(x3+x2-1)/(exp(x)+exp(-x)最小值和最小值点,-5=x fun=(x3+x2-1)/(exp(x)+exp(-x);ezplot(fun)x,fval,exitflag=fminbnd(fun,-5,5)x=-3.3112fval=-0.9594exitflag=110/10/第5页11.1 无约束优化2.fminsearch功效:计算多元函数最小值。格式:X=fminsearch(fun,X0);X,fval,exitflag=fminsearch(.)例:求点(x1,x2)使目标函数f(x)取得最小值:f(x)=sin(x1)+cos(x2)10/10/第6页11.1 无约束优化x0=0,0;fun=sin(x(1)+cos(x(2);x,fval,exitflag=fminsearch(fun,x0)x=-1.5708 3.1416fval=-2.0000exitflag=110/10/第7页11.2 约束线性优化约束优化即为含有一定条件优化问题,其普通形式为若f,gi是线性函数,则称此模型为线性规划,不然称为非线性规划。10/10/第8页11.2 约束线性优化linprog功效:约束线性优化。格式:X=linprog(f,A,b,Aeq,beq)X=linprog(f,A,b,Aeq,beq,LB,UB)这里,由Aeq与beq 确定了等式约束,LB,UB确定了x范围,x0为初值。10/10/第9页11.2 约束线性优化例:Min 5x1+4x2+2x3S.t 6x1-x2+3x3=8 x1+2x2+4x3=10 -1=x1=3 0=x2=010/10/第10页11.2 约束线性优化clear f=-5 4 2;A=6-1 1;1 2 4;b=8;10;lb=-1 0 0;ub=3,2;10/10/第11页11.2 约束线性优化 x,f=linprog(f,A,b,lb,ub)Optimization terminated.x=1.3333 0.0000 0.000f=-6.666710/10/第12页11.3 二次规划对于非线性规划,常见是二次规划,其普通模型为:min f(x)=0.5 xTHx+cx s.t.AX b尤其,当H为正定矩阵时,目标函数为凸函数,线性约束下可行域为凸集,此时称凸二次规划。10/10/第13页11.3 二次规划1.quadprog功效:求解二次规划问题格式:X=quadprog(H,f,A,b)X=quadprog(H,f,A,b,Aeq,beq)X=quadprog(H,f,A,b,Aeq,beq,LB,UB)X=quadprog(H,f,A,b,Aeq,beq,LB,UB,X0)10/10/第14页11.3 二次规划例:10/10/第15页11.3 二次规划h=1-1;-1 2;c=-2;-6;a=1 1;-1 2;2 1;b=2;2;3;lb=0 0;x,f=quadprog(h,c,a,b,lb)x=0.6667 1.3333f=-8.222210/10/第16页11.4 非线性方程求解1.fzero功效:求非线性方程近似解格式:x=fzero(f,x0)X,FVAL=fzero(f,.)例:x,f=fzero(sin,2)x=3.1416f=1.2246e-01610/10/第17页11.4 非线性方程求解2.fsolve功效:求非线性方程近似解格式:x=fsolve(f,x0)X,FVAL=fsolve(f,X0,.)例:x,f=fsolve(cos(x)+x,1)x=-0.7391f=-2.8460e-01010/10/第18页11.5数值积分理论和方法10/10/第19页11.5数值积分理论和方法10/10/第20页11.5数值积分理论和方法10/10/第21页11.5数值积分理论和方法10/10/第22页11.5数值积分理论和方法10/10/第23页11.6数值积分Matlab实现 1.一元函数数值积分函数1 quad、quadl功效 数值定积分,自适应Simpleson积分法。格式 q=quad(fun,a,b)%近似地从a到b计算函数fun数值积分,误差为10-6。若给fun输入向量x,应返回向量y,即fun是一单值函数。10/10/第24页11.6数值积分Matlab实现 q=quad(fun,a,b,tol)%用指定绝对误差tol代替缺省误差。tol越大,函数计算次数越少,速度越快,但结果精度变小。q=quad(fun,a,b,tol,trace,p1,p2,)%将可选参数p1,p2,等传递给函数fun(x,p1,p2,),再作数值积分。若tol=或trace=,则用缺省值进行计算。10/10/第25页11.6数值积分Matlab实现q,n=quad(fun,a,b,)%同时返回函数计算次数n=quadl(fun,a,b,)%用高精度进行计算,效率可能比quad更加好。例2-40fun=inline(3*x.2./(x.3-2*x.2+3);Q1=quad(fun,0,2)%Q1=3.7224 Q2=quadl(fun,0,2)%Q2=3.722410/10/第26页11.6数值积分Matlab实现函数2 trapz功效 梯形法数值积分格式 T=trapz(Y)%用等距梯形法近似计算Y积分。若Y是一向量,则trapz(Y)为Y积分;若Y是一矩阵,则trapz(Y)为Y每一列积分。10/10/第27页11.6数值积分Matlab实现 T=trapz(X,Y)%用梯形法计算Y在X点上积分。若X为一列向量,Y为矩阵,且size(Y,1)=length(X),则对Y每一列积分。10/10/第28页11.6数值积分Matlab实现2 二元函数重积分数值计算函数 dblquad功效 矩形区域上二重积分数值计算格式 q=dblquad(fun,xmin,xmax,ymin,ymax)%调 用 函 数 quad在 区 域 xmin,xmax,ymin,ymax上计算二元函数z=f(x,y)二重积分。10/10/第29页11.6数值积分Matlab实现 q=dblquad(fun,xmin,xmax,ymin,ymax,tol)用指定精度tol代替缺省精度10-6,再进行计算。q=dblquad(fun,xmin,xmax,ymin,ymax,tol,methoq=dblquad(fun,xmin,xmax,ymin,ymax,tol,method)d)%用指定算法method代替缺省算法quad。method取值有quadl。10/10/第30页11.6数值积分Matlab实现q=dblquad(fun,xmin,xmax,ymin,ymax,tol,method,p1,p2,)%将可选参数p1,p2,.等传递给函数fun(x,y,p1,p2,)。若tol=,method=,则使用缺省精度和算法quad。如:fun=inline(y./sin(x)+x.*exp(y);Q=dblquad(fun,1,3,5,7)计算结果为:Q=3.8319e+00310/10/第31页11.6数值积分Matlab实现 q=dblquad(fun,xmin,xmax,ymin,ymax,tol,methodq=dblquad(fun,xmin,xmax,ymin,ymax,tol,method)%用指定算法method代替缺省算法。method取值有缺省算法或用户指定、与缺省命令有相同调用次序函数句柄。q=dblquad(fun,xlower,xupper,ymin,ymax,tol,method,p1,p2,q=dblquad(fun,xlower,xupper,ymin,ymax,tol,method,p1,p2,)%将可选参数p1,p2,.等传递给函数fun(x,y,p1,p2,)。若tol=,method=,则使用缺省精度和算法。10/10/第32页11.7 常微分方程数值解函数 ode45,ode45,ode23,ode23,ode113,ode113,ode15s,ode15s,ode23s,ode23s,ode23t,ode23tbode23t,ode23tb功效 常微分方程(ODE)组初值问题数值解参数说明:solver为命令ode45、de23,ode113,ode15s,ode23s,ode23t,ode23tb之一。Odefun 为显式常微分方程y=f(t,y)。10/10/第33页11.7 常微分方程数值解 TspanTspan 积 分 区 间(即 求 解 区 间)向 量tspan=t0,tf。要取得问题在其它指定时间点t0,t1,t2,上解,则令tspan=t0,t1,t2,tf(要求是单调)。Y0Y0 包含初始条件向量。Options Options 用命令odeset设置可选积分参数。P1,p2,P1,p2,传递给函数odefun可选参数。10/10/第34页11.7 常微分方程数值解格式 T,Y T,Y=solver(odefun,tspan,y0)solver(odefun,tspan,y0)%在区间tspan=t0,tf上,从t0到tf,用初始条件y0求解显式微分方程y=f(t,y)。对于标量t与列向量y,函数f=odefun(t,y)必须返回一f(t,y)列向量f。解矩阵Y中每一行对应于返回时间列向量T中一个时间点。要取得问题在其它指定时间点t0,t1,t2,上解,则令tspan=t0,t1,t2,tf(要求是单调)。10/10/第35页11.7 常微分方程数值解 T,Y T,Y=solver(odefun,tspan,y0,options)solver(odefun,tspan,y0,options)%用参数options(用命令odeset生成)设置属性(代替了缺省积分参数),再进行操作。惯用属性包含相对误差值RelTol(缺省值为1e-3)与绝对误差向量AbsTol(缺省值为每一元素为1e-6)。T,Y=solver(odefun,tspan,y0,options,p1,T,Y=solver(odefun,tspan,y0,options,p1,p2p2)将参数p1,p2,p3,.等传递给函数odefun,再进行计算。若没有参数设置,则令options=。10/10/第36页11.7 常微分方程数值解1求解详细ODE基本过程:(1)依据问题所属学科中规律、定律、公式,用微分方程与初始条件进行描述。F(y,y,y,y(n),t)=0 y(0)=y0,y(0)=y1,y(n-1)(0)=yn-1 而y=y;y(1);y(2);,y(m-1),n与m能够不等10/10/第37页11.7 常微分方程数值解(2)利用数学中变量替换:yn=y(n-1),yn-1=y(n-2),y2=y,y1=y,把高阶(大于2阶)方程(组)写成一阶微分方程组:,10/10/第38页11.7 常微分方程数值解(3)依据(1)与(2)结果,编写能计算导数M-函数文件odefile。(4)将文件odefile与初始条件传递给求解器Solver中一个,运行后就可得到ODE、在指定时间区间上解列向量y(其中包含y及不一样阶导数)。2求解器Solver与方程组关系表见下表 10/10/第39页函数指令函数指令含含 义义函函 数数含含 义义求求解解器器Solverode23普普通通2-3阶阶法法解解ODEodefile包含包含ODE文件文件ode23s低低阶阶法法解解刚刚性性ODE选选项项odeset创创建建、更更改改Solver选选项项ode23t解解 适适 度度 刚刚 性性ODEodeget读取读取Solver设置值设置值ode23tb低低阶阶法法解解刚刚性性ODE输输出出odeplotODE时间序列图时间序列图ode45普普通通4-5阶阶法法解解ODEodephas2ODE二维相平面图二维相平面图ode15变变阶阶法法解解刚刚性性ODEodephas3ODE三维相平面图三维相平面图ode113普普通通变变阶阶法法解解ODEodeprint在命令窗口输出结果在命令窗口输出结果10/10/第40页11.7 常微分方程数值解3因为没有一个算法能够有效地处理全部ODE问题,为此,MATLAB提供了各种求解器Solver,对于不一样ODE问题,采取不一样Solver。10/10/第41页求解器SolverODE类型特点说明ode45非刚性一 步 算 法;4,5阶Runge-Kutta方程;累计截断误差达(x)3大部分场所首选算法ode23非刚性一 步 算 法;2,3阶Runge-Kutta方程;累计截断误差达(x)3使用于精度较低情形ode113非刚性多步法;Adams算法;高低精度均可到10-310-6计算时间比ode45短ode23t适度刚性采取梯形算法适度刚性情形ode15s刚性多步法;Gears反向数值微分;精度中等若ode45失效时,可尝试使用ode23s刚性一步法;2阶Rosebrock算法;低精度当精度较低时,计算时间比ode15s短ode23tb刚性梯形算法;低精度当精度较低时,计算时间比ode15s短10/10/第42页