Để tìm chuỗi Chebyshev khớp tốt nhất (theo nghĩa bình phương nhỏ nhất) với tập dữ liệu, sử dụng numpy.polynomial.chebyshev.chebfit().
Tham số chính của chebyshev.chebfit()
- x: Tọa độ x của M điểm mẫu.
- y: Tọa độ y của điểm mẫu. Có thể là 2-D để khớp nhiều tập dữ liệu cùng lúc.
- deg: Bậc của đa thức khớp. Nếu là số nguyên đơn, bao gồm tất cả các bậc đến deg.
- rcond: Số điều kiện tương đối. Giá trị riêng nhỏ hơn
rcond * max(singular_values)sẽ bị bỏ qua. Mặc định:len(x)*eps. - full: Nếu
False (mặc định), chỉ trả về hệ số. NếuTrue, trả về thêm thông tin chẩn đoán từ SVD. - w: Trọng số. Mặc định None.
Các bước thực hiện
1. Nhập thư viện
import numpy as np
from numpy.polynomial import chebyshev as C
2. Tạo tọa độ x
x = np.linspace(-1, 1, 51)
3. Tạo tọa độ y (có nhiễu ngẫu nhiên)
y = x**3 - x + np.random.randn(len(x))
4. Khớp Chebyshev bậc 3, trả về thống kê đầy đủ
c, stats = C.chebfit(x, y, 3, full=True)
print("Hệ số Chebyshev:\n", c)
print("\nThống kê khớp:\n", stats)
Ví dụ hoàn chỉnh
import numpy as np
from numpy.polynomial import chebyshev as C
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 = C.chebfit(x, y, 3, full=True)
print("\nHệ số Chebyshev (bậc 0 đến 3):\n", c)
print("\nThống kê (giá trị riêng, rank, v.v.):\n", stats)
Kết quả đầu ra (ví dụ)
Tọa độ X...
[-1. -0.96 -0.92 ... 0.96 1.]
Tọa độ Y...
[ 0.0458 -0.4101 -0.5984 ... -0.2823 0.4643]
Hệ số Chebyshev (bậc 0 đến 3):
[-0.1273 -0.0870 -0.4212 0.3296]
Thống kê...
[array([43.3449]), 4, array([1.2014, 1.1923, 0.7606, 0.7460]), 1.1324e-14]
Giải thích: Hệ số Chebyshev khớp với x³ - x (hàm mục tiêu) có nhiễu. Hệ số bậc 3 (~0.33) tương ứng với thành phần x³, hệ số bậc 1 (~-0.09) tương ứng với -x. Các hệ số bậc 0, 2 nhỏ do nhiễu ngẫu nhiên.