1

我正在尝试为蒙特卡洛重要性采样编译这个程序,但我遇到了几个问题:

1 - 错误:(1) 处的数据声明中的语法错误,参考以下行,其中 (1) 位于单词“function”之后和下方。

real function f(x)

2 - 错误:(1)和(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 回答