71用MATLAB求解線性規(guī)劃課件_第1頁
71用MATLAB求解線性規(guī)劃課件_第2頁
71用MATLAB求解線性規(guī)劃課件_第3頁
71用MATLAB求解線性規(guī)劃課件_第4頁
71用MATLAB求解線性規(guī)劃課件_第5頁
已閱讀5頁,還剩155頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

線性規(guī)劃LinearProgramming線性規(guī)劃LinearProgrammi第七章數(shù)學(xué)實驗第七章數(shù)學(xué)實驗一用Mathematica求解線性規(guī)劃一用Mathematica求解線性規(guī)劃例7.1

用Mathematica求解例7.1用Mathematica求解輸入:運行得出結(jié)果:輸入:運行得出結(jié)果:例7.2

用Mathematica求解例7.2用Mathematica求解輸入:運行得出結(jié)果:輸入:運行得出結(jié)果:二用MATLAB求解線性規(guī)劃二用MATLAB求解線性規(guī)劃MATLAB-----MatrixLaborotory(矩陣實驗室)

MATLAB簡介MATLAB自1984年由美國MathWorks公司研發(fā),現(xiàn)已成為國際公認的最優(yōu)秀的工程應(yīng)用開發(fā)環(huán)境。它功能強大、簡單易學(xué)、編程效率高。在歐美,MATLAB已成為線性代數(shù)、自動控制理論、數(shù)字信號處理、時間序列分析、動態(tài)系統(tǒng)仿真、圖像處理等課程的基本教學(xué)工具,成為本碩博必須掌握的基本技能。MATLAB-----MatrixLaborotory(MATLAB它作為一種編程語言和可視化工具,可解決工程、科學(xué)計算和數(shù)學(xué)學(xué)科中許多問題。

MATLAB建立在向量、數(shù)組和矩陣的基礎(chǔ)上,使用方便,人機界面直觀,輸出結(jié)果可視化。矩陣是MATLAB的核心。

MATLAB簡介MATLAB它作為一種編程語言和可視化工具,可解決工程、數(shù)值計算和符號計算功能數(shù)值計算功能包括:矩陣運算、多項式和有理分式運算、數(shù)據(jù)統(tǒng)計分析、數(shù)值積分、優(yōu)化處理等。符號計算將得到問題的解析解。圖形功能可繪制二維、三維乃至四維圖形,并可進行圖形和坐標的標識、視角和光照設(shè)計、色彩精細控制等。

MATLAB功能數(shù)值計算和符號計算功能MATLAB語言(1)命令行的交互式操作:用戶在Matlab的命令窗口鍵入一個命令,及時返回結(jié)果;(2)程序方式:可以由Matlab定義的語言在編輯器中編寫程序,運行后返回結(jié)果.Matlab其語法與C語言極為類似,但編程效率比C高且語言簡單可讀性強、調(diào)試容易、調(diào)用方便。包括有:

a.M文件b.函數(shù)c.繪圖

MATLAB功能MATLAB語言MA應(yīng)用工具箱基本部分中有數(shù)百個內(nèi)部函數(shù)。其工具箱分為兩大類:1)功能性工具箱2)學(xué)科性工具箱功能性工具箱主要用來擴充其符號計算功能、可視建模仿真功能及文字處理功能等。學(xué)科性工具箱專業(yè)性比較強,如控制系統(tǒng)工具箱、信號處理工具箱、神經(jīng)網(wǎng)絡(luò)工具箱、最優(yōu)化工具箱、金融工具箱等,

MATLAB功能應(yīng)用工具箱MATLA

主要內(nèi)容三、舉例四、線性規(guī)劃求解二、數(shù)組與矩陣一、變量與函數(shù)主要內(nèi)容三、

Matlab是以矩陣為基本運算單元的,它的大部分運算或命令都是在矩陣運算的意義下執(zhí)行的。而構(gòu)成矩陣的基本單元是數(shù)字。一、變量與函數(shù)258×369 Matlab是以矩陣為基本運算單元的,它的大部分運算或1、變量命名規(guī)則是:(1)變量名必須是不含空格的單個詞;(2)變量名區(qū)分大小寫;(3)變量名最多不超過19個字符;(4)變量名必須以字母打頭,之后可以是任意字母、數(shù)字或下劃線,變量名中不允許使用標點符號.一、變量與函數(shù)1、變量命名規(guī)則是:一、變量與函數(shù)特殊變量表特殊變量表2、數(shù)學(xué)運算符號及標點符號一、變量與函數(shù)2、數(shù)學(xué)運算符號及標點符號一、變量與函數(shù)[注1]MATLAB的每條命令語句后,若為逗號或無標點符號,則顯示命令的結(jié)果;若為分號,則僅僅執(zhí)行賦值操作,不顯示運算結(jié)果。[注2]“%”后面所有文字為注釋。[注3]“...”表示續(xù)行。如果表達式一行寫不下,可加上續(xù)行符并按下回車鍵繼續(xù)寫。例如s=1-1/2+1/3-1/4+1/5-1/6+1/7-…-1/8+1/9-1/10+1/11-1/12;一、變量與函數(shù)[注1]MATLAB的每條命令語句后,若為逗號或無標點符號,3、表達式:用運算符將有關(guān)運算量連接起來的式子。(1)算術(shù)運算符:+(加)、-(減)、*(乘)、/(右除)、\(左除)、^(乘方)對于矩陣來說,左除和右除表示兩種不同的矩陣運算。(2)關(guān)系運算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)(3)邏輯運算符:&(與)、|(或)和~(非)一、變量與函數(shù)3、表達式:用運算符將有關(guān)運算量連接起來的式子。一、變量與函3、數(shù)學(xué)函數(shù)3、數(shù)學(xué)函數(shù)

MATLAB的內(nèi)部函數(shù)是有限的,有時為了研究某一個函數(shù)的各種性態(tài),需要為MATLAB定義新函數(shù),為此必須編寫函數(shù)文件.函數(shù)文件是文件名后綴為M的文件,這類文件的第一行必須是一特殊字符function開始,格式為:

function因變量名=函數(shù)名(自變量名)函數(shù)值的獲得必須通過具體的運算實現(xiàn),并賦給因變量.

4、M文件MATLAB的內(nèi)部函數(shù)是有限的,有時為了研究某Matlab的應(yīng)用程序也以M文件保存。M文件建立方法:1.在Matlab中,點:File->New->M-file2.在編輯窗口中輸入程序內(nèi)容3.點:File->Save,存盤,M文件名必須與函數(shù)名一致。4、M文件Matlab的應(yīng)用程序也以M文件保存。M文件建立方法:4、M例7.3定義函數(shù)f(x1,x2)=100(x2-x12)2+(1-x1)2,計算f(1,2)。functionf=fun(x)f=100*(x(2)-x(1)^2)^2+(1-x(1))^2解:1.建立M文件:fun.mMATLAB(fun)2.可以直接使用函數(shù)fun.m計算f(1,2),只需在Matlab命令窗口鍵入命令:x=[12]fun(x)

返回例7.3定義函數(shù)f(x1,x2)=100(x2-x1先建立M文件fun2.m定義函數(shù)f(x),再在Matlab命令窗口輸入fun2(2),fun2(0.5),fun2(-1)即可。MATLAB(fun2)

返回先建立M文件fun2.m定義函數(shù)f(x),MATLAB(fu4、賦值語句:a、直接賦值語句:

(1)賦值變量=賦值表達式

(2)賦值表達式第二種語句形式下,將表達式的值賦給永久變量ans。b、函數(shù)調(diào)用語句:[返回變量列表]=函數(shù)名(輸入變量列表)4、賦值語句:1、創(chuàng)建簡單的數(shù)組二、數(shù)組與矩陣x=[abcdef]

創(chuàng)建包含指定元素的行向量x=first:last

創(chuàng)建從first開始,加1計數(shù),到last結(jié)束的行向量x=first:increment:last

創(chuàng)建從first開始,加increment計數(shù),last結(jié)束的行向量x=linspace(first,last,n)

創(chuàng)建從first開始,到last結(jié)束,有n個元素的行向量x=[abcdef]

創(chuàng)建包含指定元素的行向量x=first:last

創(chuàng)建從first開始,加1計數(shù),到last結(jié)束的行向量x=first:increment:last

創(chuàng)建從first開始,加increment計數(shù),last結(jié)束的行向量x=[abcdef]

創(chuàng)建包含指定元素的行向量x=first:last

創(chuàng)建從first開始,加1計數(shù),到last結(jié)束的行向量x=linspace(first,last,n)

創(chuàng)建從first開始,到last結(jié)束,有n個元素的行向量x=first:increment:last

創(chuàng)建從first開始,加increment計數(shù),last結(jié)束的行向量x=[abcdef]

創(chuàng)建包含指定元素的行向量x=first:last

創(chuàng)建從first開始,加1計數(shù),到last結(jié)束的行向量1、創(chuàng)建簡單的數(shù)組二、數(shù)組與矩陣x=[abcd

2、數(shù)組元素的訪問(3)直接使用元素編址序號:x([abcd])表示提取數(shù)組x的第a、b、c、d個元素構(gòu)成一個新的數(shù)組[x(a)x(b)x(c)x(d)].(2)訪問一塊元素:x(a:b:c)表示訪問數(shù)組x的從第a個元素開始,以步長為b到第c個元素(但不超過c),b可以為負數(shù),b缺省時為1.(1)訪問一個元素:x(i)表示訪問數(shù)組x的第i個元素.

2、數(shù)組元素的訪問(3)直接使用元素編址序號:x([a列向量的數(shù)組操作和運算與行向量是一樣的,唯一的區(qū)別是結(jié)果以列形式顯示.

產(chǎn)生列向量有兩種方法:直接產(chǎn)生例c=[1;2;3;4]轉(zhuǎn)置產(chǎn)生例b=[1234];c=b’說明:以空格或逗號分隔的元素指定的是不同列的元素,而以分號分隔的元素指定了不同行的元素.3、數(shù)組的方向列向量的數(shù)組操作和運算與行向量是一樣的,唯一的區(qū)別是結(jié)果以列4、數(shù)組的運算(1)標量-數(shù)組:設(shè):a=[a1,a2,…,an],c=標量則:a+c=[a1+c,a2+c,…,an+c]a.*c=[a1*c,a2*c,…,an*c]a./c=[a1/c,a2/c,…,an/c](右除)a.\c=[c/a1,c/a2,…,c/an](左除)a.^c=[a1^c,a2^c,…,an^c]c.^a=[c^a1,c^a2,…,c^an]4、數(shù)組的運算(1)標量-數(shù)組:設(shè):a=[a1,a2,…,a設(shè):a=[a1,a2,…,an],b=[b1,b2,…,bn]則:a+b=[a1+b1,a2+b2,…,an+bn]a.*b=[a1*b1,a2*b2,…,an*bn]a./b=[a1/b1,a2/b2,…,an/bn]a.\b=[b1/a1,b2/a2,…,bn/an]a.^b=[a1^b1,a2^b2,…,an^bn](2)數(shù)組-數(shù)組運算設(shè):a=[a1,a2,…,an],b=[b1,b2,…,b1、矩陣的建立(1)將矩陣的元素用方括號括起來,按矩陣行的順序輸入各元素,同一行的各元素之間用空格或逗號分隔,不同行的元素之間用分號分隔。在輸入矩陣時,按Enter鍵也表示開始一新行.例:鍵入命令:A=[123;456;789]A=[1,2,3;4,5,6;7,8,9]輸出結(jié)果:A=1234567891、矩陣的建立(1)將矩陣的元素用方括號括起來,按矩陣行的順(2)利用M文件建立矩陣:第一步:使用編輯程序輸入文件內(nèi)容。第二步:保存并設(shè)文件名為xxx.m。第三步:在MATLAB命令窗口中輸入xxx,就會自動建立一個名為AM的矩陣,可供調(diào)用。(2)利用M文件建立矩陣:特殊矩陣的建立:MATLAB(matrix1)d=eye(m,n)產(chǎn)生一個m行、n列的單位矩陣c=ones(m,n)產(chǎn)生一個m行、n列的元素全為1的矩陣b=zeros(m,n)產(chǎn)生一個m行、n列的零矩陣a=[]產(chǎn)生一個空矩陣,當(dāng)對一項操作無結(jié)果時,返回空矩陣,空矩陣的大小為零.特殊矩陣的建立:MATLAB(matrix1)d=eye(m2、矩陣中元素的操作(1)矩陣A的第r行:A(r,:)(2)矩陣A的第r列:A(:,r)(3)取矩陣A的第i1~i2行、第j1~j2列構(gòu)成新矩陣:A(i1:i2,j1:j2)(4)以逆序提取矩陣A的第i1~i2行,構(gòu)成新矩陣:A(i2:-1:i1,:)(5)刪除A的第i1~i2行,構(gòu)成新矩陣:A(i1:i2,:)=[](6)刪除A的第j1~j2列,構(gòu)成新矩陣:A(:,j1:j2)=[](7)將矩陣A和B拼接成新矩陣:[AB];[A;B]2、矩陣中元素的操作(1)矩陣A的第r行:A(r,:)(2)3.矩陣的基本運算(1)矩陣轉(zhuǎn)置B'(2)矩陣加和減B+C(3)矩陣乘法B*C(4)矩陣乘法方陣的逆inv(A)(5)矩陣除法A\b=inv(A)*b(6)矩陣的乘方A^2(7)方陣的行列式:det(A)(8)方陣的特征值與特征向量:[V,D]=eig[A]3.矩陣的基本運算輸入命令:C=B'C=159261037114812

輸入命令:D=B*CD=307011070174278110278446(1)矩陣轉(zhuǎn)置運算:(2)矩陣乘法:要求B的列數(shù)等于C的行數(shù)輸入命令:C=B'輸入命令:D=B*C(1)矩(3)矩陣點乘、加減法

當(dāng)兩矩陣維數(shù)相同時,運算符.*的結(jié)果是兩矩陣的對應(yīng)元素乘,加減法相同。E=[12;34];F=[23;45];G=E.*FG=261220點運算是兩個維數(shù)相同矩陣對應(yīng)元素之間的運算,在有的教材中也定義為數(shù)組運算。(3)矩陣點乘、加減法點運算是兩個維數(shù)(5)矩陣的除法解方程組:ax=b,其中a是(n*m)的矩陣 x=a\b或x=b’/a注:a\b運算等效于求a*x=b的解;而a/b等效于求x*b=a的解。(5)矩陣的除法E=[12;34];(6)矩陣的乘方

矩陣為方陣時,可以進行矩陣的乘方運算,運算符為^,與矩陣分解有關(guān)E^3ans=375481118若僅是元素進行乘方運算,可用運算符.^E.^3ans=182764E=[12;34];(6)矩陣的乘方(7)矩陣的逆:利用函數(shù)inv計算,此時要求矩陣為方陣且可逆。X=inv(E)X=-2.00001.00001.5000-0.5000(8)矩陣元素的賦值與運算Matlab允許用戶對矩陣的單個元素進行賦值和操作,Matlab此時命令方式為X(i,j)=變量名(7)矩陣的逆:例7.5求解線性方程組AX=B

11.5297303.60.5-44-4其中A=710-32233,B=20378.5216538090-2016

例7.5求解線性方程組AX=B在MATLAB命令窗口輸入命令:a=[11.5,2,9,7;0,3.6,0.5,-4,4;7,10,-3,22,33;3,7,8.5,21,6;3,8,0,90,-20];b=[3;-4;20;5;16];x=a\b得到的結(jié)果是:

x=3.5653-0.9255-0.26950.14350.0101在MATLAB命令窗口輸入命令:在MATLAB命令窗口輸入:p=[1,7,0,9,-20];%建立多項式系數(shù)向量x=roots(p)%求根得到的結(jié)果是:

x=-7.2254-0.4286+1.5405i-0.4286-1.5405i1.0826例7.6

求方程x^4+7x^3+9x-20=0的全部根在MATLAB命令窗口輸入:得到的結(jié)果是:例7.6求方三、繪圖功能1、二維圖形(1)

plot函數(shù)函數(shù)格式:plot(x,y)其中x和y為坐標向量函數(shù)功能:以向量x、y為軸,繪制曲線。例7.7在0≤x≤2內(nèi),繪制正弦曲線y=sinx,其程序為:x=0:pi/100:2*pi;y=sin(x);plot(x,y)三、繪圖功能1、二維圖形(1)plot函數(shù)例7.7在71用MATLAB求解線性規(guī)劃課件x=0:pi/100:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,x,y2)例7.8

在0≤x≤2內(nèi),同時繪制正、余弦曲線y1=sinx和y2=cosx,其程序為:(1)

plot函數(shù)函數(shù)格式:plot(x,y1,x,y2,x,y3,…)

函數(shù)功能:是以公共向量x為X軸,分別以y1,y2,y3,…為Y軸,在同一幅圖內(nèi)繪制出多條曲線。x=0:pi/100:2*pi;例7.8在71用MATLAB求解線性規(guī)劃課件x=0:pi/100:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,'go',x,y2,'b-.')其中參數(shù)'go'和'b-.'表示圖形的顏色和線型。g表示綠色,o表示圖形線型為圓圈;b表示藍色,-.表示圖形線型為點劃線。(1)

plot函數(shù)格式:plot(x,y1,’cs’,...),其中c表示顏色,

s表示線型。函數(shù)功能:繪制出指定顏色和線型的曲線?!纠?.9】用不同線型和顏色重新繪制例2圖形,其程序為:x=0:pi/100:2*pi;(1)plot函數(shù)【例7.71用MATLAB求解線性規(guī)劃課件二維繪圖函數(shù)小結(jié)plot二維圖形基本函數(shù)fplotf(x)函數(shù)曲線繪制fill填充二維多邊圖形polar極坐標圖bar條形圖loglog雙對數(shù)坐標圖semilogxX軸為對數(shù)的坐標圖semilogyY軸為對數(shù)的坐標圖stairs階梯形圖axis設(shè)置坐標軸clf清除圖形窗口內(nèi)容close關(guān)閉圖形窗口figure創(chuàng)建圖形窗口grid放置坐標網(wǎng)格線gtext用鼠標放置文本hold保持當(dāng)前圖形窗口內(nèi)容subplot創(chuàng)建子圖text放置文本title放置圖形標題xlabel放置X軸坐標標記ylabel放置Y軸坐標標記二維繪圖函數(shù)小結(jié)plot二維圖形基本函數(shù)2.三維圖形(1)plot3函數(shù)它是將二維函數(shù)plot的有關(guān)功能擴展到三維空間,用來繪制三維圖形。函數(shù)格式:plot3(x1,y1,z1,c1,x2,y2,z2,c2,…)

其中x1,y1,z1…表示三維坐標向量,c1,c2…表示線形或顏色。函數(shù)功能:以向量x,y,z為坐標,繪制三維曲線。2.三維圖形(1)plot3函數(shù)t=0:pi/50:10*pi;y=sin(t),z=cos(t);plot3(y,z,t);title('helix'),text(0,0,0,'origin');xlabel('sin(t)'),ylabel('cos(t)'),zlabel('t');grid;例7.8

繪制三維的螺旋曲線y=sint和z=cost,其程序為:t=0:pi/50:10*pi;例7.8繪制三維的螺旋71用MATLAB求解線性規(guī)劃課件用MATLAB求解線性規(guī)劃用MATLAB求解線性規(guī)劃1.模型:命令:x=linprog(c,A,b)命令:x=linprog(c,A,b,Aeq,beq)注:若沒有不等式存在,則令A(yù)=[],b=[].2.模型:1.模型:命令:x=linprog(c,A,b)命令命令:[1]

x=linprog(c,A,b,Aeq,beq,VLB,VUB)注:若沒有等式約束

,則令A(yù)eq=[],beq=[].

4.命令:[x,fval]=linprog(…)返回最優(yōu)解x及x處的目標函數(shù)值fval.3.模型:命令:[1]x=linprog(c,A,b,Aeq,beq

例7.10求解線性規(guī)劃

解:編寫M文件xxgh1.m如下:c=[-0.4-0.28-0.32-0.72-0.64-0.6];

在命令窗口輸入:xxgh1回車即得[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)b=[850;700;100;900];

Aeq=[];beq=[];vlb=[0;0;0;0;0;0];vub=[];A=[0.010.010.010.030.030.03;0.02000.0500;00.02000.050;000.03000.08];解:編寫M文件xxgh1.m如下:在命令窗口輸入:xxgh例7.11求解線性規(guī)劃例7.11求解線性規(guī)劃解:編寫M文件xxgh2.m如下:

c=[634];A=[010];b=[50];Aeq=[111];beq=[120];vlb=[30,0,20];vub=[];

[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)在命令窗口輸入:xxgh2回車即得解:編寫M文件xxgh2.m如下:在命令窗口輸入:xxg問題1:某廠每日8小時的產(chǎn)量不低于1800件.為了進行質(zhì)量控制,計劃聘請兩種不同水平的檢驗員。一級檢驗員的標準為:速度25件/小時,正確率98%,計時工資4元/小時;二級檢驗員的標準為:速度15件/小時,正確率95%,計時工資3元/小時。檢驗員每錯檢一次,工廠要損失2元。為使總檢驗費用最省,該工廠應(yīng)聘一級、二級檢驗員各幾名?問題1:某廠每日8小時的產(chǎn)量不低于1800件.為了進行質(zhì)量控解設(shè)需一級和二級檢驗員的人數(shù)分別為x1、x2人,因檢驗員錯檢而造成的損失為:則應(yīng)付檢驗員的工資為:總檢驗費為:解設(shè)需一級和二級檢驗員的人數(shù)分別為x1、x2人,因檢驗員故目標函數(shù)為:約束條件為:故目標函數(shù)為:約束條件為:化簡為線性規(guī)劃模型:化簡為線性規(guī)劃模型:編寫M文件xxgh3.m如下:c=[40,36];A=[-5,-3];b=[-45];Aeq=[];beq=[];vlb==[0;0];vub=[9;15];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)在命令窗口輸入:xxgh3回車即得編寫M文件xxgh3.m如下:在命令窗口輸入:xxgh3結(jié)果為:x=9.00000.0000fval=360即只需聘用9個一級檢驗員,總檢驗費最小為360.結(jié)果為:即只需聘用9個一級檢驗員,總檢驗費最小為360.問題2(任務(wù)分配問題)某車間有甲、乙兩臺機床,可用于加工三種工件.假定這兩臺車床的可用臺時數(shù)分別為800和900,三種工件的數(shù)量分別為400、600和500,且已知用三種不同車床加工單位數(shù)量不同工件所需的臺時數(shù)和加工費用如下表.問怎樣分配車床的加工任務(wù),才能既滿足加工工件的要求,又使加工費用最低?問題2(任務(wù)分配問題)車床類型單位工件所需加工臺時數(shù)單位工件的加工費用可用臺時數(shù)工件1工件2工件3工件1工件2工件3甲0.41.11.013910800乙0.51.21.311128900工件1、2、3數(shù)量分別為400、600和500車床類型單位工件所需加工臺時數(shù)單位工件的加工費用可用臺時數(shù)解:設(shè)在甲車床上加工工件1、2、3的數(shù)量分別為x1、x2、x3,在乙車床上加工工件1、2、3的數(shù)量分別為x4、x5、x6,可建立以下模型:解:設(shè)在甲車床上加工工件1、2、3的數(shù)量分別為x1、x2、x71用MATLAB求解線性規(guī)劃課件編寫M文件xxgh4.m如下:f=[1391011128];A=[0.41.11000;0000.51.21.3];b=[800;900];Aeq=[100100;010010;001001];beq=[400600500];vlb=zeros(6,1);vub=[];[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)在命令窗口輸入:xxgh4回車即得編寫M文件xxgh4.m如下:[x,fval]=linp結(jié)果:x=0.0000600.00000.0000400.00000.0000500.0000fval=1.3800e+004即在甲機床上加工600個工件2,在乙機床上加工400個工件1、500個工件3,可在滿足條件的情況下使總加工費最小為13800結(jié)果:即在甲機床上加工600個工件2,在乙機床上加工400個作業(yè)一大潤發(fā)超市是個建在大學(xué)城邊上的大型百貨商場,每周對收銀人員的需求,統(tǒng)計如下表星期1234567人數(shù)6587101815為了保證收銀人員充分休息,收銀人員每周工作5天,休息2天。問應(yīng)如何安排收銀人員的工作時間,使得所配收銀人員最少?作業(yè)一大潤發(fā)超市是個建在大學(xué)城邊上的大型百貨商場,每作業(yè)二

某廠生產(chǎn)甲、乙兩種口味的飲料,每百箱甲飲料需原料6千克,工人10名,可獲利10萬元;每百箱乙飲料需原料5千克,工人20名,可獲利9萬元。工廠共有原料60千克,工人150名,又由于其他條件所限甲飲料產(chǎn)量不超過800箱。問1)如何安排生產(chǎn)計劃使獲利最大。進一步討論:2)若投資0.8萬元可增加原料1千克,問應(yīng)否作這項投資。3)若每百箱甲飲料獲利可增加1萬元,問應(yīng)否改變生產(chǎn)計劃。作業(yè)二某廠生產(chǎn)甲、乙兩種口味的飲料,每百箱甲飲料需原料6千小結(jié) 學(xué)習(xí)要點:

1.

掌握用Mathematic求解線性規(guī)劃;2.掌握用MATLAB求解線性規(guī)劃;小結(jié) 學(xué)習(xí)要點:為了讓員工們休息更愉快、方便,可將每位員工的休息時間安排在連續(xù)的兩天;則可設(shè)xi(i=1,2,3,…,7)表示星期一至日開始休息的人數(shù),依題意我們可建立如下數(shù)學(xué)模型:

為了讓員工們休息更愉快、方便,可將每位員工的休息時間安排在連71用MATLAB求解線性規(guī)劃課件

作業(yè):

作業(yè):Theend!Theend!線性規(guī)劃LinearProgramming線性規(guī)劃LinearProgrammi第七章數(shù)學(xué)實驗第七章數(shù)學(xué)實驗一用Mathematica求解線性規(guī)劃一用Mathematica求解線性規(guī)劃例7.1

用Mathematica求解例7.1用Mathematica求解輸入:運行得出結(jié)果:輸入:運行得出結(jié)果:例7.2

用Mathematica求解例7.2用Mathematica求解輸入:運行得出結(jié)果:輸入:運行得出結(jié)果:二用MATLAB求解線性規(guī)劃二用MATLAB求解線性規(guī)劃MATLAB-----MatrixLaborotory(矩陣實驗室)

MATLAB簡介MATLAB自1984年由美國MathWorks公司研發(fā),現(xiàn)已成為國際公認的最優(yōu)秀的工程應(yīng)用開發(fā)環(huán)境。它功能強大、簡單易學(xué)、編程效率高。在歐美,MATLAB已成為線性代數(shù)、自動控制理論、數(shù)字信號處理、時間序列分析、動態(tài)系統(tǒng)仿真、圖像處理等課程的基本教學(xué)工具,成為本碩博必須掌握的基本技能。MATLAB-----MatrixLaborotory(MATLAB它作為一種編程語言和可視化工具,可解決工程、科學(xué)計算和數(shù)學(xué)學(xué)科中許多問題。

MATLAB建立在向量、數(shù)組和矩陣的基礎(chǔ)上,使用方便,人機界面直觀,輸出結(jié)果可視化。矩陣是MATLAB的核心。

MATLAB簡介MATLAB它作為一種編程語言和可視化工具,可解決工程、數(shù)值計算和符號計算功能數(shù)值計算功能包括:矩陣運算、多項式和有理分式運算、數(shù)據(jù)統(tǒng)計分析、數(shù)值積分、優(yōu)化處理等。符號計算將得到問題的解析解。圖形功能可繪制二維、三維乃至四維圖形,并可進行圖形和坐標的標識、視角和光照設(shè)計、色彩精細控制等。

MATLAB功能數(shù)值計算和符號計算功能MATLAB語言(1)命令行的交互式操作:用戶在Matlab的命令窗口鍵入一個命令,及時返回結(jié)果;(2)程序方式:可以由Matlab定義的語言在編輯器中編寫程序,運行后返回結(jié)果.Matlab其語法與C語言極為類似,但編程效率比C高且語言簡單可讀性強、調(diào)試容易、調(diào)用方便。包括有:

a.M文件b.函數(shù)c.繪圖

MATLAB功能MATLAB語言MA應(yīng)用工具箱基本部分中有數(shù)百個內(nèi)部函數(shù)。其工具箱分為兩大類:1)功能性工具箱2)學(xué)科性工具箱功能性工具箱主要用來擴充其符號計算功能、可視建模仿真功能及文字處理功能等。學(xué)科性工具箱專業(yè)性比較強,如控制系統(tǒng)工具箱、信號處理工具箱、神經(jīng)網(wǎng)絡(luò)工具箱、最優(yōu)化工具箱、金融工具箱等,

MATLAB功能應(yīng)用工具箱MATLA

主要內(nèi)容三、舉例四、線性規(guī)劃求解二、數(shù)組與矩陣一、變量與函數(shù)主要內(nèi)容三、

Matlab是以矩陣為基本運算單元的,它的大部分運算或命令都是在矩陣運算的意義下執(zhí)行的。而構(gòu)成矩陣的基本單元是數(shù)字。一、變量與函數(shù)258×369 Matlab是以矩陣為基本運算單元的,它的大部分運算或1、變量命名規(guī)則是:(1)變量名必須是不含空格的單個詞;(2)變量名區(qū)分大小寫;(3)變量名最多不超過19個字符;(4)變量名必須以字母打頭,之后可以是任意字母、數(shù)字或下劃線,變量名中不允許使用標點符號.一、變量與函數(shù)1、變量命名規(guī)則是:一、變量與函數(shù)特殊變量表特殊變量表2、數(shù)學(xué)運算符號及標點符號一、變量與函數(shù)2、數(shù)學(xué)運算符號及標點符號一、變量與函數(shù)[注1]MATLAB的每條命令語句后,若為逗號或無標點符號,則顯示命令的結(jié)果;若為分號,則僅僅執(zhí)行賦值操作,不顯示運算結(jié)果。[注2]“%”后面所有文字為注釋。[注3]“...”表示續(xù)行。如果表達式一行寫不下,可加上續(xù)行符并按下回車鍵繼續(xù)寫。例如s=1-1/2+1/3-1/4+1/5-1/6+1/7-…-1/8+1/9-1/10+1/11-1/12;一、變量與函數(shù)[注1]MATLAB的每條命令語句后,若為逗號或無標點符號,3、表達式:用運算符將有關(guān)運算量連接起來的式子。(1)算術(shù)運算符:+(加)、-(減)、*(乘)、/(右除)、\(左除)、^(乘方)對于矩陣來說,左除和右除表示兩種不同的矩陣運算。(2)關(guān)系運算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)、~=(不等于)(3)邏輯運算符:&(與)、|(或)和~(非)一、變量與函數(shù)3、表達式:用運算符將有關(guān)運算量連接起來的式子。一、變量與函3、數(shù)學(xué)函數(shù)3、數(shù)學(xué)函數(shù)

MATLAB的內(nèi)部函數(shù)是有限的,有時為了研究某一個函數(shù)的各種性態(tài),需要為MATLAB定義新函數(shù),為此必須編寫函數(shù)文件.函數(shù)文件是文件名后綴為M的文件,這類文件的第一行必須是一特殊字符function開始,格式為:

function因變量名=函數(shù)名(自變量名)函數(shù)值的獲得必須通過具體的運算實現(xiàn),并賦給因變量.

4、M文件MATLAB的內(nèi)部函數(shù)是有限的,有時為了研究某Matlab的應(yīng)用程序也以M文件保存。M文件建立方法:1.在Matlab中,點:File->New->M-file2.在編輯窗口中輸入程序內(nèi)容3.點:File->Save,存盤,M文件名必須與函數(shù)名一致。4、M文件Matlab的應(yīng)用程序也以M文件保存。M文件建立方法:4、M例7.3定義函數(shù)f(x1,x2)=100(x2-x12)2+(1-x1)2,計算f(1,2)。functionf=fun(x)f=100*(x(2)-x(1)^2)^2+(1-x(1))^2解:1.建立M文件:fun.mMATLAB(fun)2.可以直接使用函數(shù)fun.m計算f(1,2),只需在Matlab命令窗口鍵入命令:x=[12]fun(x)

返回例7.3定義函數(shù)f(x1,x2)=100(x2-x1先建立M文件fun2.m定義函數(shù)f(x),再在Matlab命令窗口輸入fun2(2),fun2(0.5),fun2(-1)即可。MATLAB(fun2)

返回先建立M文件fun2.m定義函數(shù)f(x),MATLAB(fu4、賦值語句:a、直接賦值語句:

(1)賦值變量=賦值表達式

(2)賦值表達式第二種語句形式下,將表達式的值賦給永久變量ans。b、函數(shù)調(diào)用語句:[返回變量列表]=函數(shù)名(輸入變量列表)4、賦值語句:1、創(chuàng)建簡單的數(shù)組二、數(shù)組與矩陣x=[abcdef]

創(chuàng)建包含指定元素的行向量x=first:last

創(chuàng)建從first開始,加1計數(shù),到last結(jié)束的行向量x=first:increment:last

創(chuàng)建從first開始,加increment計數(shù),last結(jié)束的行向量x=linspace(first,last,n)

創(chuàng)建從first開始,到last結(jié)束,有n個元素的行向量x=[abcdef]

創(chuàng)建包含指定元素的行向量x=first:last

創(chuàng)建從first開始,加1計數(shù),到last結(jié)束的行向量x=first:increment:last

創(chuàng)建從first開始,加increment計數(shù),last結(jié)束的行向量x=[abcdef]

創(chuàng)建包含指定元素的行向量x=first:last

創(chuàng)建從first開始,加1計數(shù),到last結(jié)束的行向量x=linspace(first,last,n)

創(chuàng)建從first開始,到last結(jié)束,有n個元素的行向量x=first:increment:last

創(chuàng)建從first開始,加increment計數(shù),last結(jié)束的行向量x=[abcdef]

創(chuàng)建包含指定元素的行向量x=first:last

創(chuàng)建從first開始,加1計數(shù),到last結(jié)束的行向量1、創(chuàng)建簡單的數(shù)組二、數(shù)組與矩陣x=[abcd

2、數(shù)組元素的訪問(3)直接使用元素編址序號:x([abcd])表示提取數(shù)組x的第a、b、c、d個元素構(gòu)成一個新的數(shù)組[x(a)x(b)x(c)x(d)].(2)訪問一塊元素:x(a:b:c)表示訪問數(shù)組x的從第a個元素開始,以步長為b到第c個元素(但不超過c),b可以為負數(shù),b缺省時為1.(1)訪問一個元素:x(i)表示訪問數(shù)組x的第i個元素.

2、數(shù)組元素的訪問(3)直接使用元素編址序號:x([a列向量的數(shù)組操作和運算與行向量是一樣的,唯一的區(qū)別是結(jié)果以列形式顯示.

產(chǎn)生列向量有兩種方法:直接產(chǎn)生例c=[1;2;3;4]轉(zhuǎn)置產(chǎn)生例b=[1234];c=b’說明:以空格或逗號分隔的元素指定的是不同列的元素,而以分號分隔的元素指定了不同行的元素.3、數(shù)組的方向列向量的數(shù)組操作和運算與行向量是一樣的,唯一的區(qū)別是結(jié)果以列4、數(shù)組的運算(1)標量-數(shù)組:設(shè):a=[a1,a2,…,an],c=標量則:a+c=[a1+c,a2+c,…,an+c]a.*c=[a1*c,a2*c,…,an*c]a./c=[a1/c,a2/c,…,an/c](右除)a.\c=[c/a1,c/a2,…,c/an](左除)a.^c=[a1^c,a2^c,…,an^c]c.^a=[c^a1,c^a2,…,c^an]4、數(shù)組的運算(1)標量-數(shù)組:設(shè):a=[a1,a2,…,a設(shè):a=[a1,a2,…,an],b=[b1,b2,…,bn]則:a+b=[a1+b1,a2+b2,…,an+bn]a.*b=[a1*b1,a2*b2,…,an*bn]a./b=[a1/b1,a2/b2,…,an/bn]a.\b=[b1/a1,b2/a2,…,bn/an]a.^b=[a1^b1,a2^b2,…,an^bn](2)數(shù)組-數(shù)組運算設(shè):a=[a1,a2,…,an],b=[b1,b2,…,b1、矩陣的建立(1)將矩陣的元素用方括號括起來,按矩陣行的順序輸入各元素,同一行的各元素之間用空格或逗號分隔,不同行的元素之間用分號分隔。在輸入矩陣時,按Enter鍵也表示開始一新行.例:鍵入命令:A=[123;456;789]A=[1,2,3;4,5,6;7,8,9]輸出結(jié)果:A=1234567891、矩陣的建立(1)將矩陣的元素用方括號括起來,按矩陣行的順(2)利用M文件建立矩陣:第一步:使用編輯程序輸入文件內(nèi)容。第二步:保存并設(shè)文件名為xxx.m。第三步:在MATLAB命令窗口中輸入xxx,就會自動建立一個名為AM的矩陣,可供調(diào)用。(2)利用M文件建立矩陣:特殊矩陣的建立:MATLAB(matrix1)d=eye(m,n)產(chǎn)生一個m行、n列的單位矩陣c=ones(m,n)產(chǎn)生一個m行、n列的元素全為1的矩陣b=zeros(m,n)產(chǎn)生一個m行、n列的零矩陣a=[]產(chǎn)生一個空矩陣,當(dāng)對一項操作無結(jié)果時,返回空矩陣,空矩陣的大小為零.特殊矩陣的建立:MATLAB(matrix1)d=eye(m2、矩陣中元素的操作(1)矩陣A的第r行:A(r,:)(2)矩陣A的第r列:A(:,r)(3)取矩陣A的第i1~i2行、第j1~j2列構(gòu)成新矩陣:A(i1:i2,j1:j2)(4)以逆序提取矩陣A的第i1~i2行,構(gòu)成新矩陣:A(i2:-1:i1,:)(5)刪除A的第i1~i2行,構(gòu)成新矩陣:A(i1:i2,:)=[](6)刪除A的第j1~j2列,構(gòu)成新矩陣:A(:,j1:j2)=[](7)將矩陣A和B拼接成新矩陣:[AB];[A;B]2、矩陣中元素的操作(1)矩陣A的第r行:A(r,:)(2)3.矩陣的基本運算(1)矩陣轉(zhuǎn)置B'(2)矩陣加和減B+C(3)矩陣乘法B*C(4)矩陣乘法方陣的逆inv(A)(5)矩陣除法A\b=inv(A)*b(6)矩陣的乘方A^2(7)方陣的行列式:det(A)(8)方陣的特征值與特征向量:[V,D]=eig[A]3.矩陣的基本運算輸入命令:C=B'C=159261037114812

輸入命令:D=B*CD=307011070174278110278446(1)矩陣轉(zhuǎn)置運算:(2)矩陣乘法:要求B的列數(shù)等于C的行數(shù)輸入命令:C=B'輸入命令:D=B*C(1)矩(3)矩陣點乘、加減法

當(dāng)兩矩陣維數(shù)相同時,運算符.*的結(jié)果是兩矩陣的對應(yīng)元素乘,加減法相同。E=[12;34];F=[23;45];G=E.*FG=261220點運算是兩個維數(shù)相同矩陣對應(yīng)元素之間的運算,在有的教材中也定義為數(shù)組運算。(3)矩陣點乘、加減法點運算是兩個維數(shù)(5)矩陣的除法解方程組:ax=b,其中a是(n*m)的矩陣 x=a\b或x=b’/a注:a\b運算等效于求a*x=b的解;而a/b等效于求x*b=a的解。(5)矩陣的除法E=[12;34];(6)矩陣的乘方

矩陣為方陣時,可以進行矩陣的乘方運算,運算符為^,與矩陣分解有關(guān)E^3ans=375481118若僅是元素進行乘方運算,可用運算符.^E.^3ans=182764E=[12;34];(6)矩陣的乘方(7)矩陣的逆:利用函數(shù)inv計算,此時要求矩陣為方陣且可逆。X=inv(E)X=-2.00001.00001.5000-0.5000(8)矩陣元素的賦值與運算Matlab允許用戶對矩陣的單個元素進行賦值和操作,Matlab此時命令方式為X(i,j)=變量名(7)矩陣的逆:例7.5求解線性方程組AX=B

11.5297303.60.5-44-4其中A=710-32233,B=20378.5216538090-2016

例7.5求解線性方程組AX=B在MATLAB命令窗口輸入命令:a=[11.5,2,9,7;0,3.6,0.5,-4,4;7,10,-3,22,33;3,7,8.5,21,6;3,8,0,90,-20];b=[3;-4;20;5;16];x=a\b得到的結(jié)果是:

x=3.5653-0.9255-0.26950.14350.0101在MATLAB命令窗口輸入命令:在MATLAB命令窗口輸入:p=[1,7,0,9,-20];%建立多項式系數(shù)向量x=roots(p)%求根得到的結(jié)果是:

x=-7.2254-0.4286+1.5405i-0.4286-1.5405i1.0826例7.6

求方程x^4+7x^3+9x-20=0的全部根在MATLAB命令窗口輸入:得到的結(jié)果是:例7.6求方三、繪圖功能1、二維圖形(1)

plot函數(shù)函數(shù)格式:plot(x,y)其中x和y為坐標向量函數(shù)功能:以向量x、y為軸,繪制曲線。例7.7在0≤x≤2內(nèi),繪制正弦曲線y=sinx,其程序為:x=0:pi/100:2*pi;y=sin(x);plot(x,y)三、繪圖功能1、二維圖形(1)plot函數(shù)例7.7在71用MATLAB求解線性規(guī)劃課件x=0:pi/100:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,x,y2)例7.8

在0≤x≤2內(nèi),同時繪制正、余弦曲線y1=sinx和y2=cosx,其程序為:(1)

plot函數(shù)函數(shù)格式:plot(x,y1,x,y2,x,y3,…)

函數(shù)功能:是以公共向量x為X軸,分別以y1,y2,y3,…為Y軸,在同一幅圖內(nèi)繪制出多條曲線。x=0:pi/100:2*pi;例7.8在71用MATLAB求解線性規(guī)劃課件x=0:pi/100:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,'go',x,y2,'b-.')其中參數(shù)'go'和'b-.'表示圖形的顏色和線型。g表示綠色,o表示圖形線型為圓圈;b表示藍色,-.表示圖形線型為點劃線。(1)

plot函數(shù)格式:plot(x,y1,’cs’,...),其中c表示顏色,

s表示線型。函數(shù)功能:繪制出指定顏色和線型的曲線。【例7.9】用不同線型和顏色重新繪制例2圖形,其程序為:x=0:pi/100:2*pi;(1)plot函數(shù)【例7.71用MATLAB求解線性規(guī)劃課件二維繪圖函數(shù)小結(jié)plot二維圖形基本函數(shù)fplotf(x)函數(shù)曲線繪制fill填充二維多邊圖形polar極坐標圖bar條形圖loglog雙對數(shù)坐標圖semilogxX軸為對數(shù)的坐標圖semilogyY軸為對數(shù)的坐標圖stairs階梯形圖axis設(shè)置坐標軸clf清除圖形窗口內(nèi)容close關(guān)閉圖形窗口figure創(chuàng)建圖形窗口grid放置坐標網(wǎng)格線gtext用鼠標放置文本hold保持當(dāng)前圖形窗口內(nèi)容subplot創(chuàng)建子圖text放置文本title放置圖形標題xlabel放置X軸坐標標記ylabel放置Y軸坐標標記二維繪圖函數(shù)小結(jié)plot二維圖形基本函數(shù)2.三維圖形(1)plot3函數(shù)它是將二維函數(shù)plot的有關(guān)功能擴展到三維空間,用來繪制三維圖形。函數(shù)格式:plot3(x1,y1,z1,c1,x2,y2,z2,c2,…)

其中x1,y1,z1…表示三維坐標向量,c1,c2…表示線形或顏色。函數(shù)功能:以向量x,y,z為坐標,繪制三維曲線。2.三維圖形(1)plot3函數(shù)t=0:pi/50:10*pi;y=sin(t),z=cos(t);plot3(y,z,t);title('helix'),text(0,0,0,'origin');xlabel('sin(t)'),ylabel('cos(t)'),zlabel('t');grid;例7.8

繪制三維的螺旋曲線y=sint和z=cost,其程序為:t=0:pi/50:10*pi;例7.8繪制三維的螺旋71用MATLAB求解線性規(guī)劃課件用MATLAB求解線性規(guī)劃用MATLAB求解線性規(guī)劃1.模型:命令:x=linprog(c,A,b)命令:x=linprog(c,A,b,Aeq,beq)注:若沒有不等式存在,則令A(yù)=[],b=[].2.模型:1.模型:命令:x=linprog(c,A,b)命令命令:[1]

x=linprog(c,A,b,Aeq,beq,VLB,VUB)注:若沒有等式約束

,則令A(yù)eq=[],beq=[].

4.命令:[x,fval]=linprog(…)返回最優(yōu)解x及x處的目標函數(shù)值fval.3.模型:命令:[1]x=linprog(c,A,b,Aeq,beq

例7.10求解線性規(guī)劃

解:編寫M文件xxgh1.m如下:c=[-0.4-0.28-0.32-0.72-0.64-0.6];

在命令窗口輸入:xxgh1回車即得[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)b=[850;700;100;900];

Aeq=[];beq=[];vlb=[0;0;0;0;0;0];vub=[];A=[0.010.010.010.030.030.03

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論