最後に、下のように行列計算を行って結果を出力するんだな。
[∑y_n*x_n]=[∑x_n*x_n ∑x_n][a] [∑y_n ] [∑x_n ∑1 ][b] C:\WINDOWS\デスクトップ>perl -alne "$d=$F[2]*$F[4]-$F[0]**2;@a=(($F[4]*$F[3]-$F[0]*$F[1])/$d,($F[2]*$F[1]-$F[0]*$F[3])/$d);END{print \"@a\";}" c.dat 1.03341121358083 1.1275431582802 C:\WINDOWS\デスクトップ>
1つ目がa、2つ目がbなんだな。自信がないのでgnuplotで確かめてみるんだな。
gnuplot> fit a*x+b 'a.dat' via a,b Final set of parameters Asymptotic Standard Error ======================= ========================== a = 1.03341 +/- 0.01167 (1.129%) b = 1.12754 +/- 0.1398 (12.4%) correlation matrix of the fit parameters: a b a 1.000 b -0.877 1.000 gnuplot> print a 1.03341121360931 gnuplot> print b 1.12754315789153 gnuplot> plot 'a.dat',a*x+b
確かに近い値となっていることがわかるんだな。完成したのでGIFで出力しておくんだな。
gnuplot> set terminal gif Terminal type set to 'gif' Options are 'small size 640,480 ' gnuplot> set output 'a.gif' gnuplot> plot 'a.dat',a*x+b gnuplot>