1

モンテカルロ重要度サンプリング用にこのプログラムをコンパイルしようとしていますが、いくつかの問題が発生しています。

1 - エラー: 次の行を参照すると、(1) のデータ宣言に構文エラーがあります。ここで、(1) は「関数」という単語の直後と下に配置されています。

real function f(x)

2 - エラー: (1) と (2) の 2 つのメイン プログラムで、これらの 2 行を参照しています。

program importance1

t=0.0

.

サンプルコードは次のとおりです。プログラムにはさらにコード行がありますが、問題はないと思うので、この最初のセグメントを投稿しました。

program importance1
implicit none
real mean_value,t,ta,rr
real x,xtrials,s_square_old,s_square_new,std_dev,std_error,frac_stand_dev
integer k
real :: alpha=0.90
integer :: trials=50
xtrials=trials

real function f(x)
f=exp(x)
return
end

real function g(x)
g=(alpha/(exp(alpha)-1.))*exp(alpha*x)
return
end

t=0.0
s_square_old=0.0
4

1 に答える 1

1

どこでそれを行うアイデアを得たのかはわかりませんが、コードの途中で関数を定義しているように見えますが、これは間違った場所です。Fortran では、関数は個別に、またはブロックMODULEの下のプログラムの最後に配置されます。CONTAINS

program importance1
  implicit none
  real :: mean_value,t,ta,rr
  real :: x,xtrials,s_square_old,s_square_new,std_dev,std_error,frac_stand_dev
  integer :: k
  real :: alpha=0.90
  integer :: trials=50
  xtrials=trials

  t=0.0
  s_square_old=0.0

contains

  real function f(x)
    real :: x
    f=exp(x)
  end function

  real function g(x)
    real :: x
    g=(alpha/(exp(alpha)-1.))*exp(alpha*x)
  end function

end program
于 2013-10-27T00:15:04.910 に答える