我正在尝试编写一个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
如果您愿意,我可以为您提供收集汇总列表的快照。
这是我从这些值中获得的图表:
我的程序在哪里出错?
答案 0 :(得分:2)
您没有计算错误函数:您正在计算错误函数scaled by half the square root of pi。此缩放系数约为0.886
。
Fortran 2008引入了内在函数erf
,如果您想更详细地检查答案。