蒲丰氏投针问题的模拟过程
更新时间:2024-04-06 18:28:01 阅读量: 综合文库 文档下载
- 蒲丰投针问题证明推荐度:
- 相关推荐
蒲丰氏投针问题的模拟过程,随机数发生器也是自编的,以供大家参考和提出建议。谢谢。(seed1和seed2最好选择3和5,为了使投针次数达到1000000,CVF进行如下设置Project->settings->link->
output,将stack allocations reserve:设为1000000000) ??
program getpi
implicit none
real,parameter::a=5,L=4,pi=3.14159 integer::n1,i,counter=0
real,allocatable::R1(:),R2(:) real::theta,x,pi1
write(*,*) 'input the size of the array:' read(*,*) n1
allocate(R1(n1)) allocate(R2(n1)) call random(n1,R1,R2) do i=1,n1
x=a*(2*R1(i)-1) theta=pi*R2(i)
if(abs(x) pi1=(1.0*n1)/(counter*1.0)*(2.0*L/a) write(*,*) 'this is PI:' write(*,*) pi write(*,\1.0 &*counter/n1 stop end program subroutine random(n,R1,R2) implicit none integer n,seed1,seed2,i,little,m real::R1(n),R2(n) integer::temp1(n),temp2(n) write(*,*) 'input seed1' read(*,*) seed1 write(*,*) 'input seed2' read(*,*) seed2 m=2**30 m=m*2-1 temp1(1)=397204094 temp2(1)=temp1(1) R1(1)=(1.0*temp1(1))/(1.0*m) R2(1)=(1.0*temp2(1))/(1.0*m) little=0 if(R1(1)<0.5) little=little+1 do i=1,n-1 temp1(i+1)=mod(seed1*temp1(i),m) R1(i+1)=(1.0*temp1(i+1))/(1.0*m) temp2(i+1)=mod(seed2*temp2(i),m) R2(i+1)=(1.0*temp2(i+1))/(1.0*m) if(R1(i+1)<0.5) little=little+1 . end do ; write(*,*) 'ratio of number which is little than 0.5' write(*,*) 1.0*little/n return end subroutine 拟蒙特卡洛方法(Quasi-Monte Carlo)积分实例 %使用Matlab提供的函数求积分,exp(-1/2*x^2)在(0,1)间积分 format long; syms x a = sym(1/2); f = exp(-a*x^2); ezplot(f) disp(int(f,-1,1)); fprintf('integral result:%1.18f.\\n',double(int(f,0,1))); %disp(double(int(f,0,1))); 复制代码%使用拟蒙特卡洛方法积分 %得到拟蒙特卡洛序列,即低偏差序列,halton法 %如果有相关的工具箱的话,可以用Matlab里面的haltonset,faureset,sobolset函数实现, x=halton(10000,2,5577); n=length(x); mju=0; for i=1:n mju=mju + exp(-0.5*x(i)^2); end mju=mju/n; fprintf('Quasi-Monte Carlo result:%1.18f.\\n',mju); %disp(mju); %使用蒙特卡洛方法积分 %得到Uniform序列, x=random('unif',0,1,10000,1); n=length(x); mju=0; for i=1:n mju=mju + exp(-0.5*x(i)^2); end mju=mju/n; fprintf('Monte Carlo result:%1.18f.\\n',mju); %=============生成HALTON序列======================== function result = halton( m,base,seeder ) %生成HALTON序列 % Check inputs if nargin < 3 seeder = 0; if nargin < 2 error('MATLAB:Halton:NotEnoughInputs',... 'Not enough input arguments. See Halton.'); end end res=0; n=length(base); for i=1:m for j=1:n element=0; temp=seeder+i; k=1; while temp>0 element(k)=rem(temp,base(j)); temp=fix(temp/base(j)); k=k+1; end res(i,j)= 0; for k=1:length(element) res(i,j)=res(i,j)+element(k)/(base(j)^k); end end end result=res;
正在阅读:
蒲丰氏投针问题的模拟过程04-06
国考申论考试近五年趋势04-09
乡镇委员会上半年项目建设工作计划06-05
2019届高考历史十大热点知识考前预测(精华版) - 图文05-07
地下室加固工程施工方案12-28
2015操作系统考试题(带答案)12-07
2022年驻村帮扶工作情况汇报范文03-25
CRH3型试验程序09-11
第十章 俄国形式主义与英美新批评05-20
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 过程
- 模拟
- 问题
- 丰氏投
- 2018年学校未成年人保护工作总结与2018年学校法制宣传教育工作总
- 招标代理方案
- 2012年湖南公务员面试真题(含解析)
- 四年级品德与社会上册第一课
- 培训班结业主持词
- 国家电网公司SG186-电力ERP-电力SAP工作培训资料 - 图文
- 中学教师职务评审通过人员名单
- 现代物流基础物流课程标准
- linux运维工程师简历
- 幼儿园教师个人培训总结
- 与名师对话2015新课标A版数学文一轮复习课时作业:6-5
- 2018最全出国日常英语词汇(带详细分类)
- 必修二知识总结
- 2018年上半年北京工程测量员技师考试题
- 甲级单位编制义头项目可行性报告(立项可研+贷款+用地+2013案例
- 施工总承包框架协议
- 电力系统自动装置试题 - 图文
- 测试技术参考答案(王世勇,前三章)汇总
- 扩大国内自主招生是利大于弊还是弊大于利 赛评
- 纳米银粉的市场分析 - 图文