数学建模详解.docx

上传人:b****5 文档编号:8166228 上传时间:2023-01-29 格式:DOCX 页数:21 大小:138.29KB
下载 相关 举报
数学建模详解.docx_第1页
第1页 / 共21页
数学建模详解.docx_第2页
第2页 / 共21页
数学建模详解.docx_第3页
第3页 / 共21页
数学建模详解.docx_第4页
第4页 / 共21页
数学建模详解.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

数学建模详解.docx

《数学建模详解.docx》由会员分享,可在线阅读,更多相关《数学建模详解.docx(21页珍藏版)》请在冰豆网上搜索。

数学建模详解.docx

数学建模详解

1.编写函数M文件,对任意输入向量(矩阵)X,计算X的最大和最小元素.并将最大值赋予M,对应行、列下标赋值给I;将最小值赋予N,对应行、列下标赋值给J。

%写M文件命名为math1.m

X=input('pleaseinput:

');

M=max(max(X))

N=min(min(X))

[a,b]=find(X==M);

[c,d]=find(X==N);

I=[a,b]

J=[c,d]

%输入命令测试math1.m

pleaseinputMatrix:

[123;789;654]

M=

9

N=

1

I=

23

J=

11

2.根据世界1950~2005年人口数据(单位:

千)(见表Populationdata)中的非洲(AFRICA)数据完成下列任务:

(1)用3次多项式拟合人口数据,并在同一图中画出原数据的散点图和拟合结果图,将拟合结果与原数据进行比较。

t=1950:

2005;

x=[224067.97228944.869233985.575239208.038244626.804250253.059256094.356262154.89268435.987274937.081281658.503288604.469295785.684303220.497310931.65318937.034327253.709335885.283344820.452354039.863363534.745373305.407383374.622393783.578404586.128415824.0238427506.0998439630.994452216.103465278.237478824.469492857.319507360.108522294.269537607.559553254.734569215.434585474.333601996.495618744.027635684.71652799.872670075.317687490.535705026.206722668.717740413.971758263.182776217.489794281.619812465.619830767.723849205.927867835.353886727.428905935.864];

p=polyfit(t,x,3) ;%改变参数可实现不同次多项式的拟合

y=p

(1)*t.^3+p

(2)*t.^2+p(3)*t+p(4);

plot(t,x,'k-',t,y,'b.-')%作二维图形曲线图和点图

legend('原数据','拟合结果')%显示图例

(2)用最小二乘法根据带阻滞模型中人口函数进行拟合,并在同一图中画出原数据的散点图和拟合结果图,将拟合结果与原数据进行比较。

%输入函数M文件

functionf=tc(x)

t=0:

55;

c=[224067.97228944.869233985.575239208.038244626.804250253.059256094.356262154.89268435.987274937.081281658.503288604.469295785.684303220.497310931.65318937.034327253.709335885.283344820.452354039.863363534.745373305.407383374.622393783.578404586.128415824.0238427506.0998439630.994452216.103465278.237478824.469492857.319507360.108522294.269537607.559553254.734569215.434585474.333601996.495618744.027635684.71652799.872670075.317687490.535705026.206722668.717740413.971758263.182776217.489794281.619812465.619830767.723849205.927867835.353886727.428905935.864];

f=c-x

(1)./(1+((x

(1))/224067.97-1)*exp((x

(2))*t))%带阻滞模型中人口函数

formatlong

%输入运行程序

x0=[905935.864,-0.01368] ;

lsqnonlin('tc',x0)

ans=

1.0e+008*

5.165488761262176-0.000000000257224

%再以此为初始值

x0=1.0e+008*[5.165488761262176-0.000000000257224];lsqnonlin('tc',x0)

ans=

1.0e+008*

5.165488861262176-0.000000000257224

%将拟合结果与原数据进行比较

%输入运行程序

t=0:

55;

c=[224067.97228944.869233985.575239208.038244626.804250253.059256094.356262154.89268435.987274937.081281658.503288604.469295785.684303220.497310931.65318937.034327253.709335885.283344820.452354039.863363534.745373305.407383374.622393783.578404586.128415824.0238427506.0998439630.994452216.103465278.237478824.469492857.319507360.108522294.269537607.559553254.734569215.434585474.333601996.495618744.027635684.71652799.872670075.317687490.535705026.206722668.717740413.971758263.182776217.489794281.619812465.619830767.723849205.927867835.353886727.428905935.864];

y=516548886.1262176./(1+(516548886.1262176/224067.97-1)*exp(-0.0257224*t));

plot(t,c,'k-',t,y,'b.-')

legend('原数据','拟合结果')

 

(3)预测2020年非洲人口数。

y=516548886.1262176./(1+(516548886.1262176/224067.97-1)*exp(-0.0257224*70))

结果:

y=

1.353335981843351e+006

3.分别用MATLAB和LINGO两种方法求解非线性规划

s.t.

F=[1,1,1]

A=[];

b=[-50,-10,-20,-15];

lb=zeros[3,1];

[x,fval,exitflag,outpt,lambda]=linprog(f,A,b,[],[],lb);

分别用MATLAB和LINGO两种方法求解非线性规划

s.t.

Lingo:

方法一

model:

sets:

n/1..4/:

a,b;

m/1..3/:

x;

f(n,m):

r;

endsets

data:

a=4568;

b=50102015;

c=19;

d=16;

enddata

min=@sum(m(i):

x(i));

@for(n(i):

@sum(m(j):

x(j)*r(i,j))>=b(i));

@for(m(j):

@sum(n(i):

a(i)*r(i,j))<=c);

@for(m(j):

@sum(n(i):

a(i)*r(i,j))>=d);

End

 

最优单纯形表中第0行系数,检验数(min型)

对应非基变量增加1个单位时目标函数增加的量

 

松弛或剩余变量值

对偶价格的值,表示相应约束右端增加1个单位时目标函数增加的量

Lingo方法二:

model:

min=x1+x2+x3;

x1*r11+x2*r12+x3*r13>=50;

x1*r21+x2*r22+x3*r23>=10;

x1*r31+x2*r32+x3*r33>=20;

x1*r41+x2*r42+x3*r43>=15;

4*r11+5*r21+6*r31+8*r41<=19;

4*r12+5*r22+6*r32+8*r42<=19;

4*r13+5*r23+6*r33+8*r43<=19;

4*r11+5*r21+6*r31+8*r41>=16;

4*r12+5*r22+6*r32+8*r42>=16;

4*r13+5*r23+6*r33+8*r43>=16;

x1+x2+x3>=26;

x1+x2+x3<=31;

x1>=x2;

x2>=x3;

@gin(x1);@gin(x2);@gin(x3);

@gin(r11);@gin(r12);@gin(r13);

@gin(r21);@gin(r22);@gin(r23);

@gin(r31);@gin(r32);@gin(r33);

@gin(r41);@gin(r42);@gin(r43);

End

 

@free(x1);@free(x2);@free(x3);

@free(r11);@free(r12);@free(r13);

@free(r21);@free(r22);@free(r23);

@free(r31);@free(r32);@free(r33);

@free(r41);@free(r42);@free(r43);

End

4.公交车问题

根据公汽线路信息数据解决下列问题:

(1)将公汽线路信息数据导入Excel表;

(2)根据公汽线路信息数据,编写对任意车站,寻找通过该站的汽车线路的M文件;

%编写M文件命名为x1.m

A=[…………];

m=input('pleaseinputstartingstation:

');

fori=1:

929

forj=3:

88

ifA(i,j)==m

B=[A(i,1)A(i,2)]%返回该车站所在的路数,和上下行

C=[ij]%返回该站在表格中的具体位置

end

end

end

%命令行输入测试得出结果

x1

pleaseinputstartingstation:

388

B=

13

C=

15

B=

251

C=

449

B=

252

C=

4522

B=

281

C=

4921

B=

282

C=

5010

B=

1411

C=

25314

B=

1412

C=

25416

B=

2483

C=

44840

B=

2701

C=

48715

B=

2702

C=

4888

B=

2951

C=

53113

B=

2952

C=

5328

B=

3482

C=

63036

B=

3831

C=

68614

B=

3832

C=

6878

B=

4461

C=

7988

B=

4462

C=

79923

(3)编写M文件,对任意两个车站m,n,判断是否有线路通过这两车站,若有则编写寻找通过该站的汽车线路的M文件

%编写M文件命名为x2.m

A=[…..];

m=input('pleaseinputstartingstation:

');

n=input('pleaseinputtheterminal:

');

l=0;%光标放在初始处

[a,b]=find(A==m);

[p,q]=size(a);

fori=1:

1:

p

forj=b(i)+1:

1:

88

ifA(a(i),j)==n

l=l+1;%光标依次下移

f(l)=a(i);

end

end

end

I=[A(f,1),A(f,2)]

%命令行输入测试得出结果

(4)对任意两个车站m,n,若没有线路直接通过这两车站,编写通过一次转车而到达两站的M文件

%编写M文件命名为x4.m

A=[…..];

m=input('请输入起点站:

');

n=input('请输入终点站:

');

[a,b]=find(A==m);

[p,q]=size(a);

[c,d]=find(A==n);

[f,g]=size(c);

s=0;

ifA(a(i),j)==n

fori=1:

p

forj=1:

f

fork=b(i)+1:

88

fort=3:

d(j)-1

ifA(a(i),k)==A(c(j),t)

s=s+1;

M(s)=a(i);

D(s)=c(j);

R(s)=A(a(i),k);%R是行向量,按行排列,最好需要按列列

end

end

end

end

end

end

N=[A(M,1),A(M,2),R',A(D,1),A(D,2)]%起始站所在路、上下行、转车的站点、终点站所在路数、上下行

%命令行输入测试得出结果

x4

请输入起点站:

388

请输入终点站:

4

N=

1336122671

138192671

1335242671

138202671

1339142671

1336122231

138192231

1335242231

138202231

133885381

133914381

13128381

27029892671

270236332671

270224102671

27029892231

270236332231

270224102231

27021710381

29522312381

2952127381

4461283321

446121531642

446115752872

446120992872

446126482872

446139192872

2513933301

25124413301

25123633301

25138773301

25137273301

25136973301

25117463301

251393274

2513727274

2513697274

2511746274

251393381

2513931641

25123631641

25138771641

25137271641

25136971641

25117461641

25135511641

25112841641

2513933654

25123633654

25138773654

25137273654

25136973654

25117463654

2513933041

25123633041

25138773041

25137273041

25136973041

25117463041

2513934562

25123634562

25137274562

25136974562

25117464562

2513934981

25124414981

25123634981

25138774981

25137274981

25136974981

25117464981

25135514981

25112844981

25130164981

2513932871

25124412871

25123632871

25138772871

25137272871

25136972871

25117462871

2513933911

25124413911

25123633911

25138773911

25137273911

25136973911

25117463911

25135513911

25112843911

25123083911

25130163911

25124414842

25123634842

25138774842

25137274842

25136974842

25117464842

251393182

2512441182

2512363182

2513877182

2513727182

2513697182

2511746182

141139142671

141126222231

141117562231

141137152231

14112312381

1411127381

14113914381

14112622381

14111756381

14113715381

383128752192

383119692192

2701283321

141223023301

141232323301

141230792192

1412132721

28112792192

28123614041

252283321

44624372191

44624373341

(5)对任意两个车站m,n,若没有通过一次转车而到达两站的线路,编写通过2次转车而到达两站的M文件

functionLz=ff4(n,m)

A=[…………………]

L1=ff1(n);

L2=ff1(m);

k=length(L1);h=length(L2);

LL=0;

u=0;

fori=1:

k

forj=1:

h

ifL1(i)==L2(j)

u=u+1;

LL(u)=L1(i);

end

end

end

ifLL~=0

Lz=LL;

u

return

end

LL1=0;

u=0;

fori=1:

k

A1=A(L1(i),:

);

forj=1:

h

A2=A(L2(j),:

);

forl=1:

86

forg=1:

86

if(A1(l)==A2(g))&(A1(l)>0)

u=u+1;

LL1(u,1)=L1(i);LL1(u,2)=L2(j);LL1(u,3)=A1(l);

end

end

end

end

end

ifLL1~0

Lz=LL1;

u

return

end

Ax=ff1(n);

Bx=ff1(m);

k=length(Ax);h=length(Bx);

LL2=0;

u=0;

fori=1:

k

a=0;

Ad1=0;

Ad1=A(Ax(i),:

);

a=Ad1>0;

aa=sum(a);

fors=1:

aa

Ax1=0;

Ax1=ff1(Ad1(s));

k1=length(Ax1);

forj=1:

h

b=0;

Bd1=0;

Bd1=A(Bx(j),:

);

b=Bd1>0;

bb=sum(b);

fort=1:

bb

Bx1=0;

Bx1=ff1(Bd1(t));

h1=length(Bx1);

forl=1:

k1

forg=1:

h1

ifAx1(l)==Bx1(g)

u=u+1;

LL2(u,1)=Ax(i);

LL2(u,2)=Ad1(s);

LL2(u,3)=Ax1(l);

LL2(u,4)=Bd1(t);

LL2(u,5)=Bx(j);

end

end

end

end

end

end

end

Lz=LL2;

u

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1