zoukankan      html  css  js  c++  java
  • 数学建模小练习(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来画图。

  • 相关阅读:
    之前的博客
    用struts2 s2-045漏洞拿站记录
    修改BlackLowKey皮肤样式,增加占屏比
    SpringBoot自动配置原理
    CAS无锁技术
    CAS单点登录原理解析
    死锁与活锁的区别,死锁与饥饿的区别
    jvm问题
    jdk动态代理的实现原理
    抽象工厂
  • 原文地址:https://www.cnblogs.com/einyboy/p/3196488.html
Copyright © 2011-2022 走看看