回 帖 发 新 帖 刷新版面

主题:fortran求派程序

用梯型积分!f(x)=4/(x*x+1)    谢谢!!

回复列表 (共5个回复)

沙发

有人敢写么!~?

板凳

这个程序没有几行,能写的写下!

3 楼

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 楼

     write(*,*) 4.0*datan(1.0) 
     end

用这个小程序说明简单的Pi数值的计算。

我曾经用这个算法求解了100位的Pi数值,那个有难度。
不说了。

5 楼

[quote]     write(*,*) 4.0*datan(1.0) 
     end

用这个小程序说明简单的Pi数值的计算。

我曾经用这个算法求解了100位的Pi数值,那个有难度。
不说了。[/quote]

愿闻其详!

其一,根据 Fortran 标准,1.0 默认为单精度,因此,datan(1.0) 
语法上检测就通不过。
其二,浮点数精度,1.0(或者 4.0) 也就六七位有效数字,怎么
会出来一百多位精度的结果呢?
其三,就算你全部用双精度,也就十四五位有效数字。

我百思不得其解,恳请兄台指教。

我来回复

您尚未登录,请登录后再回复。点此登录或注册