标题: 老哥们能不能看一下我的代码为什么运行速度这么慢 [打印本页] 作者: 鸭吼呜 时间: 2023-2-21 17:19 标题: 老哥们能不能看一下我的代码为什么运行速度这么慢 积分区间一大结果就跑不出来,而且精度还差的很远,答案里的代码精度很高运行速度也快,不过看不懂他这个算法作者: 鸭吼呜 时间: 2023-2-21 17:20
这个是我的
program main
implicit none
real(kind=4),parameter :: x=1000000000
real(kind=4) i,pi,F,y,s
F=0
i=0
s=1_4/x
do while(i<x)
y=1_4/(1_4+i*i)
F=F+y*s
i=i+s
end do
pi=4_4*F
write(*,*) pi
end program 作者: 鸭吼呜 时间: 2023-2-21 17:22
这个是答案里的
program pi_approx
implicit none
integer, parameter :: lk = selected_int_kind(12)
integer, parameter :: dk = selected_real_kind(13,100)
integer(lk), parameter :: nsteps = 1000000000_lk
integer(lk) :: i
real(dk) :: pi, step, sum, x
step = 1.0_dk / real(nsteps,dk)
sum = 0.0_dk
do i = 1, nsteps
x = (i - 0.5_dk) * step
sum = sum + 1.0_dk / (1.0_dk + x*x)
enddo
write(*,*) sum
pi = 4.0_dk * step * sum
write(*, '(a,f20.17)') 'approximation of pi is ', pi
end program作者: Transpose 时间: 2023-2-21 18:02
do while(i<x)
这里应该是i<1.0,如果 i<x 计算量翻了10亿倍