《数学模型与数学软件》课程综合训练.docx
《《数学模型与数学软件》课程综合训练.docx》由会员分享,可在线阅读,更多相关《《数学模型与数学软件》课程综合训练.docx(24页珍藏版)》请在冰豆网上搜索。
![《数学模型与数学软件》课程综合训练.docx](https://file1.bdocx.com/fileroot1/2023-2/25/c50c1a6c-254a-4d10-9ad5-d31a670002ae/c50c1a6c-254a-4d10-9ad5-d31a670002ae1.gif)
《数学模型与数学软件》课程综合训练
兰州理工大学
理学院
2014年秋季学期
《数学模型与数学软件》课程综合训练
题目一:
MATLAB程序运行及翻译
题目二:
求解省时路线问题
题目三:
大地污染预报问题
专业班级:
2012级信息与计算科学2班
姓名:
林承勇
学号:
12540236
资料袋序号:
62
指导教师:
惠富春
目录
第一部分训练任务简介2
任务一:
MATLAB程序运行及翻译2
任务二:
求解省时路线问题2
任务三:
大地污染预报问题2
第二部分训练任务解答3
任务一:
MATLAB程序运行及翻译3
2.1.1最小线性规划3
2.1.2最大线性规划3
2.1.3非线性问题最优求解4
2.1.4二维作图5
2.1.5曲线拟合5
2.1.6作函数图与点图6
任务二:
求解省时路线问题7
2.2.1问题重述7
2.2.2问题等价转换7
2.2.3符号定义8
2.2.4模型建立级算法8
任务三:
大地污染预报问题10
2.3.1对问题进行如下假设10
2.3.2符号定义10
2.3.3模型建立及解答10
第三部分重要作品展示(数学建模论文)12
大地污染预报问题12
3.1.1摘要12
3.1.2问题重述13
3.1.3模型假设13
3.1.4符号说明13
3.1.5问题分析13
3.1.6模型的建立与求解14
3.1.7参考文献15
3.1.8课程设计总结15
3.1.9附录16
第四部分附录17
4.1求解省时路线问题程序代码17
第一部分训练任务简介
任务一:
MATLAB程序运行及翻译
学习数学软件(MathType5.2、MATLAB 、Maple、Mathematica4.0、LINGO8.0)安装、调试;基本命令使用(变量赋值、定义函数、过程控制、绘图命令、拟合、线性规划、非线性规划、优化命令);高等数学实验(函数,极限,求导,积分,解微分方程);线性代数实验(矩阵基本运算,线性方程组求解,解超定方程组,特征值,特征向量)。
并在提交的综合训练文档附录中的给出下列6个程序的译文(数学模型、算例)及解。
任务二:
求解省时路线问题
图
(1)、图
(2)(注:
自拟示意图)是一城市街道示意图.某人要从A点行驶到B点,每条街道旁边的数字表示经过这条街道所需的时间(单位:
分钟)。
另外,每次右转弯需要1分钟,左转弯需要2分钟.试建立一个数学模型,给出求省时路线的算法,并求出图
(1)的省时路线及其时间。
任务三:
大地污染预报问题
背景在实践中有许许多多重要但在理论上却困难的问题,如污染的评估问题。
这种问题之一就是根据只是在被怀疑为已污染地区的周围而不必直接在该地区中测得的很少的测量数据来导出不易进入的地下的渗漏污染物的位置和数量、以及污染源的精确估计。
通过建立一个数学模型来决定在由该数据集来表示的区域和时间里是否有某种新的污染物产生。
若有,试识别新的污染物并估计它们的污染源的位置和时间。
例子设一体积为
的土地受到某种物质的污染,污染物均匀地分布在土地中,土地更新的速率为
,并假设土地的体积没有变化,试建立大地污染浓度的数学模型。
(1)某块土地体积为
,土地的更新率为
。
这块土地现阶段的污染浓度为10%,新增土壤的污染浓度保持为5%,预测这块土地污染的变化趋势。
(2)某块土地体积为
,土地的更新率为
。
试分析和预报当污染源被切断后,其污染物浓度下降的规律,并指出浓度降为原来的5%所需时间。
第二部分训练任务解答
任务一:
MATLAB程序运行及翻译
2.1.1最小线性规划
c=[6;6;16;16;10;10;15;15];%目标函数系数(投入系数)
A=[0.5/1000-1.5/1000-0.5/1000-1.5/1000;01.5/1000-0.5/10000.5/1000-0.5/100;00000011;-10-10-10-10;0-10-10-10-1];
b=[0;0;50;-100;-200];
Aeq=[1,1,1,1,1,1,1,1];
beq=[350];
lb=zeros(8,1);
[x,fval]=linprog(c,A,b,Aeq,beq,lb)%目标为最小的线性规划
数学模型:
结果:
x=
75.0000
0.0000
0.0000
50.0000
75.0000
100.0000
0.0000
50.0000
fval=
3.7500e+003
2.1.2最大线性规划
c=[400,1000,300,-200];%目标函数系数(产出系数)
A=[2,3,1,0;3,4,0,0;0,0,1,0];%约束条件系数
b=[16;24;5];
Aeq=[0,-2,1,1];
beq=[0];
xL=[0,0,0,0];%x取值范围的最小值
xU=[];%x取值范围的最大值
x0=[0,0,0,0];%x取迭代初始值
[t,w]=linprog(-c,A,b,Aeq,beq,xL,xU);%目标为最小的线性规划
t=t,y=-w%等价转换目标为最大并输出
数学模型:
结果:
t=
0.2379
3.5081
5.0000
2.0162
y=
4.7000e+003
2.1.3非线性问题最优求解
functionf=fun3(x)
f=-x
(1)-2*x
(2)+(1/2)*x
(1)^2+(1/2)*x
(2)^2;
x0=[1;1];
A=[23;14];
b=[6;5];
Aeq=[];
beq=[];
VLB=[0;0];
VUB=[];
[x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,VLB,VUB)
数学模型:
结果:
x=
0.7647
1.0588
fval=
-2.0294
2.1.4二维作图
x=linspace(0,2*pi,30);
y=sin(x);
z=cos(x);
plot(x,y,'r',x,z,'go'),
gtext('sin(x)');
gtext('cos(x)');
数学模型:
在图形中进行标注
结果
图3:
二维作图
2.1.5曲线拟合
x=[1:
1:
12];y=[9,10,11,12,13,14,13,12,11,9,10,11];a1=polyfit(x,y,3);%三次多项式拟合系数降幂排列
a2=polyfit(x,y,5);%五次多项式拟合
a3=polyfit(x,y,8);%八次多项式拟合
b1=polyval(a1,x);%三次拟合多项式的值
b2=polyval(a2,x);b3=polyval(a3,x);r1=sum((y-b1).^2);%三次多项式误差平方和
r2=sum((y-b2).^2);%五次次多项式误差平方和
r3=sum((y-b3).^2);%八次多项式误差平方和
plot(x,y,'*')用*画出x,y图像
holdon
plot(x,b1,'r')用红色线画出x,b1图像
holdon
plot(x,b2,'g')用绿色线画出x,b2 图像
holdon
plot(x,b3,'b:
o')用蓝色o线画出x,b3图像
数学模型:
根据表
(1)绘制拟合图形
表
(1)
x
1
2
3
4
5
6
7
8
9
10
11
12
y
9
10
11
12
13
14
13
12
11
9
10
11
1)按三次多项式,五次多项式,八次多项式拟合数据
2)用拟合函数求出x=[1:
12]拟合多项式值
3)分别求其平方误差
4)同一窗口绘制拟合图形三次拟合用红线,五次拟合用绿线,八次拟合用蓝线
结果
图4:
曲线拟合
2.1.6作函数图与点图
clear,
forn=1:
200
x=n;
t=sin(n*pi/50);
plot(n,t,'*'),holdon
plot(x,3*cos(2*t).*exp(t),'-')
end,
数学模型:
在同一窗口绘制n与函数
的图形并同时绘制x与点
的图形,其中:
1结果:
图5:
函数图与点图
任务二:
求解省时路线问题
2.2.1问题重述
求解省时路线问题
8
C
4
A
B
H
A
B
54
3
F
3
D
8
C
4
4
5
6
6
3
3
545
457
4
5
6
6
3
3
3
545
图
(1)、图
(2)是一城市街道示意图.某人要从A点行驶到B点,每条街道旁边的数字表示经过这条街道所需的时间(单位:
分钟)。
另外,每次右转弯需要1分钟,左转弯需要2分钟。
试建立一个数学模型,给出求省时路线的算法,并求出图
(1)的省时路线及其时间。
2.2.2问题等价转换
上述问题可等价为求一个带权无向图中一个点到另一个点的最短距离。
因此,可采用树生长的过程来求指定顶点到其余顶点的最短路。
2.2.3符号定义
start:
起点;
terminal:
终点;
min1:
最短距离;
path1:
最短路径;
path(i,j):
表示i到j的路径上i的后继点;
D(i,j):
表示i到j的时间;
a(i,j):
输入的带权邻接矩阵。
2.2.4模型建立级算法
2.2.4.1Dijkstra算法
算法思路:
采用标号作业法,每次迭代产生一个永久标号,从而生长一颗以v0为根的最短路树,在这颗树上每个顶点与根节点之间的路径皆为最短路径。
算法步骤:
S:
具有永久标号的顶点集;
l(v):
v的标记;f(v):
v的父顶点,用以确定最短路径;
输入加权图的带权邻接矩阵w=[w(vi,vj)]nxm。
1)初始化令l(v0)=0,S=;vv0,l(v)=;
2)更新l(v),f(v)
寻找不在S中的顶点u,使l(u)为最小。
把u加入到S中,然后对所有不在S中的顶点v,如l(v)>l(u)+w(u,v),并且考虑好左转还是右转,左转值加2,右转则加1;则更新l(v),f(v),即l(v)l(u)+w(u,v),f(v)u;
3)重复步骤2),直到所有顶点都在S中为止。
对图
(1)进行求解过程如表
(2)所示:
表
(2)
次数
ABCDEFGHI
1
2
3
4
5
6
7
8
9
10
被标记次序
192574863
所以最短时间的路径为A→I→F→E→B最短时间需要19分钟
图6:
最短路径
2.2.4.2Floyd算法
算法思想:
直接在图的带权邻接矩阵中用插入顶点的方法依次递推地构造出n个矩阵D
(1),D
(2),…,D(n),D(n)是图的距离矩阵,同时引入一个后继点矩阵记录两点间的最短路径。
算法步骤:
d(i,j):
i到j的距离;
path(i,j):
i到j的路径上i的后继点;
输入带权邻接矩阵a(i,j)。
1)赋初值
对所有i,j,d(i,j)a(i,j),path(i,j)j,k=l。
2)更新d(i,j),path(i,j)
对所有i,j,
若j-k>k-i并且d(i,k)+d(k,j)+1若j-k否则d(i,j)d(i,k)+d(k,j);
path(i,j)path(i,k),kk+1
3)重复2)直到k=n+1
源程序见附录
任务三:
大地污染预报问题
2.3.1对问题进行如下假设
1、土地的更新速率为常量,土地体积为常量;
2、流失土壤和新增土壤污染浓度为常量。
2.3.2符号定义
:
t时刻土地染浓度
:
初始土地的污染浓度
:
时间,以天作单位
:
新增土壤的污染浓度
:
土地的更新速率
:
土地的体积
2.3.3模型建立及解答
设t时刻土地的污染物浓度为W(t),考虑时间区间
并利用质量守恒定律:
内土地污染浓度的变化量=新增土壤的污染量—流失土壤的污染量。
用数学表达式表示为:
于是得,令
其中
求得
①
问题
(一)把新增土壤污染浓度m=5%,初始土地的污染浓度wo=10%,土地体积V=
,土地更新率r=
带入①式中得到这块土地污染的变化趋势为:
②
问题
(二)把新增土壤污染浓度m=0,土地体积V=
,土地更新率r=
,t时刻土地染浓度w(t)=5%wo带入①式中得到浓度降为原来的5%所需时间为:
t=398.3(天)
第三部分重要作品展示(数学建模论文)
大地污染预报问题
3.1.1摘要
随着市场经济和现在工业的飞速发展,人类面临了直接危害人类生存的新的问题——环境污染,为了治理污染,提出治理污染的新的方案,我们必须建立客观合理的数学模型来解决现实问题。
在实践中有许许多多重要但在理论上却困难的问题,如污染的评估问题。
这种问题之一就是根据只是在被怀疑为已污染地区的周围而不必直接在该地区中测得的很少的测量数据来导出不易进入的地下的渗漏污染物的位置和数量、以及污染源的精确估计。
通过建立一个数学模型来决定在由该数据集来表示的区域和时间里是否有某种新的污染物产生。
若有,试识别新的污染物并估计它们的污染源的位置和时间。
通过对问题的分析,我们利用微积分方程的求解方法,得出土地污染变化的结果,问题
(一)土地污染浓度变化趋势为
;问题
(二)下降到原来的5%所需时间为398.3120天。
在模型建设中我们采用了比较理想的求解方法,用MATLAB软件进行求解,在实际中还是比较有指导意义的。
关键词:
土地污染、微积分方程、MATLAB软件
3.1.2问题重述
设一体积为
的土地受到某种物质的污染,污染物均匀地分布在土地中,土地更新的速率为
,并假设土地的体积没有变化,试建立大地污染浓度的数学模型。
(1)某块土地体积为
,土地的更新率为
。
这块土地现阶段的污染浓度为10%,新增土壤的污染浓度保持为5%,预测这块土地污染的变化趋势。
(2)某块土地体积为
,土地的更新率为
。
试分析和预报当污染源被切断后,其污染物浓度下降的规律,并指出浓度降为原来的5%所需时间。
3.1.3模型假设
1、土地的更新速率为常量,土地体积为常量;
2、流失土壤和新增土壤污染浓度为常量。
3.1.4符号说明
:
t时刻土地染浓度
:
初始土地的污染浓度
:
时间,以天作单位
:
新增土壤的污染浓度
:
土地的更新速率
:
土地的体积
3.1.5问题分析
问题
(一)预测土地污染的变化趋势,由于流失土壤和新增土壤的污染浓度不同,我们在考虑此问题时,运用微积分方程和质量守恒定律得出土地污染浓度与已知量之间的关系;问题
(二)污染源被切断的情况,即土地的污染浓度不再改变,即m=0,由于问题
(二)给出污染物浓度下降到原来的5%,从而可以求得所需的时间。
3.1.6模型的建立与求解
设t时刻土地的污染物浓度为W(t),考虑时间区间
并利用质量守恒定律:
内土地污染浓度的变化量=新增土壤的污染量—流失土壤的污染量。
用数学表达式表示为:
于是得,令
其中
求得
①
问题
(一)把新增土壤污染浓度m=5%,初始土地的污染浓度wo=10%,土地体积V=
,土地更新率r=
带入①式中得到这块土地污染的变化趋势为②式:
②
问题
(二)把新增土壤污染浓度m=0,土地体积V=
,土地更新率r=
,t时刻土地染浓度w(t)=5%wo带入①式中得到浓度降为原来的5%所需时间为:
t=398.3(天)
3.1.7参考文献
[1] 周义仓, 赫孝良, 数学建模实验[M], 西安:
西安交通大学出版社, 2007.
[2] 李志林, 欧宜贵, 数学建模及典型案例分析[M], 北京:
化学工业出版社, 2007.
[3] 姜启源,《数学模型》(第三版),北京:
高等教育出版社,2003。
3.1.8课程设计总结
数学建模是一种运用数学符号,数学式子,计算机程序等相结合的对实际问题做出规划而得出最佳的解决方法。
不论是用数学方法解决在科技和生产领域解决哪类生产实际问题,还是与其他学科相结合形成交叉学科,首先和关键一步是建立研究对象的数学模型,并加以计算求解,我就简单说明一下具体的操作方法:
首先是模型的准备,了解问题的实际背景,明确其实际意义,掌握对像的各种信息用数学语言来描述问题。
第二步是模型的假设,根据实际问题的特征和建模的目的,对问题做出必要的简化,并用精准的语言做出恰当的假设。
第三步是模型的建立,在假设的基础上,用适当的数学工具来刻划各变量之间的数学关系,建立相应的数学架构。
第四步是模型的求解,利用获取的数学资料,对模型所有参数做出计算。
第五步是模型的分析,对所得的结果做出数学上的分析。
第六步是模型检测,将模型的分析结果与实际情况进行比较,以此来确定模型的合理性,如果模型与实际比较吻合,则要对计算结果给出其实际含义,并做书解释。
第七步是模型应用,应用的方式因问题的性质和建模的目的而异。
通过数天的课程设计我学到了很多,特别事独立完成任务的能力。
本次的题目是土地污染预测问题,此问题与现实生活当今社会现状密切相关。
但是由于我个人水平有限,不过通过老师的解答和资料的查找,问题得到了解决。
我相信本次课程设计之后,我的能力能够得到很大的提高,我对数学建模会有更大的认知度,相信在这次课程设计中学习到的知识在以后的学习生活中一定会让我受益不少,在此感谢老师一直以来对我的帮助。
3.1.9附录
用MATLAB解问题
(二)过程如下:
r=3.6635132e10;v=4.871e12;m=0;w=0.05wo;
w=m-(wo-m)*exp(-r*t/v)
a=log(w);y=a.*(-v)/r
结果:
y=398.3120
第四部分附录
4.1求解省时路线问题程序代码
%计算最短路径(Floyd算法)
function[D,path,min1,path1]=floyd(a,start,terminal)
D=a;
n=size(D,1);
path=zeros(n,n);%初始化
fori=1:
n
forj=1:
n
ifD(i,j)~=inf
path(i,j)=j;
end
end
end
fork=1:
n
fori=1:
n
forj=1:
n
ifD(i,k)+D(k,j)D(i,j)=D(i,k)+D(k,j);
path(i,j)=path(i,k);
end
end
end
end
ifnargin==3%参数个数为3的时候执行
min1=D(start,terminal);%最短距离
m
(1)=start;
i=1;
path1=[];%计算最短路径
whilepath(m(i),terminal)~=terminal
k=i+1;
m(k)=path(m(i),terminal);
i=i+1;
end
m(i+1)=terminal;
path1=m;
end
clear;
clc;
fprintf('计算最短路径(Floyd算法)\n');
x=[0,4,5,inf,inf,inf,inf,inf,inf;
4,0,inf,8,5,inf,inf,inf,inf;
5,inf,0,inf,3,7,inf,inf,inf;
Inf,8,inf,0,inf,inf,4,inf,inf;
Inf,5,3,inf,0,inf,3,4,inf;
Inf,inf,7,inf,inf,0,inf,6,inf;
Inf,inf,inf,4,3,inf,0,inf,5;
Inf,inf,inf,inf,4,6,inf,0,5;
Inf,inf,inf,inf,inf,inf,5,5,0;]
%x=input('输入邻接矩阵:
');
start=input('输入起点:
');
terminal=input('输入终点:
');
fprintf('计算结果如下:
');
[D,path,min,path_way]=floyd(x,start,terminal)