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です。とにかく、算術幾何平均法を使用してより良い結果を得るには? 人々は円周率やオイラー定数などの数の桁数をどのように計算するのでしょうか? 各無理数には特定のアルゴリズムがありますか?

4

2 に答える 2

3

プログラムに定数値を挿入することが目標である場合、最も簡単な解決策は、Web または本で値を調べることです。必ず数値に型指定を追加してください。他の Fortran は、それを単精度のデフォルトとして扱います。pi は次のように書くことができますpi_quad = 3.14159265358979323846264338327950288_real128-- 定数に対する型指定子の使用を示します。

高精度の計算を行いたい場合は、コンパイラで高精度の型を使用できます。現在、多くのコンパイラが 4 倍精度を備えています。Fortran 2008 バージョンの ISO_FORTRAN_ENV モジュールがある場合は、 type を介してこれを要求できますreal128

任意の精度 (ユーザー指定の桁数から非常に高い桁数まで) は言語の外にあり、MPFUN90、http: //crd-legacy.lbl.gov/~dhbailey/mpdist/ などのライブラリで利用できます。

はい、さまざまな定数にはさまざまなアルゴリズムがあります。これは非常に大きなトピックです。

于 2013-08-07T19:19:29.053 に答える
-3

円周率の解:

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