主题:fortran求派程序
l_mland
[专家分:0] 发布于 2010-04-18 23:05:00
用梯型积分!f(x)=4/(x*x+1) 谢谢!!
回复列表 (共5个回复)
沙发
l_mland [专家分:0] 发布于 2010-04-18 23:15:00
有人敢写么!~?
板凳
l_mland [专家分:0] 发布于 2010-04-18 23:25:00
这个程序没有几行,能写的写下!
3 楼
guosw69 [专家分:10] 发布于 2010-05-01 00:14:00
program main
use IMSL
integer nout
real*8,external::F
real*8 A,B
real*8,parameter::ERRABS=1d-10
real*8,parameter::ERRREL=1d-10
real*8 ANS,ERR
A=0.0d0
B=1.0d0
CALL DQDAGS(F,A,B,ERRABS,ERRREL,ANS,ERR)
! CALL DQDAGS(F,A,B,*,*,ANS,ERR)
write(*,*)ans
print*,'----------------------------------'
write(*,"(f20.18)")ans
write(*,*)err
endprogram main
real*8 function f(x)
implicit none
real*8 x
f=4.d0/(1.d0+x*x)
end function
结果:
3.141592653589793
后面的就不对了
4 楼
lxde0866 [专家分:480] 发布于 2010-05-04 22:43:00
write(*,*) 4.0*datan(1.0)
end
用这个小程序说明简单的Pi数值的计算。
我曾经用这个算法求解了100位的Pi数值,那个有难度。
不说了。
5 楼
asymptotic [专家分:16630] 发布于 2010-05-05 07:21:00
[quote] write(*,*) 4.0*datan(1.0)
end
用这个小程序说明简单的Pi数值的计算。
我曾经用这个算法求解了100位的Pi数值,那个有难度。
不说了。[/quote]
愿闻其详!
其一,根据 Fortran 标准,1.0 默认为单精度,因此,datan(1.0)
语法上检测就通不过。
其二,浮点数精度,1.0(或者 4.0) 也就六七位有效数字,怎么
会出来一百多位精度的结果呢?
其三,就算你全部用双精度,也就十四五位有效数字。
我百思不得其解,恳请兄台指教。
我来回复