Tôi đang viết một chương trình bằng Python sẽ phù hợp với các hình dạng Gaussian và Lorentzian cho một số dữ liệu cộng hưởng nhất định. Ban đầu tôi bắt đầu sử dụng scipy.optimize.leastsq
nhưng đã thay đổi thành sử dụng optimize.curve_fit
sau khi gặp khó khăn trong việc truy xuất lỗi trong các tham số được tối ưu hóa từ ma trận hiệp phương sai.Vượt qua các đối số bổ sung bằng scipy.optimize.curve_fit?
tôi đã xác định một chức năng để phù hợp với một tổng của Gauss và Lorentzian:
def mix(x,*p):
ng = numg
p1 = p[:3*ng]
p2 = p[3*ng:]
a = sumarray(gaussian(x,p1),lorentzian(x,p2))
return a
nơi p
là một mảng của các dự đoán ban đầu vào các thông số phù hợp. Đây là trường hợp mà nó được gọi là sử dụng curve_fit
:
leastsq,covar = opt.curve_fit(mix,energy,intensity,inputtot)
Tại thời điểm numg
(số lượng hình dạng Gaussian) là một biến toàn cầu. Có cách nào để nó có thể được kết hợp thành curve_fit
làm đối số bổ sung thay vì, có thể được thực hiện với leastsq
không?
Cảm ơn rất nhiều! Làm việc hoàn hảo –