數(shù)學(xué)建模實(shí)驗(yàn)答案_建立數(shù)學(xué)模型_第1頁
數(shù)學(xué)建模實(shí)驗(yàn)答案_建立數(shù)學(xué)模型_第2頁
數(shù)學(xué)建模實(shí)驗(yàn)答案_建立數(shù)學(xué)模型_第3頁
數(shù)學(xué)建模實(shí)驗(yàn)答案_建立數(shù)學(xué)模型_第4頁
數(shù)學(xué)建模實(shí)驗(yàn)答案_建立數(shù)學(xué)模型_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、實(shí)驗(yàn)01 建立數(shù)學(xué)模型(4學(xué)時(shí))(第1章 建立數(shù)學(xué)模型)教材中給出原始數(shù)據(jù),結(jié)合模型,得到結(jié)果。但如何求得結(jié)果這一過程沒有給出,實(shí)際上要用MATLAB軟件編寫程序來求得,這應(yīng)該交給實(shí)驗(yàn)課來完成??紤]到上學(xué)期同學(xué)們剛學(xué)習(xí)MATLAB語言,編程能力不強(qiáng),所以有關(guān)的程序給出來供同學(xué)們進(jìn)行驗(yàn)證。要求同學(xué)們要讀懂程序。1.(求解,編程)如何施救藥物中毒p1011人體胃腸道和血液系統(tǒng)中的藥量隨時(shí)間變化的規(guī)律(模型):其中,x(t)為t時(shí)刻胃腸道中的藥量,y(t)為t時(shí)刻血液系統(tǒng)中的藥量,t=0為服藥時(shí)刻。1.1(求解)模型求解p1011要求: 用MATLAB求解微分方程函數(shù)dsolve求解該微分方程(符號(hào)

2、運(yùn)算)。 用MATLAB的化簡(jiǎn)函數(shù)simplify化簡(jiǎn)所得結(jié)果。 結(jié)果與教材P11上的內(nèi)容比較。提示:dsolve和simplify的用法可用help查詢。建議在命令窗口中操作。 求解的語句及運(yùn)行結(jié)果:>> x,y= dsolve('Dx=-a*x','Dy=a*x-b*y','x(0)=1100','y(0)=0');>> disp(x,y) 1100*exp(-a*t), exp(-a*t)*exp(-b*t)*(1100*a*exp(a*t)/(a - b) - (1100*a*exp(b*t)/(a

3、 - b)>> disp(simplify(x,y); 1100*exp(-a*t), (1100*a*exp(-t*(a + b)*(exp(a*t) - exp(b*t)/(a - b)1.2(編程)結(jié)果分析p11已知=0.1386, =0.1155,將上題中得到x(t)和y(t)兩條曲線畫在同一個(gè)圖形窗口內(nèi)。參考圖形如下。提示:MATLAB命令plot, fplot, hold on/off, grid on/off, xlabel, ylabel, text。 編寫的程序和運(yùn)行結(jié)果:程序1:用plotclc;clear;a=0.1386; b=0.1155;t=0:0.01

4、:25;x=1100./exp(a*t);y=-(1100*a*(1./exp(a*t) -1./exp(b*t)/(a - b);plot(t,x,t,y);grid on;xlabel('itt /h'); ylabel('itx,ity /mg');text(2,1100/exp(a*2),' itx(itt)');text(3,-(1100*a*(1/exp(a*3) - 1/exp(b*3)/(a - b),' ity(itt)');程序2:用fplot和匿名函數(shù)clc;clear;a=0.1386; b=0.1155;

5、fplot(t)1100/exp(a*t),-(1100*a*(1/exp(a*t) - 1/exp(b*t)/(a - b),0 25);grid on;xlabel('itt /h'); ylabel('itx,ity /mg');text(2,1100/exp(a*2),' itx(itt)');text(3,-(1100*a*(1/exp(a*3) - 1/exp(b*3)/(a - b),' ity(itt)');2.(編程,驗(yàn)證)商人們?cè)鯓影踩^河p89三名商人各帶一個(gè)隨從乘船渡河,一只小船只能容納二人,由他們自己劃行

6、。隨從們密約,在河的任一岸,一旦隨從的人數(shù)比商人多,就殺人越貨。但是如何乘船的大權(quán)掌握在商人們手中。商人們?cè)鯓硬拍馨踩珊幽??模型?gòu)成決策: 每一步(此岸到彼岸或彼岸到此岸)船上的人員。要求:在安全的前提下(兩岸的隨從數(shù)不比商人多),經(jīng)有限步使全體人員過河。xk第k次渡河前此岸的商人數(shù)yk第k次渡河前此岸的隨從數(shù) xk , yk=0,1,2,3; k=1,2,¼過程的狀態(tài)sk=(xk , yk)允許狀態(tài)集合S=(x, y)| x=0, y=0,1,2,3; x=3, y=0,1,2,3; x=y=1,2uk第k次渡船上的商人數(shù)vk第k次渡船上的隨從數(shù) uk , vk=0,1,2; k

7、=1,2,¼決策dk=(uk , vk)允許決策集合D=(u , v)| u+v =1, 2狀態(tài)轉(zhuǎn)移律sk+1=sk+(-1)kdk多步?jīng)Q策問題求dkÎD(k=1, 2, ¼, n), 使skÎS, 并按轉(zhuǎn)移律由 s1=(3,3) 到達(dá)sn+1=(0,0)。2.1(編程)求允許決策集合D和允許狀態(tài)集合SD是2行多列矩陣,每一列是一個(gè)決策。S是2行多列矩陣,每一列是一種狀態(tài)。要求: 編寫程序求D和S,并輸出。 S的第一列是3,3',最后一列是0,0 '。 編寫的程序和運(yùn)行結(jié)果:程序:clear; clc;%求允許決策集合D(2×n

8、1,n1種決策)D=;for u=0:2 for v=0:2 if u+v=1|u+v=2 D=D,u;v; end endend%求允許狀態(tài)集合S(2×n2,n2種狀態(tài))S=;for x=3:-1:0 for y=3:-1:0 if x=0|x=3|x=y S=S,x;y; end endend%首列狀態(tài) ( 商人數(shù), 仆從數(shù))' = ( 3, 3 )',末列為( 0, 0 )'D, S運(yùn)行結(jié)果:2.2(驗(yàn)證)求動(dòng)態(tài)允許狀態(tài)集合SS和狀態(tài)轉(zhuǎn)移矩陣A上面允許狀態(tài)集合S沒有指明當(dāng)時(shí)船是在此岸還是在彼岸,應(yīng)該將S中的每一種狀態(tài)再分為兩種狀態(tài),需增加一個(gè)元素(值為-

9、1或1)放在第三行。定義動(dòng)態(tài)允許狀態(tài)集合SS=(x, y, z)'| x=0, y=0,1,2,3; x=3, y=0,1,2,3; x=y=1,2;z=-1,1(x, y, -1),表示從此岸渡河前此岸的允許狀態(tài)(x, y)。(x, y, 1),表示從彼岸渡河前此岸的允許狀態(tài)(x, y)。SS是三行多列矩陣,每一列表示一種狀態(tài),列下標(biāo)為其編號(hào)。定義狀態(tài)轉(zhuǎn)移矩陣A,其中,A(i, j)=1表示D中存在決策使?fàn)顟B(tài)i轉(zhuǎn)到j(luò),否則A(i, j)=0。程序如下(輸入時(shí),不必把注釋也輸入):程序運(yùn)行結(jié)果(參考):要求: 將程序接在上題的程序之后(去掉最后多余的輸出語句),程序最后給出顯示SS和A

10、的語句。 運(yùn)行程序,輸出SS和A。對(duì)照參考答案,如數(shù)值不一致,請(qǐng)檢查程序。MATLAB函數(shù)all的用法見提示。 運(yùn)行的完整程序和運(yùn)行結(jié)果:程序:clear; clc;%求允許決策集合D(2×n1,n1種決策)D=;for u=0:2 for v=0:2 if u+v=1|u+v=2 D=D,u;v; end endend%求允許狀態(tài)集合S(2×n2,n2種狀態(tài))S=;for x=3:-1:0 for y=3:-1:0 if x=0|x=3|x=y S=S,x;y; end endend%首列狀態(tài) ( 商人數(shù), 仆從數(shù))' = ( 3, 3 )',末列為( 0

11、, 0 )'%動(dòng)態(tài)允許狀態(tài)集合SS(3×n3,n3種狀態(tài))%-1,從此岸渡河前此岸的允許狀態(tài)%1,從彼岸渡河前此岸的允許狀態(tài)SS=S;-ones(1,size(S,2),S;ones(1,size(S,2);SSnum=size(SS,2);%狀態(tài)總數(shù),SS中的列下標(biāo)對(duì)應(yīng)狀態(tài)的編號(hào)%SS(:,1)=3,3,-1'(起點(diǎn)),SS(:,end)=0,0,1'(終點(diǎn))%狀態(tài)轉(zhuǎn)移矩陣A,A(i,j)=1表示存在決策使?fàn)顟B(tài)i轉(zhuǎn)到j(luò),其它為0A=zeros(SSnum);for i=1:SSnum for j=1:SSnum for d=D%順序取D的每一列給d s=SS

12、(1:2,i)+SS(3,i)*d;-SS(3,i); if all(s=SS(:,j)%所有元素不為0時(shí)為真 A(i,j)=1; break; end end endendSS, A運(yùn)行結(jié)果:2.3(驗(yàn)證)給出一個(gè)商人們安全過河的方案程序如下(輸入時(shí),不必把注釋也輸入):程序運(yùn)行結(jié)果:要求: 讀懂以上程序,掌握all和any函數(shù)的應(yīng)用。 將程序接在之前的程序后(去掉最后多余的輸出語句),運(yùn)行程序。對(duì)照答案,如不一致,請(qǐng)檢查程序。MATLAB函數(shù)any的用法見提示。 給出運(yùn)行的完整程序和運(yùn)行結(jié)果:程序:clear; clc;%求允許決策集合D(2×n1,n1種決策)D=;for u=

13、0:2 for v=0:2 if u+v=1|u+v=2 D=D,u;v; end endend%求允許狀態(tài)集合S(2×n2,n2種狀態(tài))S=;for x=3:-1:0 for y=3:-1:0 if x=0|x=3|x=y S=S,x;y; end endend%首列狀態(tài) ( 商人數(shù), 仆從數(shù))' = ( 3, 3 )',末列為( 0, 0 )'%動(dòng)態(tài)允許狀態(tài)集合SS(3×n3,n3種狀態(tài))%-1,從此岸渡河前此岸的允許狀態(tài)%1,從彼岸渡河前此岸的允許狀態(tài)SS=S;-ones(1,size(S,2),S;ones(1,size(S,2);SSnum

14、=size(SS,2);%狀態(tài)總數(shù),SS中的列下標(biāo)對(duì)應(yīng)狀態(tài)的編號(hào)%SS(:,1)=3,3,-1'(起點(diǎn)),SS(:,end)=0,0,1'(終點(diǎn))%狀態(tài)轉(zhuǎn)移矩陣A,A(i,j)=1表示存在決策使?fàn)顟B(tài)i轉(zhuǎn)到j(luò),其它為0A=zeros(SSnum);for i=1:SSnum for j=1:SSnum for d=D%順序取D的每一列給d s=SS(1:2,i)+SS(3,i)*d;-SS(3,i); if all(s=SS(:,j)%所有元素不為0時(shí)為真 A(i,j)=1; break; end end endend%SK為多行SSnum列的矩陣,第i列對(duì)應(yīng)SS的第i列的狀態(tài)。

15、%第i行表示第i次渡河前有那些狀態(tài),1表示有對(duì)應(yīng)下標(biāo)列號(hào)的狀態(tài),0則無。%第i+1行是第i行狀態(tài)轉(zhuǎn)移過來的狀態(tài)%當(dāng)?shù)赟Snum狀態(tài)出現(xiàn)時(shí)停止,表示有解。%或者新行的元素全0時(shí)停止,表示無解。%新行不允許出現(xiàn)之前出現(xiàn)過的狀態(tài)。s=1,zeros(1,SSnum-1);%從狀態(tài)3,3,-1'開始SK=s;while any(s) && s(SSnum)=1 k=find(s);%求最后一行為1的列下標(biāo) s=any(A(k,:),1);%得到新行,元素值為1或0 s=s&any(SK,1);%去掉新行中之前出現(xiàn)的狀態(tài) SK=SK;s;%新行加入,作為SK的末行end%

16、多步?jīng)Q策,直到找到目標(biāo)。有難度!if any(s)=0 %新行全0disp('無解!'); return;end%最后一行的第SSnum狀態(tài)(j)開始往回找轉(zhuǎn)換到它的狀態(tài)(i),直到狀態(tài)1。%得到一個(gè)狀態(tài)號(hào)的順序sk(行向量),為一個(gè)解。sk=zeros(1,size(SK,1);sk(1)=1; sk(1,end)=SSnum; j=SSnum;for k=size(SK,1)-1:-1:2 for i=find(SK(k,:) if A(i,j)=1 sk(k)=i; j=i; break; end endenddisp(1:length(sk);SS(1:2,sk);%輸

17、出結(jié)果給出程序的運(yùn)行結(jié)果:3.(求解)商人們?cè)鯓影踩^河(修改)p9對(duì)第2題的問題改動(dòng),用類似的方法求解。3.1 在第2題中修改商人數(shù)和隨從數(shù)有四名商人各帶一個(gè)隨從,其它同第2題。修改第2題中的程序求解。 修改的程序部分和完整程序的運(yùn)行結(jié)果(安全過河的方案):%求允許狀態(tài)集合S(2×n2,n2種狀態(tài))S=;for x=4:-1:0 for y=4:-1:0 if x=0|x=4|x=y S=S,x;y; end endend%首列狀態(tài) (商人數(shù), 仆從數(shù))' = ( 4, 4 )',末列為( 0, 0 )'3.2 在3.1題中修改船容納的人數(shù)船能容納3人。修改

18、3.1題中的程序求解。 修改的程序部分和完整程序的運(yùn)行結(jié)果(安全過河的方案):%求允許決策集合D(2×n1,n1種決策)D=;for u=0:3 for v=0:3 if u+v>=1 && u+v<=3 D=D,u;v; end endend4.(編程)安全過河問題(人、貓、雞、米)p21習(xí)題5人帶著貓、雞、米過河,除需要人劃船之外,船至多能載貓、雞、米三者之一,而當(dāng)人不在場(chǎng)時(shí)貓要吃雞、雞要吃米。試設(shè)計(jì)一個(gè)安全過河方案。模仿商人過河問題的程序編寫程序解決本問題。 程序:clear; clc;%求允許決策集合D(2×n1,n1種決策)D=1,0,

19、0,0',1,1,0,0',1,0,1,0',1,0,0,1'%求允許狀態(tài)集合S(2×n2,n2種狀態(tài))S=;j=1;for a=23+22+21+1:-1:0 s=fix(a/23);mod(fix(a/22),2);mod(fix(a/2),2);mod(a,2);%取二進(jìn)制數(shù)字 if s(1)&&(s(2)&&s(4)|s(3)|s(1)&&(s(2)&&s(4)|s(3) S(:,j)=s; j=j+1; end%s=人,貓,雞,米end%首列狀態(tài)=(1,1,1,1)',末

20、列為(0,0,0,0)'%動(dòng)態(tài)允許狀態(tài)集合SS(3×n3,n3種狀態(tài))%-1,從此岸渡河前此岸的允許狀態(tài)%1,從彼岸渡河前此岸的允許狀態(tài)SS=S;-ones(1,size(S,2),S;ones(1,size(S,2);SSnum=size(SS,2);%狀態(tài)總數(shù),SS中的列下標(biāo)對(duì)應(yīng)狀態(tài)的編號(hào)%SS(:,1)=1,1,1,1,-1'(起點(diǎn)),SS(:,end)=0,0,0,0,1'(終點(diǎn))%狀態(tài)轉(zhuǎn)移矩陣A,A(i,j)=1表示存在決策使?fàn)顟B(tài)i轉(zhuǎn)到j(luò),其它為0A=zeros(SSnum);for i=1:SSnum for j=1:SSnum for d=D%順

21、序取D的每一列給d s=SS(1:4,i)+SS(5,i)*d;-SS(5,i); if all(s=SS(:,j)%所有元素不為0時(shí)為真 A(i,j)=1; break; end end endend%SK為多行SSnum列的矩陣,第i列對(duì)應(yīng)SS的第i列的狀態(tài)。%第i行表示第i次渡河前有那些狀態(tài),1表示有對(duì)應(yīng)下標(biāo)列號(hào)的狀態(tài),0則無。%第i+1行是第i行狀態(tài)轉(zhuǎn)移過來的狀態(tài)%當(dāng)?shù)赟Snum狀態(tài)出現(xiàn)時(shí)停止,表示有解。%或者新行的元素全0時(shí)停止,表示無解。%新行不允許出現(xiàn)之前出現(xiàn)過的狀態(tài)。s=1,zeros(1,SSnum-1);%從狀態(tài)1,1,1,1,-1'開始SK=s;while any

22、(s) && all(SSnum-find(s) k=find(s);%求最后一行為1的列下標(biāo) s=any(A(k,:),1);%得到新行,元素值為1或0 s=s&any(SK,1);%去掉新行中之前出現(xiàn)的狀態(tài) SK=SK;s;%新行加入,作為SK的末行endif any(s) %新行全0disp('無解!'); return;end%最后一行的第SSnum狀態(tài)(j)開始往回找轉(zhuǎn)換到它的狀態(tài)(i),直到狀態(tài)1。%得到一個(gè)狀態(tài)號(hào)的順序sk(行向量),為一個(gè)解。sk=zeros(1,size(SK,1);sk(1)=1; sk(1,end)=SSnum; j

23、=SSnum;for k=size(SK,1)-1:-1:2 for i=find(SK(k,:) if A(i,j)=1 sk(k)=i; j=i; break; end endenddisp(1:length(sk);SS(1:4,sk);%輸出結(jié)果 程序的運(yùn)行結(jié)果5.(選做,編程)商人們?cè)鯓影踩^河(自編)2.3中的程序有一定難度,所以給出了參考程序,初學(xué)MATLAB的同學(xué)可能想不到用其中的一些語句。第2題給出的是求解商人們安全過河問題的一種算法程序,還有其它的算法程序,比如回溯法、遞歸算法等。要求: 按照自己的理解和想法,改寫2.3中的程序。 或用別的算法編寫解決商人們安全過河的程序。

24、 程序和運(yùn)行結(jié)果:解1(遞歸)程序function river()global mark D SHOW;%全局變量mark=2*ones(4);mark(1,:)=0; mark(4,:)=0;%mark(i,j)=0為允許狀態(tài)mark(2,2)=0; mark(3,3)=0;D=0 1; 0 2; 1 0; 1 1; 2 0;%允許決策集合mark(4,4)=2; SHOW=;fun(3,3,-1);disp(3,3;SHOW);returnfunction f=fun(s,t)global mark D SHOW;%全局變量if s=0f=1; return;endfor k=1:5s1=

25、s+t*D(k,:);i=s1(1)+1; j=s1(2)+1;if all(s1>=0) && all(s1<=3) && (mark(i,j)=0 | mark(i,j)=t)if mark(i,j)=0%標(biāo)記狀態(tài)(i-1,j-1)的使用情況mark(i,j)=-t;elsemark(i,j)=2;end if fun(s1,-t)SHOW=s1;SHOW; f=1; return; endendendif s=3 disp('無解');endf=0;運(yùn)行結(jié)果3 33 13 23 0 %船??勘税?,先把所有隨從渡過彼岸3 11 1

26、2 20 2 %船停靠彼岸,再把所有商人渡過彼岸0 3 %船停靠此岸,此岸只有隨從,彼岸只有商人0 10 20 0 %船??勘税叮詈蟀阉须S從渡過彼岸三個(gè)階段:(3,3,船停此岸)(3,0,船停彼岸)(0,3,船停此岸)(0,0,船停彼岸)第一階段:所有隨從渡過彼岸(商人不動(dòng));第二階段:使所有商人渡過彼岸,并將隨從渡回此岸;第三階段:所有隨從渡過彼岸(商人不動(dòng))。解2(借用棧)思路定義狀態(tài):此岸的商人數(shù),隨從數(shù),小船??吭诖税痘虮税丁某跏紶顟B(tài)開始,找到一個(gè)決策得到下一個(gè)狀態(tài),再?gòu)男聽顟B(tài)開始,找到一個(gè)決策得到下一個(gè)狀態(tài),.。在這個(gè)過程中,出現(xiàn)過的狀態(tài)將不可再用。若從某個(gè)狀態(tài)開始,所有決策都

27、得不到新狀態(tài),則返回上一狀態(tài),并從下一個(gè)決策開始,試探是否能得到新的狀態(tài)。直到到達(dá)狀態(tài)(0,0),或無解。算法1. 給出允許狀態(tài)集合;%用4階方陣mark標(biāo)記,其中mark(i,j)=0表示(i-1,j-1)為允許狀態(tài),mark(i,j)=2表示(i-1,j-1)為不可達(dá)狀態(tài)2. 給出允許決策集合;% D=0 1; 0 2; 1 0; 1 1; 2 03. 初始狀態(tài)進(jìn)棧;%包括:當(dāng)前狀態(tài),出發(fā)標(biāo)記(-1/1為從此岸/彼岸出發(fā)),選擇第幾個(gè)決策4. 初始狀態(tài)標(biāo)記;%mark(i,j)=-1/1表示從此岸/彼岸出發(fā)轉(zhuǎn)移到狀態(tài)(i-1,j-1)已走過,mark(i,j)=2表示上述兩種情況都出現(xiàn)或不

28、可達(dá)狀態(tài)5. 循環(huán)直到??栈虻竭_(dá)狀態(tài)(0,0) 5.1 出棧,將出棧的狀態(tài)作為當(dāng)前狀態(tài),并選擇下一個(gè)決策;%原決策失敗,回溯 5.2 循環(huán)直到?jīng)Q策都用過或到達(dá)最終狀態(tài) 5.2.1 由當(dāng)前狀態(tài)、出發(fā)標(biāo)記和決策得到轉(zhuǎn)移到的新狀態(tài); 5.2.2 若新狀態(tài)是允許狀態(tài)且沒走過,則執(zhí)行5.2.2.1;否則選擇下一個(gè)決策 5.2.2.1 標(biāo)記新狀態(tài)的訪問信息;%mark(i,j)=-1/1/2 5.2.2.2 當(dāng)前狀態(tài)重新進(jìn)棧(改變了決策);%存儲(chǔ)決策過程 5.2.2.4 將新狀態(tài)作為當(dāng)前狀態(tài),置出發(fā)標(biāo)記,選擇第1個(gè)決策;6. 若有解,則輸出決策過程;否則輸出“無解”;程序clear; clc;mark=2

29、*ones(4);mark(1,:)=0; mark(4,:)=0;%mark(i,j)=0為允許狀態(tài)mark(2,2)=0; mark(3,3)=0;D=0 1; 0 2; 1 0; 1 1; 2 0;%允許決策集合sp=1; st(sp,:)=3,3,-1,0; %進(jìn)棧,(3,3)為當(dāng)前狀態(tài),-1表示小船停靠此岸,決策0(未做決策)mark(4,4)=2;%標(biāo)記為不可達(dá)狀態(tài)s0=3,3;while sp>0&& any(s0>0)%棧未空且s0中至少有一個(gè)元素>0s0=st(sp,1,2); ss=st(sp,3);%當(dāng)前狀態(tài),ss=-1/1小船??看税?

30、彼岸d=st(sp,4);%之前用過的決策,該決策失敗sp=sp-1;%出棧 d=d+1;%試探下一個(gè)決策 while d<6 && any(s0>0)s1=s0+ss*D(d,:);%下一個(gè)狀態(tài),不包括小船??繝顟B(tài)i=s1(1)+1;j=s1(2)+1;%狀態(tài)轉(zhuǎn)換為下標(biāo)if all(s1>=0) && all(s1<=3) && (mark(i,j)=0 | mark(i,j)=-ss)if mark(i,j)=0%標(biāo)記狀態(tài)(i-1,j-1)的使用情況mark(i,j)=ss;elsemark(i,j)=2;endsp=

31、sp+1;%進(jìn)棧st(sp,:)=s0,ss,d;%當(dāng)前狀態(tài)重新進(jìn)棧,改變了決策s0=s1; ss=-ss; d=1;%下一個(gè)狀態(tài)作當(dāng)前狀態(tài),選擇第1個(gè)決策else%決策d失敗d=d+1;endendendif s0=0disp(1:sp+1',st(1:sp,1:2);s0);%有解elsedisp('無解'); end運(yùn)行結(jié)果 1 3 3 2 3 1 3 3 2 4 3 0 5 3 1 6 1 1 7 2 2 8 0 2 9 0 3 10 0 1 11 0 2 12 0 0解3clear; clc;%求允許狀態(tài)集合SS=;for x=0:3 for y=0:3 if

32、 (x=0&&(y>=0&&y<=3). |(x=3&&(y>=0&&y<=3). |(x=1&&y=1|x=2&&y=2) S=S,x;y; end endendSA=S;%從此岸(A)到彼岸(B)渡河前此岸的允許狀態(tài)集合SB=S;%從彼岸(B)到此岸(A)渡河前此岸的允許狀態(tài)集合%求允許決策集合DD=;for u=0:2 for v=0:2 if u+v=1|u+v=2 D=D,u;v; end endend k=1;%第1次渡河s=3;3;%第1次渡河前的狀態(tài)Snum(

33、1)=1;%第1次渡河前的狀態(tài)總數(shù)SA(:,end)=; SB=SA;%去掉狀態(tài)(3,3)while Snum(k)>0 Snum(k+1)=0;%第k+1次渡河前的狀態(tài)總數(shù)初始化 k1=size(s,2)-Snum(k)+1;k2=size(s,2); for i=k1:k2 xk=s(1,i); yk=s(2,i); for d=D xk1=xk+(-1)k*d(1); yk1=yk+(-1)k*d(2); if (-1)k=1 for j=1:size(SB,2) if xk1=SB(1,j)&&yk1=SB(2,j) s=s,SB(:,j); SB(:,j)=;

34、Snum(k+1)=Snum(k+1)+1; break; end end else for j=1:size(SA,2) if xk1=SA(1,j)&&yk1=SA(2,j) s=s,SA(:,j); SA(:,j)=; Snum(k+1)=Snum(k+1)+1; break; end end end end end k=k+1;endSnums(:,1:Snum(1)m=Snum(1);for k=1:11 disp(s(:,m+1:m+Snum(k+1); m=m+Snum(k+1);end解4i=1;S=;D=;S(:,i)=3;3;%開始S(:,1)=3,3

35、9;while S(1,i)=0|S(2,i)=0%當(dāng)s(:,i)=0,0'完成 D(:,i)=round(2*rand(2,1);%隨機(jī)取0,1,2給決策D(:,i) d=D(:,i); if d(1)+d(2)=1&&d(1)+d(2)=2%成立則不是允許決策 continue;%重新選取決策 end S(:,i+1)=S(:,i)+(-1)i*D(:,i);%得到下一個(gè)狀態(tài)S(:,i+1) s=S(:,i+1); if (s(1)=1&&s(2)=1)|(s(1)=2&&s(2)=2)|(s(1)>3|s(1)<0)|(

36、s(2)>3|s(2)<0)%成立則不是允許狀態(tài) continue;%重新選取決策 end i=i+1; if i=105%等于此循環(huán)次數(shù)判無解 disp('無解');return; endendfor i=1:size(S,2)%添加狀態(tài)的第3行元素,-1為船在此岸,1時(shí)在彼岸 SS(:,i)=S(:,i);(-1)i;end%區(qū)分過程中的不同狀態(tài)for i=1:size(SS,2)-1%去掉狀態(tài)轉(zhuǎn)移過程中多余的狀態(tài) a=0; for j=i+1:size(SS,2)%找出與第i狀態(tài)相同的最后一個(gè)狀態(tài) if any(SS(:,i)-SS(:,j)=0 a=j; e

37、nd end if i<a%刪除第i到a-1列,多余的狀態(tài)轉(zhuǎn)移 SS(:,i:a-1)=; endenddisp(1:size(SS,2);SS)%該程序運(yùn)行效率含隨機(jī)性,可能誤判為無解!解5syms k;%定義一個(gè)關(guān)于k的,儲(chǔ)存各個(gè)狀態(tài)之間轉(zhuǎn)化的符號(hào)矩陣as=3,2,1,0;ss=;%能夠存在的狀態(tài)集合for i=1:length(s)%計(jì)算ss for j=1:length(s) if i=length(s)|i=1|s(i)=s(j) sss=s(i),s(j); ss=ss;sss; end endendignore,p=sort(sum(ss,2),'descend&#

38、39;);%按總數(shù)排序,便于計(jì)算狀態(tài)矩陣ss=ss(p,:);a=sym(zeros(length(ss),length(ss);for i=1:length(ss) for j=i+1:length(ss) m=abs(sum(ss(i,:)-sum(ss(j,:); if m=1|m=2%兩個(gè)狀態(tài)的總?cè)藬?shù)之差只能是1或者2 if ss(i,:)>=ss(j,:)%保證總?cè)藬?shù)多的狀態(tài)每個(gè)分量都要大 a(i,j)=2+(-1)k; a(j,i)=(-1)k; end end endenda(1,2)=0;%當(dāng)?shù)谝淮斡?3,3)變到(3,2)時(shí),下一次必為(3,2) 變到(3,3),避免無

39、用功k=1;dd=1;s0=ss(1,:);%初始狀態(tài)S=ss(1,:);%儲(chǔ)存總的狀態(tài)轉(zhuǎn)移方案D=;%每一步的決策集合while any(s0)&k<=100 b=eval(a);%確定此時(shí)的a矩陣 for i=1:length(ss)%判斷s0處于s中的第幾行 if s0(1,:)=ss(i,:) break end end m=find(b(i,:)=1); %確定此時(shí)的方案集合 if k>1&length(m)>=2 m(find(m=dd(k-1)=;%避免走回頭路 end ignore,p=sort(rand(1,length(m);%在剩下的狀態(tài)

40、中隨機(jī)找一個(gè)可行狀態(tài) s0=ss(m(p(1),:); k=k+1; dd=dd;m(p(1);S=S;s0;D=D;abs(S(k,:)-S(k-1,:);endSD40附1:實(shí)驗(yàn)提示第2.2題MATLAB函數(shù)all的用法:對(duì)于向量v,all(v)當(dāng)v的所有元素都非0時(shí),返回true(值為1);否則返回false(值為0)。(類似v的所有元素“與”)對(duì)于矩陣X,all(X)返回一個(gè)行向量,每一個(gè)元素值為all作用于X對(duì)應(yīng)列的結(jié)果。all(X, 1)作用于列(同all(X)),all(X, 2)作用于行。第2.3題MATLAB函數(shù)any的用法:對(duì)于向量v,any(v)當(dāng)v中有元素非0時(shí),返回t

41、rue(值為1);否則返回false(值為0)。(類似v的所有元素“或”)對(duì)于矩陣X,any(X)返回一個(gè)行向量,每一個(gè)元素值為any作用于X對(duì)應(yīng)列的結(jié)果。any(X, 1)作用于列(同any(X)),any(X, 2)作用于行。第3題要給出安全過河的方案。第4題在設(shè)計(jì)允許狀態(tài)集合和允許決策集合時(shí),要把“人”考慮進(jìn)去附2:第1章 建立數(shù)學(xué)模型數(shù)學(xué)模型出現(xiàn)在生產(chǎn)、工作和社會(huì)活動(dòng)中:電氣工程師必須建立所要控制的生產(chǎn)過程的數(shù)學(xué)模型,用這個(gè)模型對(duì)控制裝置作出相應(yīng)的設(shè)計(jì)和計(jì)算,才能實(shí)現(xiàn)有效的過程控制。氣象工作者為了得到準(zhǔn)確的天氣預(yù)報(bào),一刻也離不開根據(jù)氣象站、氣象衛(wèi)星匯集的氣壓、雨量、風(fēng)速等資料建立的數(shù)學(xué)

42、模型。生理醫(yī)學(xué)專家有了藥物濃度注人體內(nèi)隨時(shí)間和空間變化的數(shù)學(xué)模型,就可以分析藥物的療效,有效地指導(dǎo)臨床用藥。城市規(guī)劃工作者需要建立一個(gè)包括人口、經(jīng)濟(jì)、交通、環(huán)境等大系統(tǒng)的數(shù)學(xué)模型,為領(lǐng)導(dǎo)層對(duì)城市發(fā)展規(guī)劃的決策提供科學(xué)根據(jù)。廠長(zhǎng)經(jīng)理們要是能夠根據(jù)產(chǎn)品的需求狀況、生產(chǎn)條件和成本、貯存費(fèi)用等信息,籌劃出一個(gè)合理安排生產(chǎn)和銷售的數(shù)學(xué)模型,一定可以獲得更大的經(jīng)濟(jì)效益。對(duì)于科學(xué)技術(shù)人員和應(yīng)用數(shù)學(xué)工作者來說,建立數(shù)學(xué)模型是溝通實(shí)際問題與數(shù)學(xué)工具之間聯(lián)系的一座橋梁。1.1 從現(xiàn)實(shí)對(duì)象到數(shù)學(xué)模型原型和模型原型 指人們?cè)诂F(xiàn)實(shí)世界里關(guān)心、研究或者從事生產(chǎn)、管理的實(shí)際對(duì)象。在科技領(lǐng)域通常使用系統(tǒng)、過程等詞匯:如機(jī)械系

43、統(tǒng)、電力系統(tǒng)、生態(tài)系統(tǒng)、生命系統(tǒng)、社會(huì)經(jīng)濟(jì)系統(tǒng);又如鋼鐵冶煉過程、導(dǎo)彈飛行過程、化學(xué)反應(yīng)過程、污染擴(kuò)散過程、生產(chǎn)銷售過程、計(jì)劃決策過程等。本書所述的現(xiàn)實(shí)對(duì)象、研究對(duì)象、實(shí)際問題等均指原型。模型 則指為了某個(gè)特定目的將原型的某一部分信息簡(jiǎn)縮、提煉而構(gòu)造的原型替代物。模型的基本特征是由構(gòu)造模型的目的決定的:模型不是原型原封不動(dòng)的復(fù)制品,原型有各個(gè)方面和各種層次的特征,而模型只要求反映與某種目的有關(guān)的那些方面和層次。一個(gè)原型,為了不同的目的可以有許多不同的模型:放在展廳里的飛機(jī)模型應(yīng)該在外形上逼真,但是不一定會(huì)飛。參加航模競(jìng)賽的模型飛機(jī)要具有良好的飛行性能,在外觀上不必苛求。在飛機(jī)設(shè)計(jì)、試制過程中用

44、到的數(shù)學(xué)模型和計(jì)算機(jī)模擬,只要求在數(shù)量規(guī)律上真實(shí)反映飛機(jī)的飛行動(dòng)態(tài)特性,毫不涉及飛機(jī)的實(shí)體。用模型替代原型的方式分類,模型可分為物質(zhì)模型(形象模型):直觀模型、物理模型等。理想模型(抽象模型):思維模型、符號(hào)模型、數(shù)學(xué)模型等。直觀模型:那些供展覽用的實(shí)物模型,以及玩具、照片等,通常把原型的尺寸按比例縮小或放大,主要追求外觀上的逼真。物理模型:科技工作者為一定目的根據(jù)相似原理構(gòu)造的模型,它不僅可以顯示原型的外形或某些特征,而且可以用來進(jìn)行模擬實(shí)驗(yàn),間接地研究原型的某些規(guī)律。如波浪水箱中的艦艇模型用來模擬波浪沖擊下艦艇的航行性能,風(fēng)洞中的飛機(jī)模型用來試驗(yàn)飛機(jī)在氣流中的空氣動(dòng)力學(xué)特性。有些現(xiàn)象直接用

45、原型研究非常困難,更可借助于這類模型,如地震模擬裝置、核爆炸反應(yīng)模擬設(shè)備等。思維模型:指通過人們對(duì)原型的反復(fù)認(rèn)識(shí),將獲取的知識(shí)以經(jīng)驗(yàn)形式直接貯存于人腦中,從而可以根據(jù)思維或直覺作出相應(yīng)的決策。如汽車司機(jī)對(duì)方向盤的操縱、一些技藝性較強(qiáng)的工種(如鉗工)的操作。通常說的某些領(lǐng)導(dǎo)者憑經(jīng)驗(yàn)作決策也是如此。Ø 優(yōu)缺點(diǎn):思維模型便于接受,也可以在一定條件下獲得滿意的結(jié)果,但是它往往帶有模糊性、片面性、主觀性、偶然性等缺點(diǎn),難以對(duì)它的假設(shè)條件進(jìn)行檢驗(yàn),且不便于人們的相互溝通。符號(hào)模型:是在一些約定或假設(shè)下借助于專門的符號(hào)、線條等,按一定形式組合起來描述原型。如地圖、電路圖、化學(xué)結(jié)構(gòu)式等。具有簡(jiǎn)明、方

46、便、目的性強(qiáng)及非量化等特點(diǎn)。數(shù)學(xué)模型:是由數(shù)字、字母或其它數(shù)學(xué)符號(hào)組成的,描述現(xiàn)實(shí)對(duì)象數(shù)量規(guī)律的數(shù)學(xué)公式、圖形或算法。什么是數(shù)學(xué)模型?航行問題:甲乙兩地相距750km,船從甲到乙順?biāo)叫行?0h,從乙到甲逆水航行需50h,問船速、水速各若干?用x,y分別代表船速和水速,可以列出方程( x + y ) · 30 = 750,( x y ) · 50 = 750這組方程就是航行問題的數(shù)學(xué)模型。方程的解x = 20 km/h,y = 5 kn/h,最終給出了航行問題的答案。建立數(shù)學(xué)模型的基本內(nèi)容:根據(jù)建立數(shù)學(xué)模型的目的和問題的背景作出必要的簡(jiǎn)化假設(shè)(航行中設(shè)船速和水速為常數(shù));用

47、字母表示待求的未知量(x,y代表船速和水速);利用相應(yīng)的物理或其它規(guī)律(勻速運(yùn)動(dòng)的距離等于速度乘以時(shí)間),列出數(shù)學(xué)式子(二元一次方程);求出數(shù)學(xué)上的解答(x = 20,y = 5);用這個(gè)答案解釋原問題(船速和水遞分別為20 km/h和5 km/h);最后用實(shí)際現(xiàn)象驗(yàn)證上述結(jié)果。數(shù)學(xué)模型可以描述為,對(duì)于現(xiàn)實(shí)世界的一個(gè)特定對(duì)象,為了一個(gè)特定目的,根據(jù)特有的內(nèi)在規(guī)律,做出一些必要的簡(jiǎn)化假設(shè),運(yùn)用適當(dāng)?shù)臄?shù)學(xué)工具,得到的一個(gè)數(shù)學(xué)結(jié)構(gòu)。本書的重點(diǎn)不在于介紹現(xiàn)實(shí)對(duì)象的數(shù)學(xué)模型是什么樣子,而是要討論建立數(shù)學(xué)模型的全過程。建立數(shù)學(xué)模型簡(jiǎn)稱數(shù)學(xué)建?;蚪!?shù)學(xué)模擬:運(yùn)用數(shù)字式計(jì)算機(jī)的計(jì)算機(jī)模擬。它根據(jù)實(shí)際系統(tǒng)或

48、過程的特性,按照一定的數(shù)學(xué)規(guī)律用計(jì)算機(jī)程序語言模擬實(shí)際運(yùn)行狀況,并依據(jù)大量模擬結(jié)果對(duì)系統(tǒng)或過程進(jìn)行定量分析。例如,通過各種工件在不同機(jī)器上按一定工藝順序加工的模擬,能夠識(shí)別生產(chǎn)過程中的瓶頸環(huán)節(jié);通過高速公路上交通流的模擬,可以分析車輛在路段上的分布特別是堵塞的狀況。與用物理模型的模擬實(shí)驗(yàn)相比,計(jì)算機(jī)模擬有明顯的優(yōu)點(diǎn):成本低、時(shí)間短、重復(fù)性高、靈活性強(qiáng)。數(shù)學(xué)建模與計(jì)算機(jī)模擬有人把計(jì)算機(jī)模擬作為建立數(shù)學(xué)模型的手段之一。但是數(shù)學(xué)模型在某種意義下描述了對(duì)象內(nèi)在特性的數(shù)量關(guān)系,其結(jié)果容易推廣,特別是得到了解析形式答案時(shí),更易推廣。而計(jì)算機(jī)模擬則完全模仿對(duì)象的實(shí)際演變過程,難以從得到的數(shù)字結(jié)果分析對(duì)象的內(nèi)

49、在規(guī)律。當(dāng)然,對(duì)于那些因內(nèi)部機(jī)理過于復(fù)雜、目前尚難以建立數(shù)學(xué)模型的實(shí)際對(duì)象,用計(jì)算機(jī)模擬獲得一些定量結(jié)果,可稱是解決問題的有效手段。1.2 數(shù)學(xué)建模的重要意義P4數(shù)學(xué),作為一門研究現(xiàn)實(shí)世界數(shù)量關(guān)系和空間形式的科學(xué),在它產(chǎn)生和發(fā)展的歷史長(zhǎng)河中,一直是和人們生活的實(shí)際需要密切相關(guān)的。作為用數(shù)學(xué)方法解決實(shí)際問題的第一步,數(shù)學(xué)建模自然有著與數(shù)學(xué)同樣悠久的歷史。兩千多年以前創(chuàng)立的歐幾里德幾何,17世紀(jì)發(fā)現(xiàn)的牛頓萬有引力定律,都是科學(xué)發(fā)展史上數(shù)學(xué)建模的成功范例。進(jìn)入20世紀(jì)以來,隨著數(shù)學(xué)以空前的廣度和深度向一切領(lǐng)域的滲透,和電子計(jì)算機(jī)的出現(xiàn)與飛速發(fā)展,數(shù)學(xué)建模越來越受到人們的重視。1) 在一般工程技術(shù)領(lǐng)域

50、,數(shù)學(xué)建模仍然大有用武之地。在以聲、光、熱、力、電這些物理學(xué)科為基礎(chǔ)的諸如機(jī)械、電機(jī)、土木、水利等工程技術(shù)領(lǐng)域中,數(shù)學(xué)建模的普遍性和重要性不言而喻。雖然這里的基本模型是已有的,但是由于新技術(shù)、新工藝的不斷涌現(xiàn),提出了許多需要用數(shù)學(xué)方法解決的新問題;高速、大型計(jì)算機(jī)的飛速發(fā)展,使得過去即便有了數(shù)學(xué)模型也無法求解的課題(如大型水壩的應(yīng)力計(jì)算、中長(zhǎng)期天氣預(yù)報(bào)等)迎刃而解;建立在數(shù)學(xué)模型和計(jì)算機(jī)模擬基礎(chǔ)上的CAD技術(shù),以其快速、經(jīng)濟(jì)、方便等優(yōu)勢(shì),大量地替代了傳統(tǒng)工程設(shè)計(jì)中的現(xiàn)場(chǎng)實(shí)驗(yàn)、物理模擬等手段。2) 在高新技術(shù)領(lǐng)域,數(shù)學(xué)建模幾乎是必不可少的工具。無論是發(fā)展通訊、航天、微電子、自動(dòng)化等高新技術(shù)本身,還是將高新技術(shù)用于傳統(tǒng)工業(yè)去創(chuàng)造新工藝、開發(fā)新產(chǎn)品,計(jì)算機(jī)技術(shù)支持下的建模和模擬都是經(jīng)常使用的有效手段。數(shù)學(xué)建模、數(shù)值計(jì)算和計(jì)算機(jī)圖形學(xué)等相結(jié)合形成的計(jì)算機(jī)軟件,已經(jīng)被固化于產(chǎn)品中,在許多高新技術(shù)領(lǐng)域起著核心作用,被認(rèn)為是高新技術(shù)的特征之一。在這個(gè)意義上,數(shù)學(xué)不再僅僅作為一門科學(xué),是許多技術(shù)的基礎(chǔ),而且直接定向了技術(shù)的前臺(tái)。高技術(shù)本質(zhì)上是一種數(shù)學(xué)技術(shù)。3) 數(shù)學(xué)迅速進(jìn)入一些新領(lǐng)域,為數(shù)學(xué)建模開拓了許多新的處女她。隨著數(shù)學(xué)向諸如經(jīng)濟(jì)、人口、生態(tài)、地質(zhì)等所謂非物理領(lǐng)域的滲透,一些交叉學(xué)科如計(jì)量經(jīng)濟(jì)學(xué)、人口控制論、

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論