多重积分fortran子程序-------vegas.f流程图

多重积分fortran子程序-------vegas.f流程图

ID:5356784

大小:100.63 KB

页数:13页

时间:2017-12-08

多重积分fortran子程序-------vegas.f流程图_第1页
多重积分fortran子程序-------vegas.f流程图_第2页
多重积分fortran子程序-------vegas.f流程图_第3页
多重积分fortran子程序-------vegas.f流程图_第4页
多重积分fortran子程序-------vegas.f流程图_第5页
资源描述:

《多重积分fortran子程序-------vegas.f流程图》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、多重积分Fortran子程序-------VEGAS.F流程图说明:这里只是对子程序的算法和如何分层做详细介绍,对打印输出和其他一些东西都做略过。还有这个子程序中涉及的变量很多,而且变量的意义也变化,所以下面涉及到的变量我都会在画流程图前加以适当的说明。1.子程序所涉及的变量及其的意义:有用输入参数:FXN:被积函数。ACC:所要求的精度。NDIM:被积函数的变量的个数。NCALL:投点的总数。ITMX:要求的叠代的次数。NPRN:打印的要求(具体要求略过)。子程序内部的参数及其意义:TI(AVGI):数值积分的结果。IT:叠代的次数。X(I,J):各随机变量的分布,J表示各个变量。

2、ERR(SD):数值积分的误差。ALPH0:变化区间的参数。RAND(20):[0,1]的随机数列。X(J):用于积分的坐标等。2.主要的程序模块和各模块的功能总的流程图:1.初始化设定各个参数2.初始化内部的分布3.初始化叠代值4.计算各个随机点的位置X(J),计算各个随机点的函数值。5.计算积分值和积分的误差是6.误差和叠否代次数是否符合要求8.打印输出结果7.按误差改变各区间的大小,重新获得一个变量的分布结束3.各模块的流程图1)初始化设定各个参数该部分的主要工作就是给各参数输入初始值,下面简述各个初始化的参数以及各参数的意义或在以下何模块里要用到。ALPH=1.5;这是在7中

3、用到,作为变换分布的参数。CALLS=NCALL;投点的总数。XND=ND=50;区间分为50份。NDM=ND-1=49;为以下处理方便。IT=0;叠代初始为零。SI=0;SI2=0;SWGT=0;SCHI=0;SCALLS=0;以上五个变量均是叠代参数,在5中用。2)初始化内部分布:变量的意义:RC:分层的间隔。NDIM:变量的个数。XI(I,J):变量的区间的分布。XND:区间分层数。XNDM=XND-1。DR:求和号。初始化的分布是一个均匀分布,实现的流程图如下:RC=1/XNDJ=1NJ<=NDIMYXI(ND,J)=1DR=0J++NI<=NDMYDR=DR+RCXI(I,

4、J)=DRI++CONTINUE3)初始叠代参数:这不仅仅是初始化的过程了,而是大的循环的一部分,每改变一次变量的分布,就需要初始化叠代参数一次。下面简述各个初始化的参数以及各参数的意义或在以下何模块里要用到。IT=IT+1;叠代的次数。TI=0;积分值清零。SFUN2=0;在4,5中求误差时要用。D(I,J)=0;对D矩阵清零,在4,5,7中要用。4)计算各个随机点的位置X(J),计算各个随机点的函数值。这里主要是算各个随机点的位置X(J)和各个随机点的函数值,并为下面的求误差作好准备。总的流程图如下:NJJ<=NCALLY计算各个随机点的位置X(J)CONTINUE计算各个随机点

5、的函数值。JJ++下面分别看计算各个随机点的位置X(J)和计算各个随机点的函数值的流程图:A)各个随机点的位置X(J)变量定义:NDIM:变量的个数。XI(I,J):变量的分布。WGT:权重。流程图:WGT=1产生随机数列RAND(N)J<=NDIMXN=RAND(J)*XND+1CONTINUE取XN的整数部分到数列IA(J)让XIM1=0IA(J)>1XIM1=XI(IA(J)-1,J)表示区间的距离X0=XI(IA(J),J)-XIM1。X(J)=XIM1+(XN-IA(J))*X0。权重WGT=WGT*X0*XND。J++这里是用随机数经过RAND(J)*XND+1的变换值的

6、整数部分IA(J)选择了分层区间,用其小数部分来选择了坐标点在该分层区间的具体位置。该部分得到X(J),和该点的权重。B)计算各个随机点的函数值计算带权重的函数值:FUN=FXN(X)*WGT/CALLS对下面求误差要用的值:FUN2=FUN*FUNSFUN2=SFUN2+FUN2积分值:TI=TI+FUNNJ<=NDIMY把D矩阵用FUN2填充:J++,IAJ=IA(J)D(IAJ,J)=D(IAJ,J)+FUN2CONTINUE这里求出了带权重的函数值FUN,以及下面积分和求误差要用的几个量:SFUN2,FUN2,D阵,TI。其中D阵对第7个模块也很重要。D矩阵的矩阵元是对第J个

7、变量的第I个区间内所有投点的FUN2的求和。5)计算积分值和积分的误差该部分是计算了在以上的投点和分布下的积分值和积分的误差值。注意这个积分值和积分误差是所有叠代的平均值。具体的流程图如下:在4中求得的本次分布下的积分值的平方TI2=TI*TI;本次积分值TI的误差:TSI=−(2SFUN*CALLSTI2)/(CALLS−1)上式相当于:CALLSCALLS22TSI=−()∑∑FUNFUN/[(CALLS−1)CALLS]ii==11权重:22WGT=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。