11.2. Curve의 fitting

실제 주어진 데이터의 그래프를 그리고, 그 그래프의 함수를 찾아내는 것이 필요할 때가 있다. 그래프의 대략적인 함수를 알고 그 함수를 계수를 찾아내는 방식으로 접근해 나간다. gnuplot에서 이 문제를 해결해 보자.

force.dat 파일의 함수를 f1(x)이라 정의하고 그 계수, a1과 b1을 찾아보자.

f1(x) = a1*tanh(x/b1)            	# fitting하고자 하는 함수를 정의한다.
a1 = 300; b1 = 0.005;            	# a1과 b1의 초기값을 정의한다
fit f1(x) 'force.dat' using 1:2 via a1, b1

Final set of parameters            Asymptotic Standard Error
=======================            ==========================
a1      = 308.687                  +/- 10.62         (3.442%)
b1      = 0.00226668               +/- 0.0002619     (11.55%)

그리고 :

f2(x) = a2 * tanh(x/b2)       
a2 = 300; b2 = 0.005;          
fit f2(x) 'force.dat' using 1:3 via a2, b2

Final set of parameters            Asymptotic Standard Error
=======================            ==========================
a2      = 259.891                  +/- 12.82         (4.933%)
b2      = 0.00415497               +/- 0.0004297     (10.34%)

이제 fitting 된 값을 이용해서 그래프를 그려보자.

set term post enhance
set output 'force.eps'
set key 0.018,150 title "F(x) = A tanh (x/B)"             
set title "Force Deflection Data \n and curve fit"      # \n을 이용 제목의 줄을 바꾼다.
set pointsize 1.5                              # larger point!
set xlabel 'Deflection, {/Symbol D}_x (m)'            
set ylabel 'Force, {/Times-Italic F}_A, (kN)'            
plot    "force.dat" using 1:2 title 'Column data' with points 3, \
      "force.dat" using 1:3 title 'Beam data'   with points 4, \
      a1 * tanh( x / b1 ) title 'Column-fit: A=309, B=0.00227', \
      a2 * tanh( x / b2 ) title 'Beam-fit: A=260, B=0.00415'

그림 11-1. 그래프의 fitting