Ít hình vuông nhất đa thức phù hợp.
Ghi chú
Điều này là một phần của API đa thức cũ. Kể từ phiên bản 1.4, API đa thức mới được xác định trong numpy.polynomial
được ưu tiên. Một bản tóm tắt về sự khác biệt có thể được tìm thấy trong hướng dẫn chuyển tiếp.transition
guide.
Phù hợp với đa thức p[x] = p[0] * x**deg + ... + p[deg]
độ deg đến các điểm [x, y]. Trả về một vectơ của các hệ số p giúp giảm thiểu lỗi bình phương theo thứ tự deg, deg-1, 0 0.
Phương pháp lớp Polynomial.fit
được khuyến nghị cho mã mới vì nó ổn định hơn về số lượng. Xem tài liệu của phương thức để biết thêm thông tin.
Tọa độ X của các điểm mẫu M [x[i], y[i]]
.
tọa độ y của các điểm mẫu. Một số bộ dữ liệu của các điểm mẫu chia sẻ cùng một tọa độ X có thể được trang bị cùng một lúc bằng cách truyền trong một mảng 2D có chứa một bộ dữ liệu trên mỗi cột.
DegintintMức độ của đa thức phù hợp
RCondFloat, tùy chọnfloat, optionalSố điều kiện tương đối của sự phù hợp. Các giá trị số ít nhỏ hơn so với giá trị số ít nhất sẽ bị bỏ qua. Giá trị mặc định là Len [x]*EPS, trong đó EPS là độ chính xác tương đối của loại phao, khoảng 2E-16 trong hầu hết các trường hợp.
Fullbool, tùy chọnbool, optionalChuyển đổi xác định bản chất của giá trị trả về. Khi nó là sai [mặc định] chỉ các hệ số được trả về, khi thông tin chẩn đoán thực từ phân tách giá trị số ít cũng được trả về.
Trọng lượng. Nếu không phải là không, trọng lượng
x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0] x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1] ... x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]0 áp dụng cho
x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0] x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1] ... x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]1 còn lại không đủ tại
x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0] x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1] ... x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]2. Lý tưởng nhất là các trọng số được chọn sao cho các lỗi của sản phẩm
x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0] x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1] ... x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]3 đều có cùng một phương sai. Khi sử dụng trọng số biến đổi nghịch đảo, hãy sử dụng
x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0] x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1] ... x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]4. Giá trị mặc định là không có.covbool hoặc str, tùy chọnbool or str, optional
Nếu được đưa ra và không sai, hãy trả lại không chỉ là ước tính mà còn cả ma trận hiệp phương sai của nó. Theo mặc định, hiệp phương sai được chia tỷ lệ bởi CHI2/DOF, trong đó DOF = M - [DEG + 1], tức là, các trọng số được cho là không đáng tin cậy ngoại trừ theo nghĩa tương đối và mọi thứ đều được chia tỷ lệ sao cho CHI2 giảm là thống nhất. Tỷ lệ này bị bỏ qua nếu
x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0] x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1] ... x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]5, có liên quan đến trường hợp các trọng số là w = 1/sigma, với sigma được biết là ước tính đáng tin cậy về độ không đảm bảo.ReturnSpnDarray, hình dạng [deg + 1,] hoặc [deg + 1, k]pndarray, shape [deg + 1,] or [deg + 1, K]
Hệ số đa thức, công suất cao nhất đầu tiên. Nếu y là 2-D, các hệ số cho tập dữ liệu K-th là trong
x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0] x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1] ... x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]6.dư lượng, xếp hạng, số ít_values, rcond
Các giá trị này chỉ được trả lại nếu
x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0] x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1] ... x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]7
Phần dư - tổng số dư bình phương của bình phương tối thiểu phù hợp
- Xếp hạng - Xếp hạng hiệu quả của Vandermonde có tỷ lệ
Ma trận hệ số
- Singular_values - Giá trị số ít của Vandermonde được chia tỷ lệ
Ma trận hệ số
Singular_values - Giá trị số ít của Vandermonde được chia tỷ lệ
RCOND - Giá trị của RCond.
Để biết thêm chi tiết, xemx[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0] x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1] ... x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]8.ndarray, shape [M,M] or [M,M,K]
Vndarray, hình dạng [m, m] hoặc [m, m, k]
Chỉ có mặt nếux[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0] x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1] ... x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]9 và
>>> import warnings >>> x = np.array[[0.0, 1.0, 2.0, 3.0, 4.0, 5.0]] >>> y = np.array[[0.0, 0.8, 0.9, 0.1, -0.8, -1.0]] >>> z = np.polyfit[x, y, 3] >>> z array[[ 0.08703704, -0.81349206, 1.69312169, -0.03968254]] # may vary0. Ma trận hiệp phương sai của các ước tính hệ số đa thức. Đường chéo của ma trận này là các ước tính phương sai cho từng hệ số. Nếu y là mảng 2-D, thì ma trận hiệp phương sai cho tập dữ liệu K-th là trong
>>> import warnings >>> x = np.array[[0.0, 1.0, 2.0, 3.0, 4.0, 5.0]] >>> y = np.array[[0.0, 0.8, 0.9, 0.1, -0.8, -1.0]] >>> z = np.polyfit[x, y, 3] >>> z array[[ 0.08703704, -0.81349206, 1.69312169, -0.03968254]] # may vary1
WARNSRANKWARNING
Thứ hạng của ma trận hệ số trong độ phù hợp bình phương nhỏ nhất là thiếu. Cảnh báo chỉ được nêu ra nếu
x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0] x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1] ... x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]9.
>>> import warnings >>> warnings.simplefilter['ignore', np.RankWarning]
Các cảnh báo có thể được tắt bằng cách
Ghi chú
Giải pháp giảm thiểu lỗi bình phương
\ [E = \ sum_ {j = 0}^k | p [x_j] - y_j |^2 \]
x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0] x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1] ... x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]
trong các phương trình:
Ma trận hệ số của các hệ số P là ma trận Vandermonde.
>>> import warnings >>> x = np.array[[0.0, 1.0, 2.0, 3.0, 4.0, 5.0]] >>> y = np.array[[0.0, 0.8, 0.9, 0.1, -0.8, -1.0]] >>> z = np.polyfit[x, y, 3] >>> z array[[ 0.08703704, -0.81349206, 1.69312169, -0.03968254]] # may vary3 phát hành A
>>> import warnings >>> x = np.array[[0.0, 1.0, 2.0, 3.0, 4.0, 5.0]] >>> y = np.array[[0.0, 0.8, 0.9, 0.1, -0.8, -1.0]] >>> z = np.polyfit[x, y, 3] >>> z array[[ 0.08703704, -0.81349206, 1.69312169, -0.03968254]] # may vary4 khi phù hợp bình phương nhỏ nhất bị điều hòa xấu. Điều này ngụ ý rằng sự phù hợp nhất không được xác định rõ do lỗi số. Các kết quả có thể được cải thiện bằng cách giảm mức độ đa thức hoặc bằng cách thay thế x bằng x - x.mean []. Tham số RCond cũng có thể được đặt thành một giá trị nhỏ hơn mặc định của nó, nhưng sự phù hợp kết quả có thể là giả mạo: bao gồm các đóng góp từ các giá trị số ít nhỏ có thể thêm nhiễu số vào kết quả.
Lưu ý rằng các hệ số đa thức phù hợp vốn đã được điều hòa xấu khi mức độ của đa thức lớn hoặc khoảng thời gian của các điểm mẫu được tập trung xấu. Chất lượng của sự phù hợp phải luôn luôn được kiểm tra trong những trường hợp này. Khi sự phù hợp đa thức không thỏa đáng, spline có thể là một sự thay thế tốt.
Người giới thiệu
2Wikipedia, đường cong phù hợp với nhau, //en.wikipedia.org/wiki/curve_fits
Wikipedia, Nội suy đa thức, //en.wikipedia.org/wiki/Polynomial_interpolation
>>> import warnings >>> x = np.array[[0.0, 1.0, 2.0, 3.0, 4.0, 5.0]] >>> y = np.array[[0.0, 0.8, 0.9, 0.1, -0.8, -1.0]] >>> z = np.polyfit[x, y, 3] >>> z array[[ 0.08703704, -0.81349206, 1.69312169, -0.03968254]] # may vary
Ví dụ
>>> p = np.poly1d[z] >>> p[0.5] 0.6143849206349179 # may vary >>> p[3.5] -0.34732142857143039 # may vary >>> p[10] 22.579365079365115 # may vary
Thật thuận tiện khi sử dụng các đối tượng
>>> import warnings >>> x = np.array[[0.0, 1.0, 2.0, 3.0, 4.0, 5.0]] >>> y = np.array[[0.0, 0.8, 0.9, 0.1, -0.8, -1.0]] >>> z = np.polyfit[x, y, 3] >>> z array[[ 0.08703704, -0.81349206, 1.69312169, -0.03968254]] # may vary5 để xử lý đa thức:
>>> with warnings.catch_warnings[]: ... warnings.simplefilter['ignore', np.RankWarning] ... p30 = np.poly1d[np.polyfit[x, y, 30]] ... >>> p30[4] -0.80000000000000204 # may vary >>> p30[5] -0.99999999999999445 # may vary >>> p30[4.5] -0.10547061179440398 # may vary
Illustration:
>>> import matplotlib.pyplot as plt >>> xp = np.linspace[-2, 6, 100] >>> _ = plt.plot[x, y, '.', xp, p[xp], '-', xp, p30[xp], '--'] >>> plt.ylim[-2,2] [-2, 2] >>> plt.show[]