null第十一讲 优化、数值积分
与常微分方程数值解第十一讲 优化、数值积分
与常微分方程数值解*第十一讲 优化、数值积分
与常微分方程数值解第十一讲 优化、数值积分
与常微分方程数值解11.1 无约束优化
11.2 约束线性优化
11.3 二次规划
11.4 非线性方程求解
11.5 数值积分的理论和方法
11.6 数值积分的Matlab实现
11.7 常微分方程数值解
11.1 无约束优化11.1 无约束优化形如:min f(x), x=(x1,……,xn)T 的优化问题常称为无约束线性规划,实际上是多元函数的无条件极值问题,极值的点是局部最优解,全局最优解只能从局部最优解中比较得到,以下所谓最优解均指局部最优解11.1 无约束优化11.1 无约束优化1. fminbnd
功能:计算非线性一元函数最小值。
格式
pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载
: [X,FVAL] = fminbnd(‘fun’,x1,x2)
例:计算函数f(x)=(x^3+x^2-1)/(exp(x)+exp(-x))的最小值和最小值点,-5<=x<=511.1 无约束优化11.1 无约束优化>> fun='(x^3+x^2-1)/(exp(x)+exp(-x))'; >> ezplot(fun) >> [x,fval,exitflag]=fminbnd(fun,-5,5) x = -3.3112 fval = -0.9594 exitflag = 111.1 无约束优化11.1 无约束优化2. fminsearch
功能:计算多元函数最小值。
格式:X = fminsearch(‘fun’,X0); [X,fval,exitflag]= fminsearch(...)
例:求点(x1,x2)使目标函数f(x)取得最小值:
f(x)=sin(x1)+cos(x2)11.1 无约束优化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 = 111.2 约束线性优化11.2 约束线性优化约束优化即为含有一定条件的优化问题,其一般形式为
若f,gi是线性函数,则称此模型为线性规划,否则称为非线性规划。
11.2 约束线性优化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为初值。11.2 约束线性优化11.2 约束线性优化例:Min –5x1+4x2+2x3
S.t 6x1-x2+3x3<=8
x1+2x2+4x3<=10
-1<=x1<=3
0<=x2<=2
x3>=0
11.2 约束线性优化11.2 约束线性优化
>clear >> f=[-5 4 2]; >> A=[6 -1 1;1 2 4]; >> b=[8;10]; > lb=[-1 0 0]; >> ub=[3,2];11.2 约束线性优化11.2 约束线性优化>> [x,f]=linprog(f,A,b,[],[],lb,ub) Optimization terminated. x = 1.3333 0.0000 0.000 f = -6.6667
11.3 二次规划11.3 二次规划对于非线性规划,常见的是二次规划,其一般模型为:
min f(x)= 0.5 xTHx+cx
s.t. AX ≤ b
特别,当H为正定矩阵时,目标函数为凸函数,线性约束下可行域为凸集,此时称凸二次规划。11.3 二次规划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)11.3 二次规划11.3 二次规划例:11.3 二次规划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
f =-8.222211.4 非线性方程求解11.4 非线性方程求解1.fzero
功能:求非线性方程的近似解 格式:x=fzero(‘f’,x0)
[X,FVAL]= fzero(‘f’,...)
例:>> [x,f]=fzero('sin',2)
x =3.1416
f =1.2246e-01611.4 非线性方程求解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-01011.5数值积分的理论和方法11.5数值积分的理论和方法11.5数值积分的理论和方法11.5数值积分的理论和方法11.5数值积分的理论和方法11.5数值积分的理论和方法11.5数值积分的理论和方法11.5数值积分的理论和方法11.5数值积分的理论和方法11.5数值积分的理论和方法11.6数值积分的Matlab实现11.6数值积分的Matlab实现1. 一元函数的数值积分
函数1 quad、quadl
功能 数值定积分,自适应Simpleson积分法。
格式 q = quad(fun,a,b) %近似地从a到b计算函数fun的数值积分,误差为10-6。若给fun输入向量x,应返回向量y,即fun是一单值函数。11.6数值积分的Matlab实现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=[ ],则用缺省值进行计算。11.6数值积分的Matlab实现11.6数值积分的Matlab实现[q,n] = quad(fun,a,b,…) %同时返回函数计算的次数n
… = quadl(fun,a,b,…) %用高精度进行计算,效率可能比quad更好。
例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.722411.6数值积分的Matlab实现11.6数值积分的Matlab实现函数2 trapz
功能 梯形法数值积分
格式 T = trapz(Y) %用等距梯形法近似计算Y的积分。若Y是一向量,则trapz(Y)为Y的积分;若Y是一矩阵,则trapz(Y)为Y的每一列的积分。11.6数值积分的Matlab实现11.6数值积分的Matlab实现T = trapz(X,Y) %用梯形法计算Y在X点上的积分。若X为一列向量,Y为矩阵,且size(Y,1) = length(X),则对Y的每一列积分。11.6数值积分的Matlab实现11.6数值积分的Matlab实现2 二元函数重积分的数值计算
函数 dblquad
功能 矩形区域上的二重积分的数值计算
格式
q = dblquad(fun,xmin,xmax,ymin,ymax)
%调用函数quad在区域[xmin,xmax, ymin,ymax]上计算二元函数z=f(x,y)的二重积分。11.6数值积分的Matlab实现11.6数值积分的Matlab实现q=dblquad(fun,xmin,xmax,ymin,ymax,tol)
用指定的精度tol代替缺省精度10-6,再进行计算。
q=dblquad(fun,xmin,xmax,ymin,ymax,tol,method) %用指定的算法method代替缺省算法quad。method的取值有@quadl。11.6数值积分的Matlab实现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+00311.6数值积分的Matlab实现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=[],则使用缺省精度和算法。11.7 常微分方程数值解11.7 常微分方程数值解函数 ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb
功能 常微分方程(ODE)组初值问题的数值解
参数说明:
solver为命令ode45、de23,ode113,ode15s,ode23s, ode23t, ode23tb之一。
Odefun 为显式常微分方程y’=f(t,y)。
11.7 常微分方程数值解11.7 常微分方程数值解Tspan 积分区间(即求解区间)的向量tspan=[t0,tf]。要获得问题在其他指定时间点t0,t1,t2,…上的解,则令tspan=[t0,t1,t2,…,tf](要求是单调的)。
Y0 包含初始条件的向量。
Options 用命令odeset设置的可选积分参数。
P1,p2,… 传递给函数odefun的可选参数。11.7 常微分方程数值解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,t2,…,tf](要求是单调的)。11.7 常微分方程数值解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=[]。11.7 常微分方程数值解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可以不等11.7 常微分方程数值解11.7 常微分方程数值解(2)运用数学中的变量替换:yn=y(n-1),yn-1=y(n-2),…,y2=y’,y1=y,把高阶(大于2阶)的方程(组)写成一阶微分方程组: , 11.7 常微分方程数值解11.7 常微分方程数值解(3)根据(1)与(2)的结果,编写能计算导数的M-函数文件odefile。
(4)将文件odefile与初始条件传递给求解器Solver中的一个,运行后就可得到ODE的、在指定时间区间上的解列向量y(其中包含y及不同阶的导数)。
2.求解器Solver与方程组的关系
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
见下表 null11.7 常微分方程数值解11.7 常微分方程数值解3.因为没有一种算法可以有效地解决所有的ODE问题,为此,MATLAB提供了多种求解器Solver,对于不同的ODE问题,采用不同的Solver。
null