Xấp xỉ trong python

Hàm mô hình, f(x,…). Nó phải lấy biến độc lập làm đối số đầu tiên và các tham số phù hợp làm đối số còn lại riêng biệt

xdata array_like hoặc đối tượng

Biến độc lập nơi dữ liệu được đo lường. Thường phải là một chuỗi độ dài M hoặc một mảng hình (k,M) cho các hàm có k bộ dự đoán, nhưng thực tế có thể là bất kỳ đối tượng nào

ydata mảng_like

Dữ liệu phụ thuộc, một mảng độ dài M - trên danh nghĩa là

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
3

p0 array_like, tùy chọn

Dự đoán ban đầu cho các tham số (độ dài N). Nếu Không, thì tất cả các giá trị ban đầu sẽ là 1 (nếu số lượng tham số cho hàm có thể được xác định bằng cách sử dụng nội quan, nếu không thì Lỗi Giá trị sẽ tăng lên)

sigma Không có hoặc chuỗi độ dài M hoặc mảng MxM, tùy chọn

Xác định độ không đảm bảo trong ydata. Nếu chúng ta định nghĩa phần dư là

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
4, thì việc giải thích sigma phụ thuộc vào số thứ nguyên của nó

  • Một sigma 1-D phải chứa các giá trị độ lệch chuẩn của lỗi trong ydata. Trong trường hợp này, chức năng được tối ưu hóa là

    >>> def func(x, a, b, c):
    ..     return a * np.exp(-b * x) + c
    
    5

  • Một sigma 2-D phải chứa ma trận hiệp phương sai của các lỗi trong ydata. Trong trường hợp này, chức năng được tối ưu hóa là

    >>> def func(x, a, b, c):
    ..     return a * np.exp(-b * x) + c
    
    0

    Mới trong phiên bản 0. 19

Không (mặc định) tương đương với sigma 1-D chứa đầy những cái

absolute_sigma bool, tùy chọn

Nếu Đúng, sigma được sử dụng theo nghĩa tuyệt đối và hiệp phương sai tham số ước tính pcov phản ánh các giá trị tuyệt đối này

Nếu Sai (mặc định), chỉ có độ lớn tương đối của các giá trị sigma mới quan trọng. Ma trận hiệp phương sai tham số được trả về pcov dựa trên sigma chia tỷ lệ theo hệ số không đổi. Hằng số này được đặt bằng cách yêu cầu chisq giảm cho các tham số tối ưu bật lên khi sử dụng sigma được chia tỷ lệ bằng đơn vị. Nói cách khác, sigma được chia tỷ lệ để phù hợp với phương sai mẫu của phần dư sau khi điều chỉnh. Mặc định là Sai. Về mặt toán học,

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
1

check_finite bool, tùy chọn

Nếu Đúng, hãy kiểm tra xem các mảng đầu vào không chứa nans infs và tăng ValueError nếu có. Đặt tham số này thành Sai có thể âm thầm tạo ra kết quả vô nghĩa nếu mảng đầu vào có chứa nans. Mặc định là Đúng

giới hạn 2-bộ của array_like, tùy chọn

Giới hạn dưới và trên của các tham số. Mặc định là không có giới hạn. Mỗi phần tử của bộ dữ liệu phải là một mảng có độ dài bằng số lượng tham số hoặc là một đại lượng vô hướng (trong trường hợp đó, giới hạn được coi là giống nhau cho tất cả các tham số). Sử dụng

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
2 với một ký hiệu thích hợp để vô hiệu hóa giới hạn trên tất cả hoặc một số tham số

Mới trong phiên bản 0. 17

phương thức {‘lm’, ‘trf’, ‘dogbox’}, tùy chọn

Phương pháp sử dụng để tối ưu hóa. Xem

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
3 để biết thêm chi tiết. Mặc định là 'lm' cho các vấn đề không bị ràng buộc và 'trf' nếu các giới hạn được cung cấp. Phương pháp 'lm' sẽ không hoạt động khi số lượng quan sát nhỏ hơn số lượng biến, sử dụng 'trf' hoặc 'dogbox' trong trường hợp này

Mới trong phiên bản 0. 17

jac có thể gọi được, chuỗi hoặc Không, tùy chọn

Hàm có chữ ký

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
4 tính toán ma trận Jacobian của hàm mô hình đối với các tham số dưới dạng cấu trúc giống như mảng dày đặc. Nó sẽ được thu nhỏ theo sigma được cung cấp. Nếu Không có (mặc định), Jacobian sẽ được ước tính bằng số. Chuỗi từ khóa cho các phương pháp 'trf' và 'dogbox' có thể được sử dụng để chọn lược đồ sai phân hữu hạn, xem
>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
3

Mới trong phiên bản 0. 18

full_output boolean, tùy chọn

Nếu True, hàm này trả về thông tin bổ sung. infodict, mesg và ier

Mới trong phiên bản 1. 9

**kwargs

Đối số từ khóa được chuyển đến

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
6 cho
>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
7 hoặc
>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
3 nếu không

Mảng trả về mảng

Các giá trị tối ưu cho các tham số sao cho tổng các phần dư bình phương của

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
9 được giảm thiểu

pcov mảng 2 chiều

Hiệp phương sai ước tính của popt. Các đường chéo cung cấp phương sai của ước tính tham số. Để tính toán một lỗi độ lệch chuẩn trên các tham số, hãy sử dụng

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
00

Tham số sigma ảnh hưởng như thế nào đến hiệp phương sai ước tính phụ thuộc vào đối số absolute_sigma, như được mô tả ở trên

Nếu ma trận Jacobian tại giải pháp không có thứ hạng đầy đủ, thì phương thức 'lm' trả về một ma trận chứa đầy

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
2, mặt khác, phương thức 'trf' và 'dogbox' sử dụng nghịch đảo giả Moore-Penrose để tính toán ma trận hiệp phương sai

infodict dict (chỉ được trả lại nếu full_output là True)

một từ điển các đầu ra tùy chọn với các phím

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
02

Số lần gọi hàm. Các phương thức 'trf' và 'dogbox' không tính các lệnh gọi hàm cho xấp xỉ Jacobian bằng số, trái ngược với phương thức 'lm'

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
03

Các giá trị hàm được đánh giá tại giải pháp

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
04

Một hoán vị của ma trận R của phân tích thừa số QR của ma trận Jacobian gần đúng cuối cùng, cột được lưu trữ thông minh. Cùng với ipvt, hiệp phương sai của ước lượng có thể xấp xỉ. Phương pháp 'lm' chỉ cung cấp thông tin này

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
05

Một mảng số nguyên có độ dài N xác định ma trận hoán vị, p, sao cho fjac*p = q*r, trong đó r là tam giác trên với các phần tử đường chéo có độ lớn không tăng. Cột j của p là cột ipvt(j) của ma trận đơn vị. Phương pháp 'lm' chỉ cung cấp thông tin này

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
06

Vectơ (hoán vị(q) * fvec). Phương pháp 'lm' chỉ cung cấp thông tin này

Mới trong phiên bản 1. 9

mesg str (chỉ trả về nếu full_output là True)

Một thông báo chuỗi cung cấp thông tin về giải pháp

Mới trong phiên bản 1. 9

ier int (chỉ trả về nếu full_output là True)

Cờ số nguyên. Nếu nó bằng 1, 2, 3 hoặc 4, giải pháp đã được tìm thấy. Nếu không, giải pháp không được tìm thấy. Trong cả hai trường hợp, biến đầu ra tùy chọn mesg cung cấp thêm thông tin

Mới trong phiên bản 1. 9

Tăng giá trịLỗi

nếu ydata hoặc xdata chứa NaN hoặc nếu các tùy chọn không tương thích được sử dụng

Lỗi runtime

nếu tối thiểu hóa bình phương nhỏ nhất không thành công

Tối ưu hóaCảnh báo

nếu hiệp phương sai của các tham số không thể được ước tính

Xem thêm

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
3

Giảm thiểu tổng bình phương của các hàm phi tuyến

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
08

Tính hồi quy bình phương nhỏ nhất tuyến tính cho hai bộ phép đo

ghi chú

Người dùng phải đảm bảo rằng các đầu vào xdata, ydata và đầu ra của f là

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
09, nếu không quá trình tối ưu hóa có thể trả về kết quả không chính xác

Với

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
7, thuật toán sử dụng thuật toán Levenberg-Marquardt cho đến
>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
6. Lưu ý rằng thuật toán này chỉ có thể xử lý các vấn đề không bị ràng buộc

Các ràng buộc hộp có thể được xử lý bằng các phương thức 'trf' và 'dogbox'. Tham khảo chuỗi tài liệu của

>>> def func(x, a, b, c):
..     return a * np.exp(-b * x) + c
3 để biết thêm thông tin