Để 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
polyfitbằng cách truyền choymộ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
deglà 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ậcdegsẽ đượ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 đóepslà độ chính xác tương đối của kiểu float của nền tảng, khoảng2e-16trong 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ố; khiTrue, 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ươngy[i] - y_hat[i]tạix[i]. Lý tưởng nhất trọng số được chọn sao cho các sai số của tíchw[i]*y[i]đều có cùng phương sai. Khi sử dụng trọng số nghịch phương sai, dùngw[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]