Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Lấy khớp bình phương nhỏ nhất của chuỗi Laguerre với dữ liệu trong Python

Để lấy khớp bình phương nhỏ nhất của chuỗi Laguerre với dữ liệu, hãy sử dụng phương thức laguerre.lagfit() trong NumPy Python. Phương thức này trả về các hệ số Laguerre được sắp xếp từ bậc thấp đến cao. Nếu y là 2-D, các hệ số cho dữ liệu ở cột k của y sẽ nằm ở cột k.

Tham số:

  • x: Tọa độ x của M điểm mẫu (x[i], y[i]).
  • y: Tọa độ y của các điểm mẫu. Nhiều tập điểm mẫu chia sẻ cùng tọa độ x có thể được khớp độc lập bằng một lần gọi polyfit bằng cách truyền cho y một mảng 2-D chứa một tập dữ liệu mỗi cột.
  • deg: Bậc của các đa thức khớp. Nếu deg là một số nguyên đơn lẻ, tất cả các hạng tử lên đến và bao gồm hạng tử bậc deg sẽ được bao gồm trong khớp.
  • rcond: Số điều kiện tương đối của khớp. Giá trị riêng nhỏ hơn rcond, tương đối so với giá trị riêng lớn 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 kiểu float của nền tảng, khoảng 2e-16 trong hầu hết các trường hợp.
  • full: Công tắc xác định bản chất của giá trị trả về. Khi False (mặc định) chỉ trả về hệ số; khi True, thông tin chẩn đoán từ phân rã giá trị riêng cũng được trả về.
  • w: Trọng số. Nếu không phải None, trọng số w[i] áp dụng cho dư lượng không bình phương y[i] - y_hat[i] tại x[i]. Lý tưởng nhất trọng số được chọn sao cho các sai số của tích w[i]*y[i] đều có cùng phương sai. Khi sử dụng trọng số nghịch phương sai, dùng w[i] = 1/sigma(y[i]). Giá trị mặc định là None.

Các bước thực hiện

1. Nhập thư viện cần thiết

import numpy as np
from numpy.polynomial import laguerre as L

2. Tạo tọa độ x

x = np.linspace(-1, 1, 51)

3. Hiển thị tọa độ x

print("Tọa độ X...\n", x)

4. Tạo tọa độ y

y = x**3 - x + np.random.randn(len(x))
print("\nTọa độ Y...\n", y)

5. Lấy khớp bình phương nhỏ nhất

c, stats = L.lagfit(x, y, 3, full=True)
print("\nKết quả...\n", c)
print("\nThống kê...\n", stats)

Ví dụ hoàn chỉnh

import numpy as np
from numpy.polynomial import laguerre as L

# Tọa độ x
x = np.linspace(-1, 1, 51)

# Hiển thị tọa độ x
print("Tọa độ X...\n", x)

# Tọa độ y
y = x**3 - x + np.random.randn(len(x))
print("\nTọa độ Y...\n", y)

# Lấy khớp bình phương nhỏ nhất của chuỗi Laguerre
c, stats = L.lagfit(x, y, 3, full=True)
print("\nKết quả...\n", c)
print("\nThống kê...\n", stats)

Kết quả đầu ra

Tọa độ X...
 [-1.   -0.96 -0.92 -0.88 -0.84 -0.8  -0.76 -0.72 -0.68 -0.64 -0.6  -0.56  -0.52 -0.48 -0.44 -0.4  -0.36 -0.32 -0.28 -0.24 -0.2  -0.16 -0.12 -0.08  -0.04  0.    0.04  0.08  0.12  0.16  0.2   0.24  0.28  0.32  0.36  0.4   0.44  0.48  0.52  0.56  0.6   0.64  0.68  0.72  0.76  0.8   0.84  0.88   0.92 0.96 1. ]
Tọa độ Y...
 [ 2.60011413  0.59715605  1.38401537 -1.76702116 -1.48948207  0.19627462  0.6350364   0.41990937 -0.72067571  0.07617042  0.33693761  1.08876378  0.71283482  1.36064396  0.55285081  1.94847732  1.14871192 -0.26605826 -1.18954961  1.15875553  0.30059389 -0.91705656  1.27988081 -0.42751846  0.44466317 -1.41118489  0.31492152  0.70787202 -0.85295102 -0.45038585 -2.05583591 -0.0799937  -1.13000262  0.09813804 -0.33068455  0.03329552 -0.7666786  -0.9596926  -0.72177629 -0.62779169 -0.75490363 -0.7826376  -2.26888118  1.1356559  -0.39593627  0.02709962 -0.95303898 -0.01582218  0.65609447  1.43566953  1.10442549]
Kết quả...
 [ 11.2805293  -36.35804353  36.47911284 -11.65554029]
Thống kê...
 [array([43.46828156]), 4, array([1.88377481, 0.66402594, 0.10220349, 0.00405509]), 1.1324274851176597e-14]