• 学前教育
  • 小学学习
  • 初中学习
  • 高中学习
  • 语文学习
  • 数学学习
  • 英语学习
  • 作文范文
  • 文科资料
  • 理科资料
  • 文档大全
  • 当前位置: 雅意学习网 > 理科资料 > 正文

    【蒙特卡罗算法计算区域污染物面积探讨】污染物的区域贡献

    时间:2019-01-20 03:29:48 来源:雅意学习网 本文已影响 雅意学习网手机站

      摘要:污染物排放源清单由于在数据收集过程中具有随机性,常规方法并不能够对污染区域较好地模拟,蒙特卡罗方法模拟用于不确定过程的统计试验。整个过程在MATLAB中实现,计算简便易行,与传统的插值法相比较,其评价结果更符合客观实际。
      关键词:蒙特卡罗方法;MATLAB;不规则面积计算
      中图分类号:02 文献标识码:B 文章编号:1009-9166(2009)02(c)-0057-02
      
      污染物排放源清单由于在数据收集过程中具有随机性,存在不可避免的监测误差、随机误差、关键数据缺乏以及数据代表性不足等因素而具有不确定性,常规方法并不能够对污染区域较好地模拟,而蒙特卡罗方法则能够较好的解决此类问题。
      
      一、蒙特卡罗算法介绍
      
      蒙特卡罗方法的基本思想:当所求问题的解是某个事件的概率,或者是某个随机变量的数学期望,或者是与概率、数学期望有关的量时,通过某种试验的方法,得出该事件发生的频率,或者该随机变量若干个具体观察值的算术平均值,通过它得到问题的解。即:为了求出目标量,首先要构造概率模型,使概率模型的某些数字特征恰好重合于所需计算的量,而数字特征又可以通过数值实验,用统计学的方法求出值,此值可以作为目标量的近似值。
      简单举例来说,考虑平面上的一个边长为1的正方形及其内部的一个形状不规则的“图形”,如何求出这个“图形”的面积呢?Monte Carlo方法是这样一种“随机化”的方法:向该正方形“随机地”投掷N个点落于“图形”内,则该“图形”的面积近似为M/N。因此蒙特卡罗方法就是将所要计算的积分看作服从某种分布密度函数f(x)的随机变量g(x)的数学期望: ――公式(1)通过某种试验,得到N个观察值x1,x2,……, xx(用概率语言来说,从分布密度函数f(r)中抽取n个子样x1,x2,……,x2),将相应的N个随机变量的值g(x1),g(x2),…,g(xn)的算术平均值:――公式(2)
      作为积分的估计值(近似值)。
      
      二、蒙特卡罗模拟的MATLAB实现
      
      蒙特卡罗一般步骤是:
      1、输入最小、最大和最可能估计数据,并选择一种合适的分布模型;
      2、计算机根据输入,利用给定的某种规则,快速实施充分大量的随机抽样;
      3、对随机抽样的数据进行必要的数学计算,求出结果;
      4、对求出的结果进行统计学处理,求出最小值、最大值以及数学期望值和单位标准偏差;
      实例分析:某海面发生油轮碰撞,发生大面积石油泄露,经过计算得到污染物超标浓度分布区域边界的坐标值(图1、表1),其中x表示沿横轴方向所取的分点位置, 表示在每个x分点的下方得到的边界点位置, 表示在每个x分点上方得到的边界点位置。求海面受污面积是多少?
      
      (一)问题分析与模型建立
      通过图形可知,可以利用插值法求其面积,因此利用插值法来验证蒙特卡罗方法得到的结果。
      1、蒙特卡罗方法:
      通过图形,做以坐标轴为两边的外切矩形,通过编程,在矩形区域内产生N个随机点(假设计算机给出的随机数列足够“随机”),如果点在污染区域内,则计数器num加1,然后根据公式:A=A=num/N×巨型面积,计算出污染区域的面积。
      2、插值法:
      利用插值法分别插出上下来两条曲线,然后对这两条曲线的差与x的步长乘积求和,得到面积。
      (二)模型求解与模拟过程
      1、首先定义变量x,y1,y2。程序如下:
      x=[20 26 32 …… 232 235];
      y1=[50.0 39.1 37.4 …… 46.0 49.0 52.0];
      y2=[50.0 55.0 58.0 …… 63.0 57.0 52.0];
      2、蒙特卡罗法:
      利用所构模型,分别求出落在区域内点的个数num以及辅助矩形的面积A*B,并且定义出循环次数N的大小,理论上N越大,结果越精确,这里n取5。套入公式(1)得到污染区域面积area1
      用计算机MATLAB程序设计如下:
      A=max(x)-min(x);B=max(y2)-min(y1);N=;
      for j=1:N
      n=20000;
      num=0;
      for i=1:n
      u(i)=unifrnd(min(x),max(x));
      v(i)=unifrnd(min(y1),max(y2));
      f1=interp1(x,y1,u(i),"cubic");
      f2=interp1(x,y2,v(i),"cubic");
      if(v(i)>=f1&v(i) 本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

    推荐访问:污染物 算法 蒙特 卡罗

    • 文档大全
    • 故事大全
    • 优美句子
    • 范文
    • 美文
    • 散文
    • 小说文章