| 查看: 1866 | 回复: 10 | ||
836449366金虫 (小有名气)
|
[求助]
计算圆周率得到的结果错误 已有3人参与
|
|
|
我的程序是计算圆周率,原理是:在一个1*1的正方形及其内切圆(圆心为(0.5,0.5))中,随机数x和随机数y组成的点位于正方形内,但要判断这个点是否也在圆内,当点数很多时,圆内的点数除以总数再乘以4就等于圆周率了(即面积之比),我所编写的程序如下: program main implicit none integer*4 :: i,j,ii,n integer*8 :: num real*4 :: r real*4,allocatable :: x( ,y(![]() do 100 n=9,12,1 num=10**(n) ! num=100000 allocate(x(num)) allocate(y(num)) call random_seed() call random_number(x) call random_number(y) ii = 0 do i = 1,num r = sqrt((x(i)-0.5)**2 + (y(i)-0.5)**2) if(r .le. 0.5) then ii = ii+1 end if end do write(*,"(a,F20.15,D10.2)" "pai=",4.0*ii/num,num*1.0deallocate(x,y) 100 continue end 运行之后,得到的结果为 pai= 3.141531944274902 0.10D+10 pai= 3.141597270965576 0.14D+10 pai= 3.141620874404907 0.12D+10 pai= 0.000000000000000 -0.73D+09 对于得到的结果,只有第一个是正确的,后几个都错了,我想问的是我这个程序到底错在哪?怎样进行修改? (当设置n=5-9时,得到的结果是正确的) 求帮忙!谢谢! |
» 猜你喜欢
职称评审没过,求安慰
已经有55人回复
最近几年招的学生写论文不引自己组发的文章
已经有5人回复
26申博自荐
已经有3人回复
A期刊撤稿
已经有4人回复
» 本主题相关价值贴推荐,对您同样有帮助:
计算圆周率的小程序出错
已经有6人回复
VASP计算中段错误 severe (174): SIGSEGV 求助
已经有6人回复
高斯计算错误出现内存空间不足,试验多种方法无效
已经有19人回复
计算过渡态报l999错误
已经有12人回复
高斯计算l103错误怎么办
已经有11人回复
求助:用高斯计算,总是出现2070错误代码,请大侠们帮帮忙
已经有5人回复
赝势计算频率的时候出现L301错误
已经有14人回复
Gaussian 计算错误
已经有4人回复
comsol计算时出现“试图计算零的负数幂”错误命令是什么原因?
已经有4人回复
高斯计算中金属离子与氯苯的相互作用结构优化错误
已经有17人回复
matlab 问题求助,是否计算结果错误,如何改正?
已经有3人回复
ATK计算错误:Error: Not enough space to allocate,求解决!
已经有10人回复
GAUSSIAN计算语法错误
已经有7人回复
Abinit 新旧版计算结果差别多大可以认为正常,没有安装错误之类的问题。
已经有4人回复
计算的朋友快来帮忙,IRC扫描错误问题,急急急!
已经有11人回复
【求助】vasp静态计算能量值错误
已经有21人回复
【转帖】蒙特卡罗算法计算圆周率
已经有12人回复
【求助】关于MC模拟中蛇行算法的能量计算
已经有9人回复
【求助】gassian计算中出现的错误
已经有10人回复
【原创】GAUSSION计算常见错误及解决方案
已经有32人回复
laohuajiang
至尊木虫 (职业作家)
老花匠
- 应助: 25 (小学生)
- 贵宾: 5.103
- 金币: 24630.6
- 散金: 12309
- 红花: 351
- 沙发: 7
- 帖子: 4476
- 在线: 1301.5小时
- 虫号: 2683919
- 注册: 2013-09-26
- 性别: GG
- 专业: 计算数学与科学工程计算
【答案】应助回帖
|
另外,因为有下面一句 do i = 1,num i的类型应与num一致,都改成integer*8 还有integer*4,integer*8的范围是多少,能装下10^12? 稍微改一下,仅供参考。 program main implicit none integer*8 :: i,j,ii,n integer*8 :: num real*4 :: r real*4:: x,y do 100 n=9,12,1 num=10**(n) call random_seed() ii = 0 do i = 1,num call random_number(x) call random_number(y) r = sqrt((x-0.5)**2 + (y-0.5)**2) if(r .le. 0.5) then ii = ii+1 end if end do write(*,"(a,F20.15,D10.2)" ,"pai=",4.0*ii/num,num*1.0100 continue end |
» 本帖已获得的红花(最新10朵)

4楼2013-12-26 23:49:40
laohuajiang
至尊木虫 (职业作家)
老花匠
- 应助: 25 (小学生)
- 贵宾: 5.103
- 金币: 24630.6
- 散金: 12309
- 红花: 351
- 沙发: 7
- 帖子: 4476
- 在线: 1301.5小时
- 虫号: 2683919
- 注册: 2013-09-26
- 性别: GG
- 专业: 计算数学与科学工程计算

2楼2013-12-26 23:32:59
Chlo_Q
木虫 (著名写手)
- 应助: 36 (小学生)
- 金币: 1382.6
- 散金: 1304
- 红花: 23
- 帖子: 2737
- 在线: 306.5小时
- 虫号: 971183
- 注册: 2010-03-14
- 性别: GG
- 专业: 睡眠与睡眠障碍

3楼2013-12-26 23:42:45
ju5200
木虫 (正式写手)
- 应助: 78 (初中生)
- 金币: 1778.6
- 散金: 163
- 红花: 12
- 帖子: 511
- 在线: 65.2小时
- 虫号: 1734187
- 注册: 2012-04-03
- 性别: GG
- 专业: 凝聚态物性 II :电子结构
5楼2013-12-27 10:27:52
836449366
金虫 (小有名气)
- 应助: 1 (幼儿园)
- 金币: 3039.8
- 散金: 62
- 红花: 4
- 帖子: 270
- 在线: 356.3小时
- 虫号: 1478273
- 注册: 2011-11-05
- 专业: 理论和计算化学
6楼2013-12-27 17:11:55
836449366
金虫 (小有名气)
- 应助: 1 (幼儿园)
- 金币: 3039.8
- 散金: 62
- 红花: 4
- 帖子: 270
- 在线: 356.3小时
- 虫号: 1478273
- 注册: 2011-11-05
- 专业: 理论和计算化学
7楼2013-12-27 17:14:40
ju5200
木虫 (正式写手)
- 应助: 78 (初中生)
- 金币: 1778.6
- 散金: 163
- 红花: 12
- 帖子: 511
- 在线: 65.2小时
- 虫号: 1734187
- 注册: 2012-04-03
- 性别: GG
- 专业: 凝聚态物性 II :电子结构
8楼2013-12-27 18:00:07
snoopyzhao
至尊木虫 (职业作家)
- 程序强帖: 16
- 应助: 157 (高中生)
- 贵宾: 0.02
- 金币: 18844.7
- 红花: 29
- 帖子: 3803
- 在线: 1422.4小时
- 虫号: 183750
- 注册: 2006-02-13
- 专业: 污染生态化学
9楼2014-02-07 14:07:12
836449366
金虫 (小有名气)
- 应助: 1 (幼儿园)
- 金币: 3039.8
- 散金: 62
- 红花: 4
- 帖子: 270
- 在线: 356.3小时
- 虫号: 1478273
- 注册: 2011-11-05
- 专业: 理论和计算化学
10楼2014-02-10 15:04:24













,y(
"pai=",4.0*ii/num,num*1.0
回复此楼
836449366