과꾸로

[gnuplot] 변수가 3개 이상인 함수에 data fitting하기. set dummy 본문

연구자료

[gnuplot] 변수가 3개 이상인 함수에 data fitting하기. set dummy

(gguro) 2018. 4. 30. 10:26


궁극의 plotting tool인 gnuplot을 이용해서 data fitting을 해보자. f(x)형태의 함수는 쉽게 fitting할 수 있는데, 만약에 f(x,y,z) 같은 함수라면 어떨까? 아래 링크에서 답을 찾았다.





cavendish.data 라는 파일이 이렇게 생겼다고 하자. 


#h  k   l   I


1   1   1   7807

2   2   0   9664

3   2   1   6042

4   0   0   7394

5   3   2   8358

6   2   0   4896

7   3   0   7896




그걸 I(h,k,l)이라는 함수에 fitting하고 싶으면 다음과 같이 하면 된다.


### Function

I(h,k,l) = M * (F * ((sin(A*pi*sqrt(h*h+k*k+l*l)*L))/(A*2*pi*sqrt(h*h+k*k+l*l)) ))**2


### Initial values

M=1.0

F=0.5

A=1.0

L=1.0


### Fitting

set dummy h, k, l

fit I(h,k,l) "cavendish.data" using 1:2:3:4 via M, F, A, L



set dummy 로 변수를 설정해주는 부분이 중요하다! 



그렇게 fitting한 결과를 data와 겹쳐서 보고 싶으면 


plot 'cavendish.data' u 1:4 w p ,\

     'cavendish.data' u 1:(I($1,$2,$3)) w lp lt 1


라고 하면 된다. data와 함수가 잘 맞지 않아서 그런지 그래프가 그다지 보기 좋지는 않다. 







2018년 4월 30일


과꾸로





Comments