Python을 이용한 curve fitiing은
scipy의 curve_fit 함수를 이용해 쉽게 코딩 할 수 있습니다.
함수에 대한 설명을 하면
(자세한 설명은 SciPy Guide 참조)
scipy.optimize.curve_fit(f, xdata, ydata, p0=None, sigma=None, absolute_sigma=False, **kw)
함수는 Levenberg-Marquardt algorithm(Wikipedia) 을 사용하였다고 나와 있습니다.
Parameters
f |
(호출가능) fitting에 사용되는 모델 함수 |
xdata |
(M-length sequence or an (k,M)-shaped array) 측정된 독립변수 |
ydata |
(M-length sequence) 종속 변수, 보통 f(xdata, ...) |
p0 |
(초기값 = None, scalar or N-length sequence,선택가능) 파라미터의 추측 초기값 지정 지정하지 않으면 모두 1 |
sigma |
(초기값 = None, M-length sequence) least-square problem 에서의 가중치 |
absolute_sigma |
(False or True, 선택가능) False : sigma는 상대가중치를 의미한다. 가중치의 크기가 중요하지 않고, 상대적인 비율이 중요하다. 반환되는 공분산 행렬인 pcov 는 추측된 오차에 근거한다. True : sigma가 입력데이터의 표준편차 오차를 의미한다. 반환되는 pcov 는 이 값에 근거한다. |
Returns
popt |
(array) 오차 제곱의 합이 최소가되는 파라미터의 최적의 값 |
pcov |
(2d array) popt의 추측 공분산 표준편차 오차를 계산하려면 perr = np.sqrt(np.diag(pcov)) 를 이용 |
위의 함수를 이용하여 분석이 필요한 data를 fitting 해 보았습니다.
분석에 이용된 코드는 다음과 같습니다.
Fig 1. Source code for curve fitting
코드는 5부분으로 볼 수 있습니다.
1) fitting에 필요한 data는 data.txt에서 불러옴
2) 모델 함수(parameters : a, ν) 정의
:
3) curve_fit 함수를 이용하여 fitting
4) 최적의 파라미터,에러 출력
5) plot
실행 후 얻은 결과는 아래와 같습니다.
Fig 2. printed result on python shell
Fig 3. plotted result
같은 data를 이용해 origin에서도 fitting을 해보았습니다.
Fig 4. fitting by origin
비슷한 값을 주는 것을 볼 수 있습니다.
(origin으로 파라미터를 두개 피팅하는 것이 쉽지 않아 a 값은 입력해주었습니다.)
'Programming > Python' 카테고리의 다른 글
유용한 파이썬(Python) 학습 사이트 (0) | 2015.09.18 |
---|---|
환경변수에 Python 추가하기 (2) | 2015.04.02 |
Python-excel package 설치하기 (0) | 2015.04.02 |
Gas density calculator (0) | 2014.08.07 |
ImportError: matplotlib requires dateutil (0) | 2014.07.17 |