1、数学建模详解1. 编写函数M文件,对任意输入向量(矩阵)X,计算X的最大和最小元素.并将最大值赋予M,对应行、列下标赋值给I;将最小值赋予N,对应行、列下标赋值给J。%写M文件命名为math1.mX=input(please input:);M= max(max(X)N=min(min(X) a,b=find(X=M); c,d=find(X=N);I=a,bJ=c,d%输入命令测试math1.mplease input Matrix:1 2 3; 7 8 9;6 5 4M = 9N = 1I = 2 3J = 1 12. 根据世界19502005年人口数据(单位:千)(见表 Populati
2、on data)中的非洲(AFRICA)数据完成下列任务:(1)用3次多项式拟合人口数据,并在同一图中画出原数据的散点图和拟合结果图,将拟合结果与原数据进行比较。t=1950:2005; x= 224067.97 228944.869 233985.575 239208.038 244626.804 250253.059 256094.356 262154.89 268435.987 274937.081 281658.503 288604.469 295785.684 303220.497 310931.65 318937.034 327253.709 335885.283 344820.4
3、52 354039.863 363534.745 373305.407 383374.622 393783.578 404586.128 415824.0238 427506.0998 439630.994 452216.103 465278.237 478824.469 492857.319 507360.108 522294.269 537607.559 553254.734 569215.434 585474.333 601996.495 618744.027 635684.71 652799.872 670075.317 687490.535 705026.206 722668.717
4、 740413.971 758263.182 776217.489 794281.619 812465.619 830767.723 849205.927 867835.353 886727.428 905935.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)用最小二乘法根据带阻滞模型中人口函数进行拟合,并在同一图中画出原数据的散点图和拟合结果图,将拟合结果与原数据进行比较。%输入
5、函数M文件 function f=tc(x)t=0:55; c=224067.97 228944.869 233985.575 239208.038 244626.804 250253.059 256094.356 262154.89 268435.987 274937.081 281658.503 288604.469 295785.684 303220.497 310931.65 318937.034 327253.709 335885.283 344820.452 354039.863 363534.745 373305.407 383374.622 393783.578 404586.
6、128 415824.0238 427506.0998 439630.994 452216.103 465278.237 478824.469 492857.319 507360.108 522294.269 537607.559 553254.734 569215.434 585474.333 601996.495 618744.027 635684.71 652799.872 670075.317 687490.535 705026.206 722668.717 740413.971 758263.182 776217.489 794281.619 812465.619 830767.72
7、3 849205.927 867835.353 886727.428 905935.864 ;f=c-x(1)./(1+(x(1)/ 224067.97-1)*exp(x(2)*t) %带阻滞模型中人口函数format long%输入运行程序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
8、+008 * 5.165488861262176 -0.000000000257224%将拟合结果与原数据进行比较 %输入运行程序t=0:55; c=224067.97 228944.869 233985.575 239208.038 244626.804 250253.059 256094.356 262154.89 268435.987 274937.081 281658.503 288604.469 295785.684 303220.497 310931.65 318937.034 327253.709 335885.283 344820.452 354039.863 363534.7
9、45 373305.407 383374.622 393783.578 404586.128 415824.0238 427506.0998 439630.994 452216.103 465278.237 478824.469 492857.319 507360.108 522294.269 537607.559 553254.734 569215.434 585474.333 601996.495 618744.027 635684.71 652799.872 670075.317 687490.535 705026.206 722668.717 740413.971 758263.182
10、 776217.489 794281.619 812465.619 830767.723 849205.927 867835.353 886727.428 905935.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
11、.353335981843351e+0063. 分别用MATLAB和LINGO两种方法求解非线性规划s.t. F=1,1,1A=;b=-50,-10,-20,-15;lb=zeros3,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;endsetsdata:a=4 5 6 8;b=50 10 20 15;c=19;d=16;enddatamin=sum(m(i):x(i);for(n(i
12、):sum(m(j):x(j)*r(i,j)=b(i);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*r
13、12+5*r22+6*r32+8*r42=19;4*r13+5*r23+6*r33+8*r43=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=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);Endfree(x1);free(x2);free(x3);fre
14、e(r11);free(r12);free(r13);free(r21);free(r22);free(r23);free(r31);free(r32);free(r33);free(r41);free(r42);free(r43);End4公交车问题根据公汽线路信息数据解决下列问题:(1)将公汽线路信息数据导入Excel表;(2)根据公汽线路信息数据,编写对任意车站,寻找通过该站的汽车线路的M文件;%编写M文件命名为x1.mA=; m=input(please input starting station:);for i=1:929 for j=3:88 if A(i,j)=m B=A(i,
15、1) A(i,2) %返回该车站所在的路数,和上下行C=i j %返回该站在表格中的具体位置 end endend%命令行输入测试得出结果x1please input starting station:388B = 1 3C = 1 5B = 25 1C = 44 9B = 25 2C = 45 22B = 28 1C = 49 21B = 28 2C = 50 10B = 141 1C = 253 14B = 141 2C = 254 16B = 248 3C = 448 40B = 270 1C = 487 15B = 270 2C = 488 8B = 295 1C = 531 13B
16、= 295 2C = 532 8B = 348 2C = 630 36B = 383 1C = 686 14B = 383 2C = 687 8B = 446 1C = 798 8B = 446 2C = 799 23(3)编写M文件,对任意两个车站m,n,判断是否有线路通过这两车站,若有则编写寻找通过该站的汽车线路的M文件%编写M文件命名为x2.mA=.;m=input(please input starting station:);n=input(please input the terminal :); l=0; %光标放在初始处a,b=find(A=m); p,q=size(a);fo
17、r i=1:1:p for j=b(i)+1:1:88 if A(a(i),j)=n l=l+1; %光标依次下移 f(l)=a(i); end endendI=A(f,1), A(f,2)%命令行输入测试得出结果 (4)对任意两个车站m,n,若没有线路直接通过这两车站,编写通过一次转车而到达两站的M文件%编写M文件命名为x4.mA=.;m=input(请输入起点站:);n=input(请输入终点站:);a,b=find(A=m);p,q=size(a);c,d=find(A=n);f,g=size(c);s=0;if A(a(i),j)=nfor i=1:p for j=1:f for k=
18、b(i)+1:88 for t=3:d(j)-1 if A(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 endendendN=A(M,1),A(M,2),R,A(D,1),A(D,2) %起始站所在路、上下行、转车的站点、终点站所在路数、上下行%命令行输入测试得出结果x4请输入起点站:388请输入终点站:4N = 1 3 3612 267 1 1 3 819 267 1 1 3 3524 267 1 1 3 820 267 1 1 3 3914 26
19、7 1 1 3 3612 223 1 1 3 819 223 1 1 3 3524 223 1 1 3 820 223 1 1 3 3885 38 1 1 3 3914 38 1 1 3 128 38 1 270 2 989 267 1 270 2 3633 267 1 270 2 2410 267 1 270 2 989 223 1 270 2 3633 223 1 270 2 2410 223 1 270 2 1710 38 1 295 2 2312 38 1 295 2 127 38 1 446 1 2833 2 1 446 1 2153 164 2 446 1 1575 287 2 4
20、46 1 2099 287 2 446 1 2648 287 2 446 1 3919 287 2 25 1 393 330 1 25 1 2441 330 1 25 1 2363 330 1 25 1 3877 330 1 25 1 3727 330 1 25 1 3697 330 1 25 1 1746 330 1 25 1 393 27 4 25 1 3727 27 4 25 1 3697 27 4 25 1 1746 27 4 25 1 393 38 1 25 1 393 164 1 25 1 2363 164 1 25 1 3877 164 1 25 1 3727 164 1 25
21、1 3697 164 1 25 1 1746 164 1 25 1 3551 164 1 25 1 1284 164 1 25 1 393 365 4 25 1 2363 365 4 25 1 3877 365 4 25 1 3727 365 4 25 1 3697 365 4 25 1 1746 365 4 25 1 393 304 1 25 1 2363 304 1 25 1 3877 304 1 25 1 3727 304 1 25 1 3697 304 1 25 1 1746 304 1 25 1 393 456 2 25 1 2363 456 2 25 1 3727 456 2 25
22、 1 3697 456 2 25 1 1746 456 2 25 1 393 498 1 25 1 2441 498 1 25 1 2363 498 1 25 1 3877 498 1 25 1 3727 498 1 25 1 3697 498 1 25 1 1746 498 1 25 1 3551 498 1 25 1 1284 498 1 25 1 3016 498 1 25 1 393 287 1 25 1 2441 287 1 25 1 2363 287 1 25 1 3877 287 1 25 1 3727 287 1 25 1 3697 287 1 25 1 1746 287 1
23、25 1 393 391 1 25 1 2441 391 1 25 1 2363 391 1 25 1 3877 391 1 25 1 3727 391 1 25 1 3697 391 1 25 1 1746 391 1 25 1 3551 391 1 25 1 1284 391 1 25 1 2308 391 1 25 1 3016 391 1 25 1 2441 484 2 25 1 2363 484 2 25 1 3877 484 2 25 1 3727 484 2 25 1 3697 484 2 25 1 1746 484 2 25 1 393 18 2 25 1 2441 18 2
24、25 1 2363 18 2 25 1 3877 18 2 25 1 3727 18 2 25 1 3697 18 2 25 1 1746 18 2 141 1 3914 267 1 141 1 2622 223 1 141 1 1756 223 1 141 1 3715 223 1 141 1 2312 38 1 141 1 127 38 1 141 1 3914 38 1 141 1 2622 38 1 141 1 1756 38 1 141 1 3715 38 1 383 1 2875 219 2 383 1 1969 219 2 270 1 2833 2 1 141 2 2302 33
25、0 1 141 2 3232 330 1 141 2 3079 219 2 141 2 1327 2 1 28 1 1279 219 2 28 1 2361 404 1 25 2 2833 2 1 446 2 437 219 1 446 2 437 334 1(5)对任意两个车站m,n,若没有通过一次转车而到达两站的线路,编写通过2次转车而到达两站的M文件 function Lz=ff4(n,m)A= L1=ff1(n);L2=ff1(m);k=length(L1);h=length(L2);LL=0;u=0;for i=1:k for j=1:h if L1(i)=L2(j) u=u+1;
26、LL(u)=L1(i); end endendif LL=0 Lz=LL; u returnend LL1=0;u=0;for i=1:k A1=A(L1(i),:); for j=1:h A2=A(L2(j),:); for l=1:86 for g=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 endendif LL10 Lz=LL1; u returnendAx=ff1(n);Bx=ff1(m);k=length(Ax);h=length(Bx)
27、;LL2=0;u=0;for i=1:k a=0; Ad1=0; Ad1=A(Ax(i),:); a=Ad10; aa=sum(a); for s=1:aa Ax1=0; Ax1=ff1(Ad1(s); k1=length(Ax1); for j=1:h b=0; Bd1=0; Bd1=A(Bx(j),:); b=Bd10; bb=sum(b); for t=1:bb Bx1=0; Bx1=ff1(Bd1(t); h1=length(Bx1); for l=1:k1 for g=1:h1 if Ax1(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 endendendendendLz=LL2;u
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1