실제 주어진 데이터의 그래프를 그리고, 그 그래프의 함수를 찾아내는 것이 필요할 때가 있다. 그래프의 대략적인 함수를 알고 그 함수를 계수를 찾아내는 방식으로 접근해 나간다. 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' |