나는 물리학 과정을 설명하는 Imaginary
함수를 가지고 있는데 이것을 데이터 세트 x_interpolate, y_interpolate
에 맞추고 싶습니다. 이 함수는 Lorentzian 피크 함수의 한 형태이며 피크 찾기 알고리즘을 사용하여 찾을 수있는 f_peak
(피크 위치)을 제외하고 사용자가 제공 한 초기 값이 있습니다. offset을 제외한 모든 fit 매개 변수는 양수가 될 것으로 예상되므로 이에 따라 bounds_I
을 설정했습니다.curve_fit에서 맞는 매개 변수 수정하기
def Imaginary(freq, alpha, res, Ms, off):
numerator = (2*alpha*freq*res**2)
denominator = (4*(alpha*res*freq)**2) + (res**2 - freq**2)**2
Im = Ms*(numerator/denominator) + off
return Im
pI = np.array([alpha_init, f_peak, Ms_init, 0])
bounds_I = ([0,0,0,0, -np.inf], [np.inf,np.inf,np.inf, np.inf])
poptI, pcovI = curve_fit(Imaginary, x_interpolate, y_interpolate, pI, bounds=bounds_I)
경우에 따라 피팅 프로세스 중에 매개 변수 f_peak
을 고정하고 싶습니다. 이것은 여러 가지 이유로이 일을 더 파이썬 방법이 있는지 그래서 궁금해서이 일을하지 최적의 방법입니다
bounds_I = ([0,f_peak+0.001,0,0, -np.inf], [np.inf,f_peak-0.001,np.inf, np.inf])
: 나는에 bounds_I
을 변경하여 쉬운 솔루션을 시도? 도움 주셔서 감사합니다