use Math::Trig;
$a = 1;
$x_max = 5;
$x_min = 0;
$I_r=(1*2**-1)*sqrt(pi()*$a**-1);
$f[$x] = exp(-$a*$x**2);
$x_div = 20000000; #精度向上因子
$i_max = ($x_max-$x_min)*$x_div;
for($i = 0 ; $i < $i_max ; $i++ ){
$dx = 1/$x_div;
$x = $i*$dx;
$y = exp(-$a*$x**2);
$I += $y*$dx;
$dI = $I_r-$I;
last if($dI<=0);
print "$x\t$y\t$I\t$dI\n" if ($i%($i_max/10)==0);
# sleep(1);
}
print "$x\t$y\t$I\t$dI\n";
print "$I_r\n" ;
exit;
C:\>perl gaus.pl
0 1 5e-008 0.886226875452758
0.5 0.778800783071405 0.461281050882873 0.424945874569885
1 0.367879441171442 0.74682416700966 0.139402758443098
1.5 0.105399224561864 0.856188421260223 0.0300385041925354
2 0.0183156388887342 0.882081416220737 0.00414550923202095
2.5 0.00193045413622771 0.885866298666317 0.000360626786440998
3 0.00012340980408668 0.886207373263146 1.95521896119155e-005
3.5 4.78511739212901e-006 0.88622629189962 6.33553137507903e-007
3.92599695 2.02312551357165e-007 0.886226925452761 -3.10862446895044e-015
0.886226925452758
C:\>
C:\WINDOWS\デスクトップ>perl gauss.pl
5e-008 0.886226875452758
0.0500000500009228 0.836226875451835
0.100000050002361 0.786226875450397
0.150000050003798 0.73622687544896
0.200000050005236 0.686226875447522
0.250000050006674 0.636226875446084
0.300000049980356 0.586226875472402
0.350000049954038 0.53622687549872
0.400000049927721 0.486226875525037
0.450000049901403 0.436226875551355
0.500000049875085 0.386226875577673
0.550000049904278 0.33622687554848
0.600000049933472 0.286226875519286
0.650000049962665 0.236226875490093
0.700000049991858 0.1862268754609
0.750000050021052 0.136226875431706
0.800000050050245 0.0862268754025128
0.850000050079438 0.0362268753733195
0.8862269 1 0.88622695010059 -2.46478322196708e-008
0.886226925452758
C:\WINDOWS\デスクトップ>
C:\WINDOWS\デスクトップ>perl -le "$a=1; $x=1; for(0..10){ $x=$_; $y += exp(-$a*$x**2); print$y};"