⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matlab.txt

📁 Matlab在化学工程中的应用
💻 TXT
📖 第 1 页 / 共 2 页
字号:

>> limit(x/abs(x), x, 0, ’left’) ans = -1

>> limit(x/abs(x),x, 0, ’right’) ans = 1

 

2、导数

格式: diff (f,t,n)

功能: 求函数f 对变量 t的n 阶导数。当n省略时,默认 n=1;当t省略时,默认变量x, 若无x时则查找字母表上最接近字母x 的字母。

例如:求函数f=a*x^2+b*x+c对变量 x的一阶导数, 命令及结果为

>> syms a b c x

>> f=a*x^2+b*x+c;

>> diff(f)

ans=

2*a*x+b

求函数f 对变量b的一阶导数(可看作求偏导), 命令及结果为

>> diff(f,b) ans=x

求函数f 对变量x的二阶导数, 命令及结果为

>> diff(f,2) ans=2*a

3、积分

格式: int(f,t,a,b)

功能: 求函数f 对变量 t从a 到b的定积分. 当a和b省略时求不定积分;当t省略时, 默认变量为(字母表上)最接近字母x的变量。

例如:求函数f=a*x^2+b*x+c对变量x不定积分, 命令及结果为

>> syms a b c x

>> f=a*x^2+b*x+c;

>> int(f)

ans=

1/3*a*x^3+1/2*b*x^2+c*x

求函数f 对变量b不定积分, 命令及结果为

>> int(f,b)

ans=

a*x^2*b+1/2*b^2*x+c*b

求函数f 对变量x 从 1到5的定积分, 命令及结果为

>> int(f,1,5)

ans=

124/3*a+12*b+4*c

4、级数求和

格式: symsum (s,t,a,b)

功能:求表达式s中的符号变量t从第a项到第b项的级数和。

例如: 求级数的前三项的和, 命令及结果为

>> symsum(1/x,1,3) ans=11/6

7.2.3 化简和代换

MATLAB符号运算工具箱中,包括了较多的代数式化简和代换功能,下面仅举出部分常见运算。

simplify 利用各种恒等式化简代数式

expand 将乘积展开为和式

factor 把多项式转换为乘积形式

collect 合并同类项

horner 把多项式转换为嵌套表示形式

例如:进行合并同类项执行

>> syms x

>> collect(3*x^3-0.5*x^3+3*x^2)

ans=

5/2*x^3+3*x^2)

进行因式分解执行

>> factor(3*x^3-0.5*x^3+3*x^2)

ans=

1/2*x^2*(5*x+6)

7.2.4 解方程

1、代数方程

格式:solve (f,t)

功能:对变量t 解方程f=0,t 缺省时默认为x 或最接近字母x 的符号变量。

例如:求解一元二次方程f=a*x^2+b*x+c的实根,

>> syms a b c x

>> f=a*x^2+b*x+c;

>> solve (f,x)

ans=

[1/2/a*(-b+(b^2-4*a*c)^ (1/2))]

[1/2/a*(-b-(b^2-4*a*c)^ (1/2))]

2、微分方程

格式:dsolve(‘s’, ’s1’, ’s2’,…, ’x’)

其中s为方程;s1,s2,……为初始条件,缺省时给出含任意常数c1,c2,……的通解;x为自变量,缺省时默认为t 。

例如:求微分方程的通解

>> dsolve(‘Dy=1+y^2’)

ans=

tan(t+c1)

7.3 优化工具箱及其应用

在工程设计、经济管理和科学研究等诸多领域中,人们常常会遇到这样的问题:如何从一切可能的方案中选择最好、最优的方案,在数学上把这类问题称为最优化问题。这类问题很多,例如当设计一个机械零件时如何在保证强度的前提下使重量最轻

或用量最省(当然偷工减料除外);如何确定参数,使其承载能力最高;在安排生产时,如何在现有的人力、设备的条件下,合理安排生产,使其产品的总产值最高;在确定库存时如何在保证销售量的前提下,使库存成本最小;在物资调配时,如何组织运输使运输费用最少。这些都属于最优化问题所研究的对象。

MATLAB的优化工具箱被放在toolbox目录下的optim子目录中,其中包括有若干个常用的求解函数最优化问题的程序。MATLAB的优化工具箱也在不断地完善。不同版本的MATLAB,其工具箱不完全相同。在MATLAB5.3版本中,对优化工具箱作了全面的改进。每个原有的常用程序都重新编制了一个新的程序。除fzero和fsolve外都重新起了名字。这些新程序使用一套新的控制算法的选项。与原有的程序相比,新程序的功能增强了。在MATLAB5.3和6.0版本中,原有的优化程序(除fzero和fsolve外)仍然保留并且可以使用,但是它们迟早会被撤消的。鉴于上述情况,本书将只介绍那些新的常用的几个优化程序。

7.3.1 线性规划问题

线性规划是最优化理论发展最成熟,应用最广泛的一个分支。在MATLAB的优化工具箱中用于求解下述线性规划的问题



 (线性不等式约束)

 (线性等式约束)

 (有界约束)

的函数是linprog ,其主要格式为:

[x, fval, exitflag, output, lambda]= linprog(c, A, b, A1, b1 , LB, UB, x0, options)

其中,linprog为函数名,中括号及小括号中所含的参数都是输入或输出变量,这些参数的主要用法及说明如下:

(1)c, A和b是不可缺省的输入宗量;x是不可缺省的输出宗量,它是问题的解。

(2)当x无下界时,在LB处放置[ ]。当无上界时,在UB处放置[ ]。 如果x的某个分量无下界,则置LB(i)=-inf. 如果无上界,则置UB(i)=inf. 如果无线性不等式约束,则在A和b处都放置[ ]。

(3)x0是解的初始近似值。

(4)options是用来控制算法的选项参数向量。

(5)输出宗量fval是目标函数在解x处的值。

(6)输出宗量exitflag的值描述了程序的运行情况。如果exitflag的值大于0,则程序收敛于解x;如果exitflag的值等于0,则函数的计算达到了最大次数;如果exitflag的值小于0,则问题无可行解,或程序运行失败。

(7)输出宗量output输出程序运行的某些信息。

(8)输出宗量Lambda为在解x处的值 Lagrange乘子。

例:求解线性规划问题

min ,

 ,

,

,

, , .

解:在命令窗口中键入

>> c=[-2,-1,1]; a=[1,4,-1; 2,-2,1]; b=[4; 12]; a1=[1,1,2]; b1=6;

>> lb=[0; 0; -inf]; ub=[inf; inf; 5];

>> [x, z]=linprog(c,a,b,a1,b1,1b,ub)

运行后得到:

x=

4.6667

0.0000

0.6667

z=

-8.6667

7.3.2 非线性约束最优化

在MATLAB的优化工具箱中有一个求解下述非线性规划的问题



 (线性不等式约束)

 (线性等式约束)

 (非线性不等式约束)

 (非线性等式约束)

 (有界约束)

的函数是fmincon ,其主要格式为:

[x, fval, exitflag, output, lambda, grad, hessian]=fmincon(‘fun’, x0, A, b, A1, b1 , LB,

UB, ‘nonlcon’, options, p1, p2,……)

其中,fmincon为函数名,参数的主要用法有的与线性规划中的相同,下面介绍几个非线性规划特有的:

(1)‘fun’和x0是不可缺省的输入宗量。fun是给出目标函数的M文件的名字,x0是极小值点的初始近似值。x是不可缺省的输出宗量,它是问题的解。

(2)nonlcon 是给出非线性约束函数和的M文件的文件名。

(3)宗量p1,p2…是向目标函数传送的参数的值。

(4)输出宗量grad为目标函数在解x处的梯度。

(5)输出宗量hessian为目标函数在解x处的Hessian矩阵。

例:求解非线性规划问题

min ,

 ,

,

,



解:建立目标函数的M文件

function y=nline (x)

y=exp (x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);

建立非线性约束条件的M文件

function [c1, c2]=nyueshu (x)

c1=[1.5+x(1)*x(2)-x(1)-x(2); -x(1)*x(2)-10];

c2=0;

在命令窗口中键入

>> x0=[-1,1]; a=[1, -1]; b=1; a1=[1,1]; b1=0;

>> [x, f]=fmincon (‘nline’, x0, a, b, a1, b1, [ ], [ ], ‘nyueshu’)

运行后得到:

x=

-1.2247 1.2247

f=

1.8951

7.3.3 二次规划问题

二次规划数学模型的一般形式为:









其中H为对称矩阵,约束条件与线型规划相同。在MATLAB的优化工具箱中有一个求解上述规划问题的程序:

[x, fval, exitflag, output, lambda]= quadprog(H, c, A, b, A1, b1 , LB, UB, x0, options)

其中,quadprog为函数名,参数的主要用法及说明同线性规划,这里不再赘述。

例求解如下二次优化问题。







解:将目标函数化为标准形式



在命令窗口中键入

>> H=[2, 0; 0, 2]; c=[-8, -10]; a=[3, 2]; b=6; lb=[0, 0]; x0=[1,1];

>> x=quadprog (H, c, a, b, [ ], [ ], lb, [ ], x0)

运行后得到:

x=

0.3077

2.5385

7.3.4 foptions 函数

对于优化的控制,MATLAB共提供了18个参数,这些参数对优化的进行起者很关键的作用。下面就对参数选择函数foptions作详细介绍。

● foptions优化函数调用中的参数选择。参数具体意义如下:

options(1) 参数显示控制(默认值为0)。等于1时显示一些结果。

options(2) 优化点x的精度控制(默认值为1e –4)。

options(3) 优化函数F的精度控制(默认值为1e –4)。

options(4) 违反约束的结束标准(默认值为1e –6)。

options(5) 策略选择。不常用。

options(6) 优化程序方法的选择。值为0时为BFGS算法,值为1时采用DFP算法。

options(7) 线性插值算法选择。值为0时为混合插值算法,值为1时采用立方插值算法。

options(8) 函数值显示(目标-达到问题中的Lambda)。

options(9) 若需要检测用户提供的导数则设为1。

options(10) 函数和约束求值的数目。

options(11) 函数导数求值的个数

options(12) 约束求值的数目。

options(13) 等式约束的数目。

options(14) 函数求值的最大次数(默认值为100变量个数)。

options(15) 用于目标-达到问题中的特殊目标。

options(16) 优化过程中变量的最小梯度值。

options(17) 优化过程中变量的最大梯度值。

options(18) 步长设置(默认值为1或更小)。

本章目录

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -