《十一讲优化与数值积分ppt课件.ppt》由会员分享,可在线阅读,更多相关《十一讲优化与数值积分ppt课件.ppt(42页珍藏版)》请在三一文库上搜索。
1、第十一讲 优化、数值积分 与常微分方程数值解,2019年4月25日星期四,2019/4/25,,2,第十一讲 优化、数值积分 与常微分方程数值解,11.1 无约束优化 11.2 约束线性优化 11.3 二次规划 11.4 非线性方程求解 11.5 数值积分的理论和方法 11.6 数值积分的Matlab实现 11.7 常微分方程数值解,2019/4/25,,3,11.1 无约束优化,形如:min f(x), x=(x1,xn)T 的优化问题常称为无约束线性规划,实际上是多元函数的无条件极值问题,极值的点是局部最优解,全局最优解只能从局部最优解中比较得到,以下所谓最优解均指局部最优解,2019/4
2、/25,,4,11.1 无约束优化,1. fminbnd 功能:计算非线性一元函数最小值。 格式: X,FVAL = fminbnd(fun,x1,x2) 例:计算函数f(x)=(x3+x2-1)/(exp(x)+exp(-x)的最小值和最小值点,-5=x=5,2019/4/25,,5,11.1 无约束优化, fun=(x3+x2-1)/(exp(x)+exp(-x); ezplot(fun) x,fval,exitflag=fminbnd(fun,-5,5) x = -3.3112 fval = -0.9594 exitflag = 1,2019/4/25,,6,11.1 无约束优化,2.
3、fminsearch 功能:计算多元函数最小值。 格式:X = fminsearch(fun,X0); X,fval,exitflag= fminsearch(.) 例:求点(x1,x2)使目标函数f(x)取得最小值: f(x)=sin(x1)+cos(x2),2019/4/25,,7,11.1 无约束优化,x0=0,0; fun=sin(x(1)+cos(x(2); x,fval,exitflag=fminsearch(fun,x0) x = -1.5708 3.1416 fval = -2.0000 exitflag = 1,2019/4/25,,8,11.2 约束线性优化,约束优化即为含
4、有一定条件的优化问题,其一般形式为 若f,gi是线性函数,则称此模型为线性规划,否则称为非线性规划。,2019/4/25,,9,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为初值。,2019/4/25,,10,11.2 约束线性优化,例:Min 5x1+4x2+2x3 S.t 6x1-x2+3x3=0,2019/4/25,,11,11.2 约束线性优化,clear f=-5 4 2; A
5、=6 -1 1;1 2 4; b=8;10; lb=-1 0 0; ub=3,2;,2019/4/25,,12,11.2 约束线性优化, x,f=linprog(f,A,b,lb,ub) Optimization terminated. x = 1.3333 0.0000 0.000 f = -6.6667,2019/4/25,,13,11.3 二次规划,对于非线性规划,常见的是二次规划,其一般模型为: min f(x)= 0.5 xTHx+cx s.t. AX b 特别,当H为正定矩阵时,目标函数为凸函数,线性约束下可行域为凸集,此时称凸二次规划。,2019/4/25,,14,11.3 二次
6、规划,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),2019/4/25,,15,11.3 二次规划,例:,2019/4/25,,16,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.3333
7、 f =-8.2222,2019/4/25,,17,11.4 非线性方程求解,1.fzero 功能:求非线性方程的近似解 格式:x=fzero(f,x0) X,FVAL= fzero(f,.) 例: x,f=fzero(sin,2) x =3.1416 f =1.2246e-016,2019/4/25,,18,11.4 非线性方程求解,2.fsolve 功能:求非线性方程的近似解 格式:x=fsolve(f,x0) X,FVAL=fsolve(f,X0,.) 例: x,f=fsolve(cos(x)+x,1) x =-0.7391 f =-2.8460e-010,2019/4/25,,19,1
8、1.5数值积分的理论和方法,2019/4/25,,20,11.5数值积分的理论和方法,2019/4/25,,21,11.5数值积分的理论和方法,2019/4/25,,22,11.5数值积分的理论和方法,2019/4/25,,23,11.5数值积分的理论和方法,2019/4/25,,24,11.6数值积分的Matlab实现,1. 一元函数的数值积分 函数1 quad、quadl 功能 数值定积分,自适应Simpleson积分法。 格式 q = quad(fun,a,b) %近似地从a到b计算函数fun的数值积分,误差为10-6。若给fun输入向量x,应返回向量y,即fun是一单值函数。,2019
9、/4/25,,25,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= ,则用缺省值进行计算。,2019/4/25,,26,11.6数值积分的Matlab实现,q,n = quad(fun,a,b,) %同时返回函数计算的次数n = quadl(fun,a,b,) %用高精度进行计算,效率可能比q
10、uad更好。 例2-40 fun = 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.7224,2019/4/25,,27,11.6数值积分的Matlab实现,函数2 trapz 功能 梯形法数值积分 格式 T = trapz(Y) %用等距梯形法近似计算Y的积分。若Y是一向量,则trapz(Y)为Y的积分;若Y是一矩阵,则trapz(Y)为Y的每一列的积分。,2019/4/25,,28,11.6数值积分的Matlab实现,T = trapz(X,Y) %用梯形法计算Y
11、在X点上的积分。若X为一列向量,Y为矩阵,且size(Y,1) = length(X),则对Y的每一列积分。,2019/4/25,,29,11.6数值积分的Matlab实现,2 二元函数重积分的数值计算 函数 dblquad 功能 矩形区域上的二重积分的数值计算 格式 q = dblquad(fun,xmin,xmax,ymin,ymax) %调用函数quad在区域xmin,xmax, ymin,ymax上计算二元函数z=f(x,y)的二重积分。,2019/4/25,,30,11.6数值积分的Matlab实现,q=dblquad(fun,xmin,xmax,ymin,ymax,tol) 用指定
12、的精度tol代替缺省精度10-6,再进行计算。 q=dblquad(fun,xmin,xmax,ymin,ymax,tol,method) %用指定的算法method代替缺省算法quad。method的取值有quadl。,2019/4/25,,31,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 =
13、dblquad(fun,1,3,5,7) 计算结果为:Q = 3.8319e+003,2019/4/25,,32,11.6数值积分的Matlab实现,q=dblquad(fun,xmin,xmax,ymin,ymax,tol,method) %用指定的算法method代替缺省算法。method的取值有缺省算法或用户指定的、与缺省命令有相同调用次序的函数句柄。 q=dblquad(fun,xlower,xupper,ymin,ymax,tol,method,p1,p2,) %将可选参数p1,p2,等传递给函数fun(x,y,p1,p2,)。若tol=,method=,则使用缺省精度和算法。,20
14、19/4/25,,33,11.7 常微分方程数值解,函数 ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb 功能 常微分方程(ODE)组初值问题的数值解 参数说明: solver为命令ode45、de23,ode113,ode15s,ode23s, ode23t, ode23tb之一。 Odefun 为显式常微分方程y=f(t,y)。,2019/4/25,,34,11.7 常微分方程数值解,Tspan 积分区间(即求解区间)的向量tspan=t0,tf。要获得问题在其他指定时间点t0,t1,t2,上的解,则令tspan=t0,t1,t2
15、,tf(要求是单调的)。 Y0 包含初始条件的向量。 Options 用命令odeset设置的可选积分参数。 P1,p2, 传递给函数odefun的可选参数。,2019/4/25,,35,11.7 常微分方程数值解,格式 T,Y = 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
16、,t2,tf(要求是单调的)。,2019/4/25,,36,11.7 常微分方程数值解,T,Y = solver(odefun,tspan,y0,options) %用参数options(用命令odeset生成)设置的属性(代替了缺省的积分参数),再进行操作。常用的属性包括相对误差值RelTol(缺省值为1e-3)与绝对误差向量AbsTol(缺省值为每一元素为1e-6)。 T,Y=solver(odefun,tspan,y0,options,p1,p2) 将参数p1,p2,p3,等传递给函数odefun,再进行计算。若没有参数设置,则令options=。,2019/4/25,,37,11.7
17、常微分方程数值解,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可以不等,2019/4/25,,38,11.7 常微分方程数值解,(2)运用数学中的变量替换:yn=y(n-1),yn-1=y(n-2),y2=y,y1=y,把高阶(大于2阶)的方程(组)写成一阶微分方程组:,,,2019/4/25,,39,11.7 常微分方程数值解,(3)根据(1)与(2)的结果,编写能计算导数的M-函数文件odefile。 (4)将文件odefile与初始条件传递给求解器Solver中的一个,运行后就可得到ODE的、在指定时间区间上的解列向量y(其中包含y及不同阶的导数)。 2求解器Solver与方程组的关系表见下表,2019/4/25,,40,2019/4/25,,41,11.7 常微分方程数值解,3因为没有一种算法可以有效地解决所有的ODE问题,为此,MATLAB提供了多种求解器Solver,对于不同的ODE问题,采用不同的Solver。,2019/4/25,,42,
链接地址:https://www.31doc.com/p-2636768.html