错误函数的模拟给出了错误的情节

Simulation of error function gives wrong plot

我正在尝试编写一个 Fortran 程序,该程序将模拟误差函数并针对不同的 x 值给出其值的列表。它确实给出了一个最初是正确的列表。然而,当我扩展域时,我看到它收敛到 0.885 而它应该收敛到 1。

代码如下:

  Program erf_func_calc
    Real:: y,z,h,w
    Integer:: i,a
    h=0.0001
    open(1,file='error_function_calculator.txt',status='unknown')
    write(1,*) 'x','                  ','erf(x)'
    write(1,*) '0','                   ','0.00'
    z=0.0
    Do a=1,40000
      y=a*h
      w=-y*y
      z=z+h*exp(w)
      write(1,*) y,'                ',z,'               ',exp(w)
    End do
    close(1)
  End program erf_func_calc

如果你愿意,我可以给你一个收敛列表的快照。

这是我从这些值中获得的图表:

我的程序哪里出错了?

您不是在计算误差函数:您是在计算误差函数scaled by half the square root of pi。这个比例因子大约是 0.886.

Fortran 2008 引入了内在函数 erf,如果您想更详细地检查您的答案。