2012年数学建模集训小题目
1.(1)编写下列一元函数的函数M文件
?x?x,x?0,?esin f(x)??
2??2?cosx,x?0.2要求输入变量可以取向量。
(2)编写脚本M文件,要求调用上述函数文件作出函数f(x)在区间[?4,4]上图形。 2. 已知如下两类曲线
标准正态分布的概率密度曲线y?四叶玫瑰线??sin2?;
(1)在同一个图形窗口画出上述两类曲线,并进行标注。
(2)在同一个图形窗口内用subplot命令,分成1×2的子窗口,分别做出上述两类曲线,并为每个图形加上标题。 3. 作出下列曲面的三维图形
(1)z?sin(?12?e?x22;
x2?y2);
?x?(1?cosu)cosv,u?(0,2?),?(2)环面:?y?(1?cosu)sinv,v?(0,2?),
?z?sinu.?4.生成一个10个数据的随机向量,绘制对应的直方图,并把画出的图形保存为jpg文件。 5. 编程求解线性规划
maxz?4x1?10x2?3x3?2x4,s.t.?2x1?x2?x4?0,2x1?3x2?16,3x1?4x2?24,0?x3?5,x1?0,x2?0,x4?0.6. 编程求解下列最小值问题
3min4x1?ax1?2x2, s.t.x1?x2?4,2x1?x2?5,?x1?bx2?2, x1,x2?0,a?0,1,2,3,4;b?2,4,6,7.
22??x1?x2?47. 先用解析方法求出方程组?2的精确解,再用LINGO软件解这个方程组,并2??x1?x2?1与精确解进行比较,如何才能用LINGO求出这个方程组的所有解?
8. 用LINGO编程,并将最终运算结果保存为文本文件。
min132x11?100x13?103x14?91x22?100x23?100x24?106x31?89x32?100x33?98x34 s.t.x11?x21?x31?62,x12?x22?x32?83,x13?x23?x33?39,
x14?x24?x34?91, xij?0,i,j?1,2,3,4.
9.用LINGO软件求解:
max z?cTx?1TxQx,2s.t. ?1?x1x2?x3x4?1, ?3?x1?x2?x3?x4?2, x1,x2,x3,x4?{?1,1}.
T其中c?[6,8,4,2],Q是三对角线矩阵,主对角线上元素全为-1,两条次对角线上元素全为2。
10. 甲、乙两个煤矿分别生产煤500万吨,供应A,B,C三个电厂发电需要,各电厂用量分别为300,300,400(万吨)。已知煤矿之间、煤矿与电厂之间以及各电厂之间相互距离(单位:公里)如表1,表2,表3中所示。又煤可以直接运达,也可经转运抵达,试确定从煤矿到各电厂间煤的最优调运方案。
表1 两煤矿之间的距离 甲 乙 甲 乙 A B C 甲 0 100 A 150 60 A 0 50 100 乙 120 0 B 120 160 B 70 0 150 C 80 40 C 100 120 0 表2 从两煤矿到三个电厂之间的距离
表3 三个电厂之间的距离 解:
依次以甲乙两个煤矿和A,B,C三个电厂作为顶点集构造赋权有向图G?(V,E,W),这里V?{v1,v2,?,v5},v1,v2表示甲乙两个煤矿,v3,v4,v5分别表示A,B,C三个电厂,权重为两个顶点之间的距离,其中
?0?100?W????????????12015012080?06016040????070100?,
???500120???1001500??应用Floyd算法,求出所有的顶点对之间的最短距离,然后提出我们需要的两个煤矿到
A,B,C三个电厂最短距离,见表4。顶点之间的相对位置见图2和图3。
表2 从两煤矿到三个电厂的最短距离
甲 乙 B 160 120 150 70 Inf 130 120 70 150 A 150 60 B 120 130 C 80 40 B乙乙 120 120 40 120 Inf 120 Inf 40 C 80 100 100 100 Inf Inf 80 100 C甲 60 150 50 100 甲 Inf 150 60 50 100 图2 五个顶点之间的相对位置 图3 任意顶点对之间的最短距离 分别用i?1,2表示甲乙两个煤矿,j?1,2,3表示A,B,C三个电厂,cij表示第i个煤矿到第j个电厂的最短距离,xij表示第i个煤矿到第j个电厂的调运量。ai(i?1,2)表示第i个煤矿的产量,bj(j?1,2,3)表示第j个电厂的需求量。
这里是产量和需求平衡的运输问题,目标函数是使调运的总吨公里数最小。约束条件分成两类,产量约束和需求约束。
建立如下的数学规划模型
AAminz???cijxij,
i?1j?123?3??xij?ai,i?1,2,?j?1??2s.t. ??xij?bj,j?1,2,3,
?i?1?xij?0,i?1,2;j?1,2,3.???利用Lingo程序求得最优调运方案见表3。调运的总吨公里数为78000。
表3 从两煤矿到三个电厂的最优调运量(单位:万吨) A B C 甲 乙 0 300 300 0 200 200
计算及画图的Matlab程序如下 clc, clear
w=zeros(5); %邻接矩阵初始化
w(1,2)=120; w(1,[3:5])=[150 120 80]; %逐个顶点输入邻接矩阵的取值 w(2,1)=100; w(2,[3:5])=[60 160 40]; w(3,[4 5])=[70,100]; w(4,[3 5])=[50 120]; w(5,[3 4])=[100,150];
w=sparse(w); %把邻接矩阵转化为稀疏矩阵 d=graphallshortestpaths(w)
NodeIDs={'甲','乙','A','B','C'};%节点标签,也就是h.Nodes(i).ID属性值 h=view(biograph(w,NodeIDs,'ShowWeights','on')) set(h.Nodes,'shape','circle'); %顶点画成圆形 h.EdgeType='segmented'; %边的连接为线段 h.LayoutType='equilibrium'; dolayout(h) %刷新图形
h2=view(biograph(d,NodeIDs,'ShowWeights','on')) h2.EdgeType='segmented'; %边的连接为线段 h2.LayoutType='equilibrium'; dolayout(h2)
求解线性规划的Lingo程序如下 model: sets:
kuang/1 2/:a; chang/1..3/:b;
link(kuang,chang):c,x; endsets data:
a=500 500; b=300 300 400; c=150 120 80 60 130 40; enddata
min=@sum(link:c*x);
@for(kuang(i):@sum(chang(j):x(i,j))=a(i)); @for(chang(j):@sum(kuang(i):x(i,j))=b(j)); end
11.编写求所有的“水仙花数”的Matlab程序。所谓的“水仙花数”是指一个三位数,其各位数字的立方之和等于该数本身,如153?1?5?3。 12. 求函数y?0.2x?e13. 解方程组
?0.5x333sin(x??/6)在x?2附近的零点。
?sinx?y2?lnz?7,?3?3x?2y?z?1?0, ?x?y?z?5.?14. 已知实验数据如下:
xi123456
yi6.427.208.589.109.7010.22(1)设数据关系为y?ae,试用最小二乘法估计参数a,b;
bx?分别为参数a,?,b?e的图形(a(2)在同一图形窗口作出原始数据的散点图及函数y?ab的估计值)。
15.用Matlab命令randint(5,2,[0,10])生成5?2的随机矩阵,其中矩阵第1列的数据作为x的观测值,矩阵第2列的数据作为y对应的观测值,来拟合二次曲线方程
ax2?bxy?cy2?3,
并画出拟合的二次曲线。
16.利用表4中的数据,求解下列问题 (1)求y关于x1,x2的线性回归方程
?bxy?c0?c1x1?c2x2,
计算c0,c1,c2的估计值。
(2)分别利用Matlab的命令lsqcurvefit和nlinfit拟合非线性函数
y?eax1sin(bx2)?cx1cos(x2).
表4 已知数据资料 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 y x1 x2 序号 14 15 16 17 18 19 20 21 22 23 24 y x1 x2 15.02 23.73 5.49 12.62 22.34 4.32 14.86 28.84 5.04 13.98 27.67 4.72 15.91 20.83 5.35 12.47 22.27 4.27 15.80 27.57 5.25 14.32 28.01 4.62 13.76 24.79 4.42 15.18 28.96 5.30 14.20 25.77 4.87 17.07 23.17 5.80 15.40 28.57 5.22 15.94 23.52 5.18 14.33 21.86 4.86 15.11 28.95 5.18 13.81 24.53 4.88 15.58 27.65 5.02 15.85 27.29 5.55 15.28 29.07 5.26 16.40 32.47 5.18 15.02 29.65 5.08 15.73 22.11 4.90 14.75 22.43 4.65 17.已知函数
y?(x2?2x?3)e?2x,
给定x的取值从0到1步长为0.1的数据点,用三次样条函数求该函数的导数,并且与理论
结果进行比较。 18. 已知函数
y?(x2?2x?3)e?2x,
给定x的取值从0到1步长为0.1的数据点,用三次样条函数求该函数在区间[0,1]上的积分,
并且与理论结果进行比较。 19.画出函数z?xe2y?x2?y2的梯度场。
20.求函数z?xe在点P(1,0)处沿着从点P(1,0)到点Q(2,?1)的方向导数。 21.已知