Điều chỉnh đường cong là một công cụ mạnh mẽ khi chúng ta muốn xác định hoặc mô hình hóa mối quan hệ giữa hai bộ dữ liệu và được thực hiện bằng cách tìm hàm hoặc đường cong phù hợp nhất trên toàn bộ phạm vi. Hàm này sau đó có thể được sử dụng để nội suy dữ liệu trong phạm vi đã cho hoặc ngoại suy các giá trị có thể có bên ngoài phạm vi
Hình thức khớp đường cong phổ biến nhất là hồi quy tuyến tính, trong đó chúng tôi tìm đường mô tả đúng nhất mối quan hệ của một biến với biến khác và sử dụng đường đó để dự đoán. Tuy nhiên, tất cả chúng ta đều biết rằng hầu hết dữ liệu không có mối quan hệ tuyến tính và khi đó đa thức là cách khớp tốt hơn
Khớp đa thức tuân theo cùng một khái niệm như khớp tuyến tính nhưng ở đây, chúng tôi đang sử dụng đa thức bậc n để mô tả mối quan hệ của dữ liệu của chúng tôi. Tuy nhiên, cả hai đều đang sử dụng phương pháp bình phương nhỏ nhất để xác định các hàm phù hợp nhất
Trong python, cách phổ biến nhất để khớp đường cong là sử dụng hàm khớp đường cong trong scipy
from scipy.optimize import curve_fit
Đây là một cách tiếp cận tốt vì phương pháp này có thể được sử dụng để khớp tất cả các hàm, không chỉ đa thức và mã duy nhất bạn cần thay đổi là mã của hàm mà bạn muốn khớp với dữ liệu của mình
Tuy nhiên, một vấn đề nảy sinh, ít nhất là trong việc khớp đa thức, khi bạn muốn tìm bậc tốt nhất phù hợp với dữ liệu của mình. Có, bạn vẫn có thể viết một hàm cho việc này nhưng điều đó thực sự làm phức tạp phần viết mã và khiến bạn có ít thời gian hơn để thực hiện phân tích thực tế
Điều tốt là numpy có chức năng tích hợp sẵn để khớp và có thể được gọi bằng cách gọi đơn giản là numpy. đa năng
Đây là một mã ví dụ để sử dụng mã này thay vì phương pháp khớp đường cong thông thường trong python
Cài đặt
>>> b.derivative Polynomial[12, 6, 2] >>> str[b.derivative] 12x^2 + 6x + 24
Tài liệu
Nhấp vào đây để xem tài liệu có nguồn gốc từ mã và trợ giúp
Ví dụ nhanh
Khởi tạo linh hoạt
>>> from polynomial import Polynomial >>> a = Polynomial[1, 2, 3, 4] >>> str[a] x^3 + 2x^2 + 3x + 4 >>> b = Polynomial[[4 - x for x in range[4]]] >>> str[b] 4x^3 + 3x^2 + 2x + 1
Dẫn suất đầu tiên
>>> b.derivative Polynomial[12, 6, 2] >>> str[b.derivative] 12x^2 + 6x + 2
Đạo hàm bậc hai hoặc cao hơn
>>> str[b.nth_derivative[2]] 24x + 6
Phép cộng
________số 8Tính giá trị cho một x đã cho
>>> [a + b].calculate[5] 780 >>> а[2] # equivalent to a.calculate[2] 26
Phép nhân
poly = np.polyfit[x, sine, deg=5]
0Truy cập hệ số theo mức độ
poly = np.polyfit[x, sine, deg=5]
1cắt lát
poly = np.polyfit[x, sine, deg=5]
2Truy cập các hệ số theo quy ước tên
poly = np.polyfit[x, sine, deg=5]
3Phép chia và số dư
poly = np.polyfit[x, sine, deg=5]
4Kiểm tra xem nó có chứa các điều khoản nhất định
>>> b.derivative Polynomial[12, 6, 2] >>> str[b.derivative] 12x^2 + 6x + 20
tích phân xác định
>>> b.derivative Polynomial[12, 6, 2] >>> str[b.derivative] 12x^2 + 6x + 21
linh tinh
>>> b.derivative Polynomial[12, 6, 2] >>> str[b.derivative] 12x^2 + 6x + 22
Rễ và phân biệt đối xử
>>> b.derivative Polynomial[12, 6, 2] >>> str[b.derivative] 12x^2 + 6x + 23