收藏 分销(赏)

数学建模考题.docx

上传人:s4****5z 文档编号:9007192 上传时间:2025-03-11 格式:DOCX 页数:8 大小:597.62KB
下载 相关 举报
数学建模考题.docx_第1页
第1页 / 共8页
数学建模考题.docx_第2页
第2页 / 共8页
点击查看更多>>
资源描述
数学建模考题答案 ********感谢赵汝强同学整理********* 一、选择题 1、 矩阵输入 2、 实验1(2) 随机生成4种类型的随机矩阵,编程求出其最大值及其所处的位置 % 要重复四次,使用自定义函数更方便,虽然函数只有两行。 x = rand(3) % [0,1] 均匀分布 [i,j,v] = myMax(x) x = randn(3) % 标准正态分布 [i,j,v] = myMax(x) x = exprnd(1,3) % 均值为1的指数分布 [i,j,v] = myMax(x) x = poissrnd(1,3) % lambda为1的poisson分布 [i,j,v] = myMax(x) function [i,j,v] = myMax(x) % 编程求最大值所在的位置 v = max(x(:)); [i,j] = find(x == v); 3、实验1(3)画出 y = x*sin(x) 在[0,100] 上的图,求出局部极小值的位置,并统计出现局部极小值出现的次数。 h = 1e-2; % 可以调整步长来调整结果的精度。 x = 0:h:100; y = x.*sin(x); xmin = []; %存放局部极小点的x坐标 ymin = []; %存放局部极小点的y坐标 for i = 2:length(x)-1 if y(i)<y(i-1) && y(i)<y(i+1) xmin = [xmin x(i)]; ymin = [ymin,y(i)]; end end plot(x,y,'b'); hold on; plot(xmin,ymin,'r*'); disp('局部极小点个数'); disp(length(xmin)) 4、实验2(3)用两种方法画出半径为1的球面。 % 方法1 figure, sphere(100) % 100表示画出的曲面小方块为100*100 % 方法2 给出参数方程,使用ezsurf,最不容易出错的方法。 r = 1; x = @(theta,phi) r*sin(theta)*cos(phi); y = @(theta,phi) r*sin(theta)*sin(phi); z = @(theta,phi) r*cos(theta); figure, ezsurf(x,y,z,100) % 100表示画出的曲面小方块为100*100 % 方法3 这种写法比教材上好懂一点。 [theta,phi] = meshgrid(linspace(0,2*pi,100)); % 100表示画出的曲面小方块为100*100 x = r*sin(theta).*cos(phi); y = r*sin(theta).*sin(phi); z = r*cos(theta); figure,surf(x,y,z); 5、实验3(1)1. 2011高教社杯全国大学生数学建模竞赛B题附件2中有582个路口信息,请求出各个区内部,任意两个路口之间的直线距离。 赛题链接: 解答说明: (1) 附件是Excel文件,如果对Excel文件不熟悉,可以将数据拷贝到txt文件里面,使用load,最简单。 如果使用xlsread,请参考教材p425页的例子或者查找matlab帮助。 (2) 因为要求6个区内部点之间的直线距离,如果直接写成程序段,这个程序段会重复6次,所以写出函数的形式,然后调用6次是比较合适的做法。函数见myDis.m (3) 不同的区之间的数据最好是能够使用程序来自动区分,而不是靠人来指定范围。 % 不同路口的坐标和路口所在的坐标, % 第一个输出数字,第二输出文本 [Points,Districts] = xlsread('cumcm2011B附件2_全市六区交通网路和平台设置的数据表.xls', '全市交通路口节点数据','B2:D583'); %% 求出6个区的起始和终点的序号。 % 竞赛时,如果编程不熟练,直接手工查找也花不了多长时间,可能比编程效率还高。 % 下面用编程的方法解决。 % 将细胞数组转换为简单字符串。 d = []; for i = 1:length(Districts) d = [d,Districts{i}]; end % d会变成'AA.....FF' pos = zeros(6,2); % pos 中存储6个区的起始和终点位置。 ch = 'A'; for i = 1:6 p = find(d==ch); pos(i,1) = p(1); % 起始位置 pos(i,2) = p(end); % 终点位置 ch = ch + 1; end %% 如果不使用上面代码,直接手工做,应该类似于下面的写法。 % pos = [1,92; 93,165; 166,319; 320,371; 372,474; 475,582]; % 以这个问题而言,手工效率更高。如果城市区达到100个左右,手工会是一件很痛苦的事情,而且 % 容易出错。 %% 求6个区,每一个区内部的路口之间的直线距离。 ch = 'A'; for i = 1:size(pos,1) part_points = Points(pos(i,1):pos(i,2),:); % 取出第i个区的所有点坐标 dis = myDis(part_points); dlmwrite(['区间',char(ch+i-1),'距离.txt'],dis,'delimiter','\t'); end 6、实验5(1) a=zeros(9); %容量矩阵初始化 a(1,[2:4])=[20,20,100]; %输入各弧上的容量 a(2,[5 6 8])=[30,10,40]; a(3,[7,8])=[10,50]; a(4,[5:8])=[20,10,40,5]; a([5:8],9)=[20,20,60,20]; a=sparse(a); %构造工具箱需要的稀疏矩阵 [b,c]=graphmaxflow(a,1,9) %调用工具箱求最大流的命令 7、6(1) % 教材习题中的数据可以从光盘中电子版的习题里面直接拷贝出来,存放在txt文件中。 x = 0:400:5600; y = 4800:-400:0; [xx,yy] = meshgrid(x,y); z = load('data.txt'); surf(xx,yy,z) % 大家可以看到曲面非常的不光滑。 % 待插值的数据 x1 = 0:50:5600; y1 = 4800:-50:0; % 请完成剩下的任务,完成插值,函数interp2, z1=interp2(x,y,z,x1,y1,'spline'); [xx2,yy2]=meshgrid(x1,y1); % 画出曲面,函数surf figure; surf(xx2,yy2,z1) % 画出等高线 contour figure; 8、实验7(1) range = 1; % 大家可以修改range,尝试 3,5,10,看看结果是否有差异 step = 1e-1; x = -range:step:range; y = x.^3- 6*x.^2 + 5*x -3; % 真实数据 figure,plot(x,y); y2 = y + randn(size(x)); % 干扰数据 figure,plot(x,y2,'b'); % 通过x,y2拟合出多项式系数。 建议使用polyift c2 = polyfit(x,y2,2); c3 = polyfit(x,y2,3); c4 = polyfit(x,y2,4); % 结果 yp2 = polyval(c2,x); yp3 = polyval(c3,x); yp4 = polyval(c4,x); %在同一幅图上画出拟合的结果 2次多项式 hold on; plot(x,yp2,'r'); %在同一幅图上画出拟合的结果 3次多项式 plot(x,yp3,'b--o'); %在同一幅图上画出拟合的结果 4次多项式 plot(x,yp4,'c--*'); 9、实验7(2) x = 1:8; y = [15.3 20.5 27.4 36.6 49.1 65.6 87.87 117.6 ]; figure,plot(x,y,'r*'); % 使用方法1拟合 lsqcurvefit f = @(ab,x) ab(1)*exp(ab(2)*x); ab = lsqcurvefit(f,rand(2,1),x,y); y2 = ab(1)*exp(ab(2)*x); % 使用方法2拟合,将指数转换为线性,然后使用polyfit c = polyfit(x,log(y),1); b2 = c(1); a2 = exp(c(2)); y3 = a2*exp(b2*x); %在同一幅图上画出拟合的结果 hold on; plot(x,y2,'bo'); plot(x,y3,'g+'); 10、实验9(1) 问题1 求微分方程组初值问题 式中,,,,。 选用ode45函数计算,其相对误差限为,绝对误差限为,分别画出初值条件为,,,,解的相平面轨迹图。 options = odeset('RelTol',1e-5,'AbsTol',[1e-6 1e-6]); [t1,y1] = ode45(@f91,[0 12],[1,0.3],options); [t2,y2] = ode45(@f91,[0 12],[1,0.5],options); [t3,y3] = ode45(@f91,[0 12],[1,0.7],options); [t4,y4] = ode45(@f91,[0 12],[1,0.9],options); [t5,y5] = ode45(@f91,[0 12],[1,1.1],options); figure,plot(y1(:,1),y1(:,2)); hold on; plot(y2(:,1),y2(:,2)); plot(y3(:,1),y3(:,2)); plot(y4(:,1),y4(:,2)); plot(y5(:,1),y5(:,2)); function dx =f91(t,x) dx = zeros(2,1); dx(1) = 2*x(1)-x(1)*x(2); dx(2) = -x(2)+2*x(1)*x(2); 二、模型 1.实验4(1)(2) 如何选择物流中心,使得成本最小而且能够覆盖所有街区?建立模型,给出Lingo代码,给出结果。 模型: sets: Cri/1..10/:x,w; Blo/1..12/; links(Cri,Blo):a; endsets data: a = 0 0 1 1 1 1 1 1 0 1 0 0 0 0 1 1 1 0 1 1 1 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 1 0 1 0 1 0 1 0 0 1; w = 56, 45,78,80,90,10,40,65,45,56; enddata min = @sum(Cri(i):x(i)*w(i)); !@for(Cri(i):@bnd(0,x(i),1)); @for(Cri(i):@bin(x(i))); @for(Blo(j): @sum(Cri(i):x(i)*a(i,j))>=1); 4(2) 2、实验8(3)
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服