?? matlab.txt
字號(hào):
>> limit(x/abs(x), x, 0, ’left’) ans = -1
>> limit(x/abs(x),x, 0, ’right’) ans = 1
2、導(dǎo)數(shù)
格式: diff (f,t,n)
功能: 求函數(shù)f 對(duì)變量 t的n 階導(dǎo)數(shù)。當(dāng)n省略時(shí),默認(rèn) n=1;當(dāng)t省略時(shí),默認(rèn)變量x, 若無x時(shí)則查找字母表上最接近字母x 的字母。
例如:求函數(shù)f=a*x^2+b*x+c對(duì)變量 x的一階導(dǎo)數(shù), 命令及結(jié)果為
>> syms a b c x
>> f=a*x^2+b*x+c;
>> diff(f)
ans=
2*a*x+b
求函數(shù)f 對(duì)變量b的一階導(dǎo)數(shù)(可看作求偏導(dǎo)), 命令及結(jié)果為
>> diff(f,b) ans=x
求函數(shù)f 對(duì)變量x的二階導(dǎo)數(shù), 命令及結(jié)果為
>> diff(f,2) ans=2*a
3、積分
格式: int(f,t,a,b)
功能: 求函數(shù)f 對(duì)變量 t從a 到b的定積分. 當(dāng)a和b省略時(shí)求不定積分;當(dāng)t省略時(shí), 默認(rèn)變量為(字母表上)最接近字母x的變量。
例如:求函數(shù)f=a*x^2+b*x+c對(duì)變量x不定積分, 命令及結(jié)果為
>> 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
求函數(shù)f 對(duì)變量b不定積分, 命令及結(jié)果為
>> int(f,b)
ans=
a*x^2*b+1/2*b^2*x+c*b
求函數(shù)f 對(duì)變量x 從 1到5的定積分, 命令及結(jié)果為
>> int(f,1,5)
ans=
124/3*a+12*b+4*c
4、級(jí)數(shù)求和
格式: symsum (s,t,a,b)
功能:求表達(dá)式s中的符號(hào)變量t從第a項(xiàng)到第b項(xiàng)的級(jí)數(shù)和。
例如: 求級(jí)數(shù)的前三項(xiàng)的和, 命令及結(jié)果為
>> symsum(1/x,1,3) ans=11/6
7.2.3 化簡(jiǎn)和代換
MATLAB符號(hào)運(yùn)算工具箱中,包括了較多的代數(shù)式化簡(jiǎn)和代換功能,下面僅舉出部分常見運(yùn)算。
simplify 利用各種恒等式化簡(jiǎn)代數(shù)式
expand 將乘積展開為和式
factor 把多項(xiàng)式轉(zhuǎn)換為乘積形式
collect 合并同類項(xiàng)
horner 把多項(xiàng)式轉(zhuǎn)換為嵌套表示形式
例如:進(jìn)行合并同類項(xiàng)執(zhí)行
>> syms x
>> collect(3*x^3-0.5*x^3+3*x^2)
ans=
5/2*x^3+3*x^2)
進(jìn)行因式分解執(zhí)行
>> factor(3*x^3-0.5*x^3+3*x^2)
ans=
1/2*x^2*(5*x+6)
7.2.4 解方程
1、代數(shù)方程
格式:solve (f,t)
功能:對(duì)變量t 解方程f=0,t 缺省時(shí)默認(rèn)為x 或最接近字母x 的符號(hào)變量。
例如:求解一元二次方程f=a*x^2+b*x+c的實(shí)根,
>> 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,……為初始條件,缺省時(shí)給出含任意常數(shù)c1,c2,……的通解;x為自變量,缺省時(shí)默認(rèn)為t 。
例如:求微分方程的通解
>> dsolve(‘Dy=1+y^2’)
ans=
tan(t+c1)
7.3 優(yōu)化工具箱及其應(yīng)用
在工程設(shè)計(jì)、經(jīng)濟(jì)管理和科學(xué)研究等諸多領(lǐng)域中,人們常常會(huì)遇到這樣的問題:如何從一切可能的方案中選擇最好、最優(yōu)的方案,在數(shù)學(xué)上把這類問題稱為最優(yōu)化問題。這類問題很多,例如當(dāng)設(shè)計(jì)一個(gè)機(jī)械零件時(shí)如何在保證強(qiáng)度的前提下使重量最輕
或用量最省(當(dāng)然偷工減料除外);如何確定參數(shù),使其承載能力最高;在安排生產(chǎn)時(shí),如何在現(xiàn)有的人力、設(shè)備的條件下,合理安排生產(chǎn),使其產(chǎn)品的總產(chǎn)值最高;在確定庫存時(shí)如何在保證銷售量的前提下,使庫存成本最小;在物資調(diào)配時(shí),如何組織運(yùn)輸使運(yùn)輸費(fèi)用最少。這些都屬于最優(yōu)化問題所研究的對(duì)象。
MATLAB的優(yōu)化工具箱被放在toolbox目錄下的optim子目錄中,其中包括有若干個(gè)常用的求解函數(shù)最優(yōu)化問題的程序。MATLAB的優(yōu)化工具箱也在不斷地完善。不同版本的MATLAB,其工具箱不完全相同。在MATLAB5.3版本中,對(duì)優(yōu)化工具箱作了全面的改進(jìn)。每個(gè)原有的常用程序都重新編制了一個(gè)新的程序。除fzero和fsolve外都重新起了名字。這些新程序使用一套新的控制算法的選項(xiàng)。與原有的程序相比,新程序的功能增強(qiáng)了。在MATLAB5.3和6.0版本中,原有的優(yōu)化程序(除fzero和fsolve外)仍然保留并且可以使用,但是它們遲早會(huì)被撤消的。鑒于上述情況,本書將只介紹那些新的常用的幾個(gè)優(yōu)化程序。
7.3.1 線性規(guī)劃問題
線性規(guī)劃是最優(yōu)化理論發(fā)展最成熟,應(yīng)用最廣泛的一個(gè)分支。在MATLAB的優(yōu)化工具箱中用于求解下述線性規(guī)劃的問題
(線性不等式約束)
(線性等式約束)
(有界約束)
的函數(shù)是linprog ,其主要格式為:
[x, fval, exitflag, output, lambda]= linprog(c, A, b, A1, b1 , LB, UB, x0, options)
其中,linprog為函數(shù)名,中括號(hào)及小括號(hào)中所含的參數(shù)都是輸入或輸出變量,這些參數(shù)的主要用法及說明如下:
(1)c, A和b是不可缺省的輸入宗量;x是不可缺省的輸出宗量,它是問題的解。
(2)當(dāng)x無下界時(shí),在LB處放置[ ]。當(dāng)無上界時(shí),在UB處放置[ ]。 如果x的某個(gè)分量無下界,則置LB(i)=-inf. 如果無上界,則置UB(i)=inf. 如果無線性不等式約束,則在A和b處都放置[ ]。
(3)x0是解的初始近似值。
(4)options是用來控制算法的選項(xiàng)參數(shù)向量。
(5)輸出宗量fval是目標(biāo)函數(shù)在解x處的值。
(6)輸出宗量exitflag的值描述了程序的運(yùn)行情況。如果exitflag的值大于0,則程序收斂于解x;如果exitflag的值等于0,則函數(shù)的計(jì)算達(dá)到了最大次數(shù);如果exitflag的值小于0,則問題無可行解,或程序運(yùn)行失敗。
(7)輸出宗量output輸出程序運(yùn)行的某些信息。
(8)輸出宗量Lambda為在解x處的值 Lagrange乘子。
例:求解線性規(guī)劃問題
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)
運(yùn)行后得到:
x=
4.6667
0.0000
0.6667
z=
-8.6667
7.3.2 非線性約束最優(yōu)化
在MATLAB的優(yōu)化工具箱中有一個(gè)求解下述非線性規(guī)劃的問題
(線性不等式約束)
(線性等式約束)
(非線性不等式約束)
(非線性等式約束)
(有界約束)
的函數(shù)是fmincon ,其主要格式為:
[x, fval, exitflag, output, lambda, grad, hessian]=fmincon(‘fun’, x0, A, b, A1, b1 , LB,
UB, ‘nonlcon’, options, p1, p2,……)
其中,fmincon為函數(shù)名,參數(shù)的主要用法有的與線性規(guī)劃中的相同,下面介紹幾個(gè)非線性規(guī)劃特有的:
(1)‘fun’和x0是不可缺省的輸入宗量。fun是給出目標(biāo)函數(shù)的M文件的名字,x0是極小值點(diǎn)的初始近似值。x是不可缺省的輸出宗量,它是問題的解。
(2)nonlcon 是給出非線性約束函數(shù)和的M文件的文件名。
(3)宗量p1,p2…是向目標(biāo)函數(shù)傳送的參數(shù)的值。
(4)輸出宗量grad為目標(biāo)函數(shù)在解x處的梯度。
(5)輸出宗量hessian為目標(biāo)函數(shù)在解x處的Hessian矩陣。
例:求解非線性規(guī)劃問題
min ,
,
,
,
解:建立目標(biāo)函數(shù)的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’)
運(yùn)行后得到:
x=
-1.2247 1.2247
f=
1.8951
7.3.3 二次規(guī)劃問題
二次規(guī)劃數(shù)學(xué)模型的一般形式為:
其中H為對(duì)稱矩陣,約束條件與線型規(guī)劃相同。在MATLAB的優(yōu)化工具箱中有一個(gè)求解上述規(guī)劃問題的程序:
[x, fval, exitflag, output, lambda]= quadprog(H, c, A, b, A1, b1 , LB, UB, x0, options)
其中,quadprog為函數(shù)名,參數(shù)的主要用法及說明同線性規(guī)劃,這里不再贅述。
例求解如下二次優(yōu)化問題。
解:將目標(biāo)函數(shù)化為標(biāo)準(zhǔn)形式
在命令窗口中鍵入
>> 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)
運(yùn)行后得到:
x=
0.3077
2.5385
7.3.4 foptions 函數(shù)
對(duì)于優(yōu)化的控制,MATLAB共提供了18個(gè)參數(shù),這些參數(shù)對(duì)優(yōu)化的進(jìn)行起者很關(guān)鍵的作用。下面就對(duì)參數(shù)選擇函數(shù)foptions作詳細(xì)介紹。
● foptions優(yōu)化函數(shù)調(diào)用中的參數(shù)選擇。參數(shù)具體意義如下:
options(1) 參數(shù)顯示控制(默認(rèn)值為0)。等于1時(shí)顯示一些結(jié)果。
options(2) 優(yōu)化點(diǎn)x的精度控制(默認(rèn)值為1e –4)。
options(3) 優(yōu)化函數(shù)F的精度控制(默認(rèn)值為1e –4)。
options(4) 違反約束的結(jié)束標(biāo)準(zhǔn)(默認(rèn)值為1e –6)。
options(5) 策略選擇。不常用。
options(6) 優(yōu)化程序方法的選擇。值為0時(shí)為BFGS算法,值為1時(shí)采用DFP算法。
options(7) 線性插值算法選擇。值為0時(shí)為混合插值算法,值為1時(shí)采用立方插值算法。
options(8) 函數(shù)值顯示(目標(biāo)-達(dá)到問題中的Lambda)。
options(9) 若需要檢測(cè)用戶提供的導(dǎo)數(shù)則設(shè)為1。
options(10) 函數(shù)和約束求值的數(shù)目。
options(11) 函數(shù)導(dǎo)數(shù)求值的個(gè)數(shù)
options(12) 約束求值的數(shù)目。
options(13) 等式約束的數(shù)目。
options(14) 函數(shù)求值的最大次數(shù)(默認(rèn)值為100變量個(gè)數(shù))。
options(15) 用于目標(biāo)-達(dá)到問題中的特殊目標(biāo)。
options(16) 優(yōu)化過程中變量的最小梯度值。
options(17) 優(yōu)化過程中變量的最大梯度值。
options(18) 步長(zhǎng)設(shè)置(默認(rèn)值為1或更小)。
本章目錄
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -