《《數學建?!穼嶒炛笇酚蓵T分享,可在線閱讀,更多相關《《數學建?!穼嶒炛笇?頁珍藏版)》請在裝配圖網上搜索。
1、《數學建?!穼嶒炛笇?
《數學建?!穼嶒炛笇?
實驗一:matlab函數擬合
學時:2學時
實驗目的:掌握用matlab進行函數擬合的方法。
實驗內容:
根據美國人口從1790年到1990年間的人口數據(如下表),確定人口指數增長模型(Logistic模型)中的待定參數,估計出美國2010年的人口,同時畫出擬合效果的圖形。
表1 美國人口統(tǒng)計數據
年 份
1790
1800
1810
1820
1830
1840
1850
人口(106)
3.9
5.3
7.2
9.6
12.9
17.1
23.2
年 份
1860
1870
1880
2、
1890
1900
1910
1920
人口(106)
31.4
38.6
50.2
62.9
76.0
92.0
106.5
年 份
1930
1940
1950
1960
1970
1980
人口(106)
123.2
131.7
150.7
179.3
204.0
226.5
提示:
指數增長模型:
Logistic模型:
可參考擬合函數:a=lsqcurvefit(example_curvefit_fun,a0,x,y);
實驗二:matlab編程
學時:2學時
實驗目的:熟悉matlab編程
實驗內容:
3、
1. 寫一個函數rs=f(s),對傳進去的字符串變量s,刪除其中的小寫字母,然后將原來的大寫字母變?yōu)樾懽帜?,得到rs返回。例如s=”aBcdE,Fg?”,則rs=”be,f?”。提示:可利用find函數和空矩陣。
2. f(x)的定義如下:
寫一個函數文件f(x)實現該函數,要求參數x可以是向量。
實驗三:用Lindo求解線性規(guī)劃問題
學時:2學時
實驗目的:掌握用Lindo求解線性規(guī)劃問題的方法,能夠閱讀Lindo結果報告。
實驗內容:
求解書本上P130的習題1。列出線性規(guī)劃模型,然后用Lindo求解,根據結果報告得出解決方案。
提示:
模型
4、可以如下建立:
設投資證券A,B,C,D,E的金額分別為x1,x2,x3,x4,x5 萬元.
max 0.043x1+0.027x2+0.025x3+0.022x4+0.045x5
x2+x3+x4>=400
x1+x2+x3+x4+x5<=1000
(2x1+2x2+x3+x4+5x5)/(x1+x2+x3+x4+x5)<=1.4
(9x1+15x2+4x3+3x4+2x5)/(x1+x2+x3+x4+x5)<=5
使用Lindo的一些注意事項
1. “>”與“>=”功能相同
2. 變量與系數間可有空格(甚至回車),但無運算符
3. 變量以字母開頭,不能超過8個字符
4
5、. 變量名不區(qū)分大小寫(包括關鍵字)
5. 目標函數所在行是第一行,第二行起為約束條件
6. 行號自動產生或人為定義,以“)”結束
7. “!”后為注釋。
8. 在模型任何地方都可以用“TITLE”對模型命名
9. 變量不能出現在一個約束條件的右端
10. 表達式中不接受括號和逗號等符號
11. 表達式應化簡,如2x1+3x2-4x1應寫成-2x1+3x2
12. 缺省假定所有變量非負,可在模型“END”語句后用“FREE name”將變量name的非負假定取消
13. 可在“END”后用“SUB”或“SLB”設定變量上下界。例如:“sub x1 10”表示“x1<=10”
6、
14. “END”后對0-1變量說明:INT n或INT name
15. “END”后對整數變量說明:GIN n或GIN name
實驗四:用Lingo求解非線性規(guī)劃問題
學時:2學時
實驗目的:掌握用Lingo求解非線性規(guī)劃問題的方法。
實驗內容:
求解書本上P132的習題7。列出非線性規(guī)劃模型,然后用Lingo求解,根據結果報告得出解決方案。
提示:
可參考書上鋼管切割模型的例子,注意有所修改。比如目標函數應該為:
min =(x1+0.1)*y1+(x2+0.2)*y2+(x3+0.3)*y3+(x4+0.
7、4)*y4;
y1,y2,y3,y4是0-1變量。
約束條件可為:
x1*r11+x2*r12+x3*r13+x4*r14>=15; 。。。
290*r11+315*r21+350*r31+455*r41<=y1*1850; 。。。
r11+r21+r31+r41<=y1*5; 。。。
x1*y1+x2*y2+x3*y3+x4*y4<=22;
x1*y1+x2*y2+x3*y3+x4*y4>=19;
x1<=y1*100; 。。。
也可以是:
min =1.1*x1+1.2*x2+1.3*x3+1.4*x4;
約束條件可為:
x1*r11+x2*r12+x3
8、*r13+x4*r14>=15; 。。。
290*r11+315*r21+350*r31+455*r41<=1850; 。。。
r11+r21+r31+r41<=5; 。。。
x1 +x2 +x3 +x4 <=22;
x1 +x2 +x3 +x4 >=19;
。。。
實驗五:用Lingo求解大規(guī)模線性規(guī)劃問題
學時:4學時
實驗目的:掌握用Lingo求解大規(guī)模線性規(guī)劃問題的方法。
實驗內容:
求解全國大學生數學建模競賽05年B題問題2:DVD的分配。會員每次租賃3張DVD,現在給出網站手上的100種DVD的現有張數
9、和當前需要處理的1000位會員的在線訂單,如何對這些DVD進行分配,才能使會員獲得最大的滿意度?
現有DVD張數和當前需要處理的會員的在線訂單(表格格式示例)
DVD編號
D001
D002
D003
D004
…
DVD現有數量
10
40
15
20
…
會員在線訂單
C0001
6
0
0
0
…
C0002
0
0
0
0
…
C0003
0
0
0
3
…
C0004
0
0
0
0
…
…
…
…
…
…
…
注:D001~D100表示100種DVD, C0001~C1000表示100
10、0個會員, 會員的在線訂單用數字1,2,…表示,數字越小表示會員的偏愛程度越高,數字0表示對應的DVD當前不在會員的在線訂單中。所有數據將可從
提示:
可建立如下0-1規(guī)劃模型:
其中cij是偏愛指數,其中0改成-1,其他數字如果是c,則用11-c代替。
可參考如下運輸問題代碼:
model:
!6發(fā)點8收點運輸問題;
sets:
warehouses/wh1..wh6/: capacity;
vendors/v1..v8/: demand;
links(warehouses,vendors): cost, volume;
endsets
!目標函數;
11、
min=@sum(links: cost*volume);
!需求約束;
@for(vendors(J):
@sum(warehouses(I): volume(I,J))=demand(J));
!產量約束;
@for(warehouses(I):
@sum(vendors(J): volume(I,J))<=capacity(I));
!這里是數據;
data:
capacity=60 55 51 43 41 52;
demand=35 37 22 32 41 32 43 38;
cost=6 2 6 7 4 2 9 5
12、
4 9 5 3 8 5 8 2
5 2 1 9 7 4 3 3
7 6 7 3 9 2 7 1
2 3 9 5 7 2 6 5
5 5 2 2 8 1 4 3;
enddata
end
實驗六:用matlab求解微分方程(組)
學時:2學時
實驗目的:掌握用matlab求微分方程和微分方程組的數值解的方法。
實驗內容:
求解書上P138,P139頁的微分方程和微分方程組,畫出書中
13、圖3、4、5、6、7、8。
提示:
要求解微分方程(組)dy/dt=f(t,y),可如下調用:
[T,Y]=ode45(f,[t0,tn],y0)
1. 函數在求解區(qū)間[t0,tn]內,自動設立采樣點向量T,并求出解函數y在采樣點T處的樣本值Y。
2. f是一個函數,要有兩個參數,第一個參數是自變量t,第二個參數是因變量y。
3. y0=y(t0)給定方程的初值。
例:求微分方程初值問題dy/dx=-2y/x+4x,y(1)=2在[1,3]區(qū)間內的數值解,并將結果與解析解進行比較。
先建立一個該函數的m文件fxy1.m:
function f=f(x,y)
f=-2.*
14、y./x+4*x %注意使用點運算符
再輸入命令:
[X,Y]=ode45(fxy1,[1,3],2);
X %顯示自變量的一組采樣點
Y %顯示求解函數與采樣點對應的一組數值解
(X.^2+1./X.^2) %顯示求解函數與采樣點對應的一組解析解
例: 求解常微分方程組初值問題在區(qū)間[0,2]中的解。
建立一個函數文件 fxy2.m:
function f=f(x,y)
f(1)=y(2);
f(2)=-x.*y(2)+x.^2-5;
f=f;
在MATLAB命令窗口,輸入命令:
[X,Y]=ode45(fxy2,[0,2],[5,6])
第6頁 mailto:webmaster@ 黃可坤 2006年春