第五章2 Matlab在高等数学中的应用
主要内容5.1. 函数与极限计算 5.2. 代数方程的计算 5.3. 微商的计算
5.4. 极值的计算 5.5. 积分的计算 5.6. 曲线积分和曲面积分 5.7. 微分方程(组)的求解 5.8. 无穷级数
5.1. 函数与极限计算5.1.1函数计算如同使用高级计算器一样,给定自变量的数据即可获得对应的函数值,如 y=sin(x),并且可以同时计算任意多点的函数值。
5.1.2一元函数极限问题的解析解极限问题的一般描述为:
A lim f ( x)x x0
A lim f ( x)x x0
A lim f ( x)x x0
MATLAB符号运算工具箱中可以使用limit()函数进行计算,调用格式有:
limit(f,x,a)limit(f,a) 符号函数f的变量为函数findsym(f)确定的默认自变量。 limit(f)符号函数f的变量为函数findsym(f)确定的默认自变量,系统默认变量趋于0
limit(f,x,a,’right’)limit(f,x,a,’left’)
例如:
5.1.3 多元函数的极限多元极限问题的一般描述为:
A lim f ( x)x x0 y y0
可以嵌套使用limit函数,调用形式如下: limit(limit(f,x,x0),y,y0),如果x0,y0不是确定的值,则极限求取顺序不能交换。 limit(limit(f,y,y0),x,x0)
例如:
5.2. 代数方程的计算MATLAB提供了求代数方程及方程组的命令函数,调用格式如下:
roots(p) p是代表多项式的系数,按照降幂方式形成的行向量,适用
于次数不超过20的多项式。 fzero(f,x0) 在x0附近寻找函数f的零点,如果x0是一个区间[a,b]时,则
在[a,b]内寻找一个近似零点。 solve(f)求解表达式f的代数方程,求解变量为默认变量。 solve(f,x)求解变量为x sovle(f1,f2,...,fn,x1,x2,...,xn)求解f1,f2,...,fn表示的代数方程组。
例如:
5.3. 微商的计算5.3.1符号导数diff函数用于对符号表达式求导数,该函数的调用形式为: diff(f) 没有指定变量和导数阶数,系统按照findsym函数指示的默认变量求
一阶导数
diff(f,x) 对x求一阶导数diff(f,n) 按findsym函数指示的默认变量求n阶导数,n必须为正整数。 diff(f,x,n) 以x为自变量,对符号表达式f求n阶倒数
注:对于隐函数微商的计算,可以根据二元隐函数骗导计算公式进行:
f dy y x f dx y
例如:
5.3.2 偏导数diff函数同样可以用于求偏导数,调用格式同一元函数相同,二阶偏导数的调用格式为: diff(diff(z,x), y) 表示z先对x求偏导,在对y求偏导。
5.4. 极值计算之 MATLAB的优化工具箱1、Matlab优化工具箱可以解决的问题 (1)求解无约束条件非线性极小值; (2)求解约束条件下非线性极小值,包括目标逼近问题、极大-极小值问
题以及半无限极小值问题;(3)求解二次规划和线性规划问题; (4)非
线性最小二乘逼近和曲线拟合;
(5)非线性系统的方程求解;(6)约束条件下的线性最小二乘优化; (7)求解复杂结构的大规模优化问题。
2、优化工具箱4.0的结构优化工具箱4.0
连续优化无约束优化 非线性极小 fminunc 非线性方程 fzero fsolve 非光滑优化 fminsearch
离散优化约束优化 线性规划 linprog 非线性规划 fmincon fminimax fgoalattain fseminf 二次规划 quadprog
0-1规划(bintprog)
非线性最小二乘 lsqnonlin lsqcurvefit
其他规划ga gamultiobj simulannealbnd patternsearch threshacceptbnd 上下界 约束 fminbnd fmincon lsqnonlin lsqcurvefit
约束线性 最小二乘 lsqnonneg lsqlin
3、优化工具箱中常用的函数及其功能类型 模型Min F ( x) s.t. x1 x x 2Min F ( x)
基本函数
一元函数极小值无约束极小值 线性规划 0-1整数规划
x=fminbnd(‘F’,x1,x2)x=fminunc(‘F’,x0) x=fminsearch(‘F’,x0) x=linprog(c,A,b)min F ( x ) AX b s.t. Aeq X beq X 0或1 i
Min cT x s.t. AX b
x=bintprog(F)
二次规划 约束极小值 非线性最小二乘 目标达到问题 极小极大问题
1 Min xT Hx cT x 2 s.t. Ax b
x=quadprog(H,c,A,b)Min F ( x) s.t. G ( x) 0n
x=fmincon(‘FG’,X0) x=lsqnonlin(F,X0) x=fgoalattain(‘F’,x,goal,w) x=fminimax(‘FG’,x0)
min F 2 ( X ) Fi 2 ( X )i 1
Min rMin max{Fi ( x)}x { Fi ( x )}
s.t. F ( x) wr goal
s.t. G ( x) 0
4、函数输入参数变量 f 描述 线性规划目标函数f*X或二次规划的目 标函数X’*H*X+F*X中线性项的系数向量 非线性优化的目标函数. fun必须为行命 令对象或M文件、嵌入函数、或MEX文 件的名称 二次规划目标函数X’*H*X+f*X中的二次 项的系数矩阵 调用函数 linprog,quadprog fminbnd,fminsearch,fminunc, fmincon,lsqcurvefit,lsqnonlin, fgoalattain,fminimax quadprog
funH A,b Aeq,beq vlb,vub X0 x1,x2 options
A矩阵和b向量分别为线性不等式约束: linprog,quadprog,fgoalattain, fmincon,fminimax AX≤b中的系数矩阵和右端向量 Aeq矩阵和beq向量分别为线性等式约 束Aeq*X=beq中的系数矩阵和右端向量 X的下限和上限向量 迭代初始点坐标 函数最小化的区间 优化选项参数结构 linprog,quadprog,fgoalattain, fmincon,fminimax linprog,quadprog,fgoalattain, fmincon,fminimax,lsqcurvefit, lsqnonlin 除fminbnd外所有函数 fminbnd 所有优化函数
5、函数输出参数变量 描述 描述退出条件: exitflag>0表示目标函数收敛于x exitflag=0表示已达到函数评价或迭代的最大次数 exitflag<0表示目标函数不收敛 调用函数
exitflag
x feval
由优化函数求的x值 解x处的目标函数值包含优化结果信息的输出结构 iterations,Algorithm,FuncCount(函数评价次数)
所有优化函数linprog,quadprog,fgoalattain fmincon,fminimax,lsqcurvefit lsqnonlin,fminbnd 所有优化函数
output
注意:多数优化函数要求目标函数最小化,如果要求最大化,可以通过使该目标函数的负值最小化实现;约束非负时,通过对不等式取负可以使大于零的约束变为小于零 的不等式约束;避免使用全局变量。
6、GUI优化工具及使用步骤通过在命令行输入optimtool或者打开start/Toolboxes/Optimization/Optimization tool。
第七步
第一步
第二步
第三步
第四步第五步
第六步
例一:用单纯形法求解下面的线性规划min f 4 x1 x2 x1 2 x2 4 2 x 3 x 12 1 2 s.t. x1 x2 3 x1 , x2 0
例二:非线性优化f ( x ) x1 x2 x3 x1 2 x2 2 x3 0 s.t. x1 2 x2 2 x3 72