数学建模小练习(1):插值【转】

简介:

转:http://site.douban.com/182577/widget/notes/10567181/note/262669861/

全国大学生数学建模竞赛2011A。插值。
题目和数据:http://www.mcm.edu.cn/html_cn/node/a1ffc4c5587c8a6f96eacefb8dbcc34e.html
第一问是讨论8种重金属元素在城区的空间分布,并分析不同区域的污染程度。
描述空间分布比较好的方式是把这个空间以图形的方式展示出来。
对整个城区面积来说,300多个采样点的数据过少,可用插值拟合的方法获得各重金属污染物浓度的空间分布。再参考由背景值确定的阈值,定量分析城区各区域的污染程度。
由于空间数据是不规则的,较好的方法是用散乱数据插值,线性插值的效果不好。


下面采用kriging插值:http://en.wikipedia.org/wiki/Kriging

mum<-read.csv('mum2011.csv')#把数据附件1,2合并,存为mum2011.csv

library(kriging)
kriged <- kriging(mum$x, mum$y, mum$hight, pixels=100)#对海拔进行差值
map<-kriged$map

library(ggplot2)

v <- ggplot(map, aes(x, y, z = pred))#绘制海拔图,在其上标识功能区,pred是海拔插值的结果
v + geom_tile(aes(fill = pred))+
stat_contour(binwidth = 20)+
scale_fill_gradientn(colours=c('darkgreen','green','orange','yellow','white'))+
annotate("text",x=mum$x,y=mum$y,label=mum$area)

 



功能区分别是
1 生活区
2 工业区
3 山区
4 交通区
5 公园绿地区

krigedcu <- kriging(mum$x, mum$y, mum$Cu, pixels=100)#对铜的浓度插值
mapcu<-krigedcu$map
v <- ggplot(mapcu, aes(x, y, z = pred))#绘铜的浓度图
v + geom_tile(aes(fill = pred))+
stat_contour(binwidth = 100)+
scale_fill_gradientn(colours=c('blue','green','orange','yellow','red'))+
annotate("text",x=mum$x,y=mum$y,label=mum$area)

 


其他重金属类似作图即可。结合海拔和功能区,不难描述污染的情况。


R里边常用的绘制等高线图的函数是contour( ),这个函数要求坐标x,y值递增,对散乱数据不合适,所以采用ggplot2来画图。



本文转自einyboy博客园博客,原文链接:http://www.cnblogs.com/einyboy/p/3196488.html,如需转载请自行联系原作者。


目录
相关文章
|
11月前
|
算法 Python
MATLAB运用——多项式插值
MATLAB运用——多项式插值
191 0
第9章 数学建模函数——9.1 曲线拟合函数
第9章 数学建模函数——9.1 曲线拟合函数
第9章 数学建模函数——9.2 参数估计函数
第9章 数学建模函数——9.2 参数估计函数
|
Serverless
MATLAB-常见插值方法及常见知识
MATLAB-常见插值方法及常见知识
479 0
MATLAB-常见插值方法及常见知识
|
5月前
|
算法
数学建模函数插值与拟合
数学建模函数插值与拟合
46 0
|
10月前
数学建模——插值(下)
数学建模——插值(下)
|
10月前
|
算法
数学建模——曲线拟合
数学建模——曲线拟合
147 1
|
10月前
|
人工智能 BI
数学建模——插值(上)
数学建模——插值(上)
|
10月前
数学建模——微分方程介绍
数学建模——微分方程介绍
126 0
|
12月前
|
存储 机器学习/深度学习 数据可视化
【MATLAB 数学建模】 插值方法 数据拟合
【MATLAB 数学建模】 插值方法 数据拟合
243 0