1

我写了一个简单的fortran程序来计算高斯常数:

program main

implicit none

integer :: i, nit
double precision :: u0, v0, ut, vt

nit=60
u0=1.d0
v0=sqrt(2.d0)
print *,1.d0/u0,1.d0/v0

do i=1,nit
  ut=sqrt(u0*v0)
  vt=(u0+v0)/2.d0
  u0=ut
  v0=vt
  print *,1.d0/u0,1.d0/v0
enddo

end program main

4 次迭代后的结果为 0.83462684167407308。无论如何使用算术几何平均方法获得更好的结果?人们如何计算诸如 pi、欧拉常数等数字的多位数字?每个无理数都有特定的算法吗?

4

2 回答 2

3

如果您的目标是在您的程序中插入一个常量值,最简单的解决方案是在网络上或书籍中查找该值。一定要为数值添加类型说明,其他 Fortran 会将其视为默认单精度。可以将 pi 写为pi_quad = 3.14159265358979323846264338327950288_real128-- 显示在常量上使用类型说明符。

如果要进行高精度计算,可以在编译器中使用一些高精度类型。许多编译器现在具有四倍精度。如果他们有 ISO_FORTRAN_ENV 模块的 Fortran 2008 版本,您可以通过 type 请求这个real128

任意精度(用户指定的位数,到非常高的位数)不在语言范围内,可在库中使用,例如 MPFUN90,http ://crd-legacy.lbl.gov/~dhbailey/mpdist/

是的,不同的常数有不同的算法。这是一个很大的话题。

于 2013-08-07T19:19:29.053 回答
-3

pi的解决方案:

  pi = 4.0d0 * datan(1.0d0)
于 2013-03-07T18:39:20.397 回答