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 Hermite với dữ liệu trong Python

Để lấy khớp bình phương nhỏ nhất của chuỗi Hermite với dữ liệu, sử dụng phương thức hermite.hermfit() trong NumPy Python. Phương thức trả về các hệ số Hermite được sắp xếp từ thấp đến cao. Nếu y là 2D, các hệ số cho dữ liệu trong cột k của y nằm trong cột k. Tham số x là tọa độ x của M điểm mẫu (x[i], y[i]). Tham số y là tọa độ y của các điểm mẫu. Một vài tập điểm mẫu chia sẻ cùng tọa độ x có thể được khớp (độc lập) với một lần gọi polyfit bằng cách truyền cho y mảng 2D chứa một tập dữ liệu mỗi cột.

Tham số deg là 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ử deg được bao gồm trong khớp. Tham số rcond là số điều kiện tương đối của khớp. Các giá trị kỳ dị nhỏ hơn rcond, tương đối với giá trị kỳ dị lớn nhất, sẽ bị bỏ qua. Giá trị mặc định là len(x)*eps, nơi 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.

Tham số full là công tắc xác định bản chất của giá trị trả về. Khi False (mặc định) chỉ các hệ số được trả về; khi True, thông tin chẩn đoán từ phân rã giá trị kỳ dị cũng được trả về. Tham số w là các trọng số. Nếu không phải None, trọng số w[i] áp dụng cho phần dư 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 sai số của các 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

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

import numpy as np
from numpy.polynomial import hermite as H

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 bậc 3:

c, stats = H.hermfit(x, y, 3, full=True)
print("\nKết quả (hệ số)...\n", c)
print("\nKết quả (thống kê)...\n", stats)

Ví dụ hoàn chỉnh

import numpy as np
from numpy.polynomial import hermite as H

# Tọa độ x
x = np.linspace(-1, 1, 51)
print("Tọa độ X...\n", 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.hermfit(x, y, 3, full=True)
print("\nKết quả (hệ số)...\n", c)
print("\nKết quả (thống kê)...\n", stats)

Kết quả đầu ra

Tọa độ X...   [-1. -0.96 -0.92 ... 0.96 1.]
Tọa độ Y...   [-1.54632387 1.51958929 ... 0.47013787]
Kết quả (hệ số)...   [-0.03198532 -0.0005095 -0.11666602 0.08302362]
Kết quả (thống kê)...   [array([49.28934723]), 4, array([1.39825832, 1.20144978, 0.74600162, 0.21183404]), 1.1324274851176597e-14]