Để lấy khớp bình phương nhỏ nhất (least squares fit) của chuỗi Hermite_e với dữ liệu, dùng hermite_e.hermfit() trong Python NumPy. Trả về hệ số Hermite_e bậc thấp đến cao. Nếu y 2-D, hệ số cột k của y ở cột k. Tham số x: tọa độ x của M điểm mẫu (x[i], y[i]). Tham số y: tọa độ y. Nhiều tập điểm cùng x có thể khớp độc lập bằng y 2-D. Tham số deg: bậc đa thức khớp. Tham số rcond: số điều kiện tương đối. Giá trị suy biến < rcond * max(suy biến) bị bỏ qua. Mặc định len(x)*eps (~2e-16). Tham số full: False chỉ trả hệ số, True trả thêm info phân rã giá trị suy biến. Tham số w: trọng số. w[i] áp dụng cho dư chưa bình phương y[i] - y_hat[i]. Trọng số nghịch phương sai: w[i] = 1/sigma(y[i]). Mặc định None.
Các bước
Import:
import numpy as np
from numpy.polynomial import hermite_e as H
Tọa độ x:
x = np.linspace(-1, 1, 51)
Hiển thị x.
Tọa độ y:
y = x**3 - x + np.random.randn(len(x))
print("\nTọa độ Y...\n", y)
Khớp bình phương nhỏ nhất:
c, stats = H.hermefit(x, y, 3, full=True)
print("\nKết quả...\n", c)
print("\nKết quả...\n", stats)
Ví dụ
import numpy as np
from numpy.polynomial import hermite_e as H
x = np.linspace(-1, 1, 51)
print("Tọa độ X...\n", x)
y = x**3 - x + np.random.randn(len(x))
print("\nTọa độ Y...\n", y)
c, stats = H.hermefit(x, y, 3, full=True)
print("\nKết quả...\n", c)
print("\nKết quả...\n", stats)
Kết quả
Tọa độ X... [-1. -0.96 -0.92 ... 0.96 1. ] Tọa độ Y... [-0.54 -1.18 -0.82 ... -0.58 0.69] Kết quả... [-0.54892802 4.71593168 -0.40858959 2.08689429] Kết quả... [array([51.90771673]), 4, array([1.41192215, 1.37967947, 0.31061966, 0.08047256]), 1.1324274851176597e-14]
Giải thích: Khớp dữ liệu y = x³ - x + nhiễu Gaussian bằng chuỗi Hermite_e bậc 3. Hệ số ước lượng: c₀≈-0.55, c₁≈4.72, c₂≈-0.41, c₃≈2.09. Lý thuyết: x³ - x = He₃(x) + 2·He₁(x) → hệ số [0, 2, 0, 1]. Nhiễu làm lệch hệ số. Stats: tổng bình phương dư, rank, giá trị suy biến, rcond.