问题描述
2011高教社杯全国大学生数学建模竞赛题目
(请先阅读“全国大学生数学建模竞赛论文格式规范”)
A题 城市表层土壤重金属污染分析
随着城市经济的快速发展和城市人口的不断增加,人类活动对城市环境质量的影响日显突出。对城市土壤地质环境异常的查证,以及如何应用查证获得的海量数据资料开展城市环境质量评价,研究人类活动影响下城市地质环境的演变模式,日益成为人们关注的焦点。
按照功能划分,城区一般可分为生活区、工业区、山区、主干道路区及公园绿地区等,分别记为1类区、2类区、……、5类区,不同的区域环境受人类活动影响的程度不同。
现对某城市城区土壤地质环境进行调查。为此,将所考察的城区划分为间距1公里左右的网格子区域,按照每平方公里1个采样点对表层土(0~10 厘米深度)进行取样、编号,并用GPS记录采样点的位置。应用专门仪器测试分析,获得了每个样本所含的多种化学元素的浓度数据。另一方面,按照2公里的间距在那些远离人群及工业活动的自然区取样,将其作为该城区表层土壤中元素的背景值。
附件1列出了采样点的位置、海拔高度及其所属功能区等信息,附件2列出了8种主要重金属元素在采样点处的浓度,附件3列出了8种主要重金属元素的背景值。
现要求你们通过数学建模来完成以下任务:
(1) 给出8种主要重金属元素在该城区的空间分布,并分析该城区内不同区域重金属的污染程度。
(2) 通过数据分析,说明重金属污染的主要原因。
(3) 分析重金属污染物的传播特征,由此建立模型,确定污染源的位置。
(4) 分析你所建立模型的优缺点,为更好地研究城市地质环境的演变模式,还应收集什么信息?有了这些信息,如何建立模型解决问题?
问题分析
(一)问题一分析
对于问题一,通过所给数据以及题目要求,可以通过一维插值的方法将散乱数据变成规则数据,再通过组网格,邻近插值等方法画出三维空间分布和二维等高线图。
(二)问题二分析
对于问题二,我们可以首先对重金属和海拔进行相关性分析,通过功能区划分,并结合问题一的污染物分布分析,得到相关矩阵以及相关度,最后结合所有数据对重金属可能的主要来源以及重金属污染的主要原因进行分析。
(三)问题三分析
对于问题三,我们首先通过对数据的处理得到污染源的可能位置,然后通过建立模型,应用MATLAB进行拟合,从而更好地找到污染源的位置,得到比较满意的结果。
(四)问题四分析
首先,我们对模型进行优缺点分析,然后通过查询资料以及数据收集对模型进一步优化处理,从而更好地选择模型解决问题。
代码实现
MATLAB程序代码:
问题一:
A=xlsread(“cumcm2011A附件_数据.xlsx”,1,‘B4:E322’);%读取第一页数据
B=xlsread(“cumcm2011A附件_数据.xlsx”,2,‘B4:I322’);%读取第二页数据,物质浓度
x=A(:,1);y=A(:,2);g=A(:,4);N=length(x);z1=A(:,3)
BJ=[‘As’,‘Cd’,‘Cr’,‘Cu’,‘Hg’,‘Ni’,‘Pb’,‘Zn’];
xi=linspace(min(x),max(x),N);%一维插值,散乱数据变规则数据
yi=linspace(min(y),max(y),N);
[XI,YI]=meshgrid(xi,yi);%组网格
for i=1:8
z=B(:,i);
[XI,YI,ZI]=griddata(x,y,z,XI,YI,‘cubic’);%邻近插值
figure
mesh(XI,YI,ZI);
%figure;
%contour(XI,YI,ZI,40);%二维等高线图
title(BJ(2i-1:2i));%写出图形标题
end
问题二:
%clear;close all;%问题2
A=xlsread(“cumcm2011A附件_数据.xlsx”,1,‘B4:E322’);%读取第一页数据
B=xlsread(“cumcm2011A附件_数据.xlsx”,2,‘B4:I322’);%读取第二页数据,物质浓度
x=A(:,1);y=A(:,2);g=A(:,4);N=length(x);
BJ=[‘As’,‘Cd’,‘Cr’,‘Cu’,‘Hg’,‘Ni’,‘Pb’,‘Zn’];
xi=linspace(min(x),max(x),N);%一维插值,散乱数据变规则数据
yi=linspace(min(y),max(y),N);
[XI,YI]=meshgrid(xi,yi);%组网格
for i=1:8
z=B(:,i);
[XI,YI,ZI]=griddata(x,y,z,XI,YI,‘cubic’);%邻近插值
%mesh(XI,YI,ZI);%三维空间分布图
figure;
contour(XI,YI,ZI,80);%二维等高地形图
title(BJ(2i-1:2i));%写出图形标题
hold on
for k=1:N %标记功能区
if g(k)==1
plot(x(k),y(k),‘r*’);
elseif g(k)==2
plot(x(k),y(k),‘r^’);
elseif g(k)==3
plot(x(k),y(k),’+’);
elseif g(k)==4
plot(x(k),y(k),‘x’);
elseif g(k)==5
plot(x(k),y(k),‘ro’);
end
end
legend(‘等高线’,‘生活区’,‘工业区’,‘山区’,‘交通区’,‘公园’);%按绘图顺序标注
hold off
end
B1=B
for k=1:8
a=max(B1(:,k));b=min(B1(:,k));
B1(:,k)=(B1(:,k)-b)/(a-b)%标准化处理
end
R=corrcoef(B1);%相关性分析
%xlswrite(‘cumcm2011A附件_数据.xlsx’,R,4);
问题三:
A=xlsread(“cumcm2011A附件_数据.xlsx”,1,‘B4:E322’);%读取第一页数据
B=xlsread(“cumcm2011A附件_数据.xlsx”,2,‘B4:I322’);%读取第二页数据,物质浓度
x=A(:,1);y=A(:,2);g=A(:,4);N=length(x);z1=A(:,3)
BJ=[‘As’,‘Cd’,‘Cr’,‘Cu’,‘Hg’,‘Ni’,‘Pb’,‘Zn’];
xi=linspace(min(x),max(x),N);%一维插值,散乱数据变规则数据
yi=linspace(min(y),max(y),N);
[XI,YI]=meshgrid(xi,yi);%组网格
for i=1
z=B(:,i);
[XI,YI,ZI]=griddata(x,y,z,XI,YI,‘cubic’);%邻近插值
%figure
%mesh(XI,YI,ZI);
figure;
contour(XI,YI,ZI,40);%二维等高线图
title(BJ(2i-1:2i));%写出图形标题
hold on
[px,py]=gradient(ZI,.2,.2);%计算梯度向量
quiver(xi,yi,px,py);%绘制梯度
for k=1:N %标记功能区
if g(k)==1
plot(x(k),y(k),'*');
elseif g(k)==2
plot(x(k),y(k),'r^');
elseif g(k)==3
plot(x(k),y(k),'+');
elseif g(k)==4
plot(x(k),y(k),'x');
elseif g(k)==5
plot(x(k),y(k),'ro');
end
end
legend(‘等高线’,‘梯度向量’,‘生活区’,‘工业区’,‘山区’,‘交通区’,‘公园’);%按绘图顺序标注
hold off
[x0,y0]=ginput(3);%用鼠标获取污染中心的位置
[x0,y0]
figure;
plot(x0,y0,‘ro’,‘LineWidth’,1.5);
hold on
[XI,YI,ZI]=griddata(x,y,z1,XI,YI,‘cubic’);%邻近插值
contour(XI,YI,ZI,50);
模型建立与求解
(一)问题一的求解
用MATLAB软件对所给数据进行插值拟合得出调查区的地形图和八种重金属元素在该区域的空间分布图,再用MATLAB软件对所给的数据进行分析,具体情况如下:
(二)问题二的求解
用MATLAB软件对各种重金属元素浓度和海拔做相关性分析,得出各元素与元素之间和元素与海拔之间的相关系数矩阵及其相关性,结合第一问得出的空间分布,参照主要重金属含量土壤单项污染的指数,分析得出的各种重金属污染的主要原因。
我们通过等高线地形图与功能区标记函数结合对所给数据进行读取,
As Cd Cr Cu Hg Ni Pb Zn
As 1 0.2547 0.1980 0.1597 0.0664 0.3166 0.0899 0.2469
Cd 0.2547 1 0.3524 0.3967 0.2647 0.3294 0.6603 0.4312
Cr 0.1890 0.3524 1 0.5316 0.1032 0.7158 0.3828 0.4243
Cu 0.1597 0.3967 0.5316 1 0.4167 0.7158 0.5200 0.3873
Hg 0.0644 0.2647 0.1032 0.4167 1 0.4946 0.2918 0.1958
Ni 0.3166 0.3294 0.7158 0.4946 0.1029 0.1029 0.3068 0.4364
Pb 0.2899 0.6603 0.3828 0.5200 0.2981 0.3068 1 0.4937
Zn 0.2469 0.4312 0.4243 0.3873 0.1958 0.4364 0.4937 1
相关性矩阵如下表所示:
参照分布图可见个金属浓度均和海拔呈负相关及海拔越高,其含各种金属浓度越低。Cr和Ni的相关性较好,相关系数是0.7158。其次是Pb和Cd,相关系数为0.6603,以下是Cr和Cu的关系较好,相关系数是0.5316。其他元素之间的相关性并不是很好。从成因上来分析,相关性较好的元素可能在成因和来源上有一定的关联。结合第一问中八种元素在该区域的空间分布来看。Cr和Ni,Pb和Cd有可能是来自同一来源。
对于Cr和Ni,在来源上有密切的关联,在该市表层土壤中基本为污染。只有在个别富集程度较高,污染达到中度以上的地区。该富集中心的位置主要分布在生活区周围和交通距周围,这可能是由于生活污水排放和交通汽车尾气排放所造成的。
对于Pb和Cd,在来源问题上有着较密切的联系。他们的高含量点主要分布在交通区工业区周围,这可能是因为来自该城市的交通汽车尾气的排放,以及工业区汽车轮胎磨损和冶炼厂的废水,尘埃废渣等废物,以及电镀电池燃料,塑料稳定剂等所造成的污染。所以可以说他们的污染主要是由于交通污染和工业污染造成的。
对于Cu而言,在该城市土壤中基本为污染。只有在个别的富集程度较高污染达到中度污染。该富集区的位置主要分布在生活区周围,这可能是由于生活城市垃圾所造成的污染。
对于Hg而言,其高含量点主要分布在交通繁华的交通区周边和工业区周边。其污染的一个主要原因是由于燃烧造成的,无论是工业用煤还是居民用煤,而且燃烧方式落后,工业排放也是表层土壤Hg都污染来源之一,主要在大面积污染的几个工业浓缩点。
对于Zn而言,提高含量点也主要分布在交通繁华的交通区域周边和工业区周边,这主要是由于汽车尾气排放和工厂企业的三废排放所造成的。
对于As而言,该市区表层土壤As基本都是轻度或中度污染,只有在个别富集程度较高,该富集中心的位置主要分布在工业区周边,主要来源可能是工厂的废水排放。
综上所述,可以认为工业区交通区,生活区的活动是造成该城市表层土壤重金属污染的主要原因。
(三)问题三的求解
分析重金属污染物的传播特征,由此建立模型,确认污染源的位置。首先我们建立函数,找出梯度向量,最后由函数拟合得出结论。
我们还通过绘制二元函数极值点进行分析
用鼠标在图像中获取(x0,y0)
(四)问题四的求解
优点:解决问题一,我们用MATLAB对原始数据进行插值拟合并让其linspace使得数据散乱变规整我们都通过MATLAB对程序进行了最大的优化。对于问题也提出了可能性较大的原因,结合数据整理出最有可能的原因。
缺点:对于模型的合理化还缺少部分数据。不能够全面立体,多层次的了解污染源。
改进方法:为了更好地研究城市地质环境的演变模式,需要做以下的几个工作:首先我们可以利用空间中的任意一点对应的污染物浓度与时间的表达式建立数学关系模型。其次我们也可以利用高斯点源扩散模型来研究重金属污染物在大气中的扩散模型。利用更全面的数据来解决问题。