1 2 3 4 5 6 7 8 9 10 |
import numpy as np from scipy.optimize import curve_fit param_initial = np.array((10., 100., 0.2, 0.0)) # initial guess param_bounds = ((0.0, -np.inf, 0.1, -np.pi), (np.inf, np.inf, 0.25, np.pi)) # bounds for parameter popt, pcov = curve_fit(fit_func, x, y, p0=param_initial, sigma=err, bounds=param_bounds) print(popt) # optimized parameters print(np.sqrt(np.diag(pcov))) # standard error |
パラメータの値をある範囲内に指定するときは,bounds option を使う.
値の与え方は,
bounds = ((min1, max1), (min2, max2), (min3, max3))
ではなく,
bounds = ((min1, min2, min3), (max1, max2, max3))
というようにする.
weight をかけたフィッティングをするには,オプション sigma を使う.
例えば,sigma = 標準偏差の配列, というように指定する.