ADT đa thức trong Python

Trước NumPy 1. 4, là lớp được lựa chọn và nó vẫn có sẵn để duy trì khả năng tương thích ngược. Tuy nhiên, cái mới hoàn thiện hơn và các lớp tiện lợi của nó cung cấp một giao diện nhất quán hơn, hoạt động tốt hơn để làm việc với các biểu thức đa thức. Do đó được khuyến nghị cho mã hóa mới

Ghi chú

Thuật ngữ

Thuật ngữ mô-đun đa thức đề cập đến API cũ được xác định trong

>>> p1d = np.poly1d[[1, 2, 3]]
>>> p = np.polynomial.Polynomial[p1d.coef[::-1]]
1, bao gồm lớp và các hàm đa thức có tiền tố là poly có thể truy cập từ không gian tên [e. g. , , , vân vân. ]

Thuật ngữ gói đa thức đề cập đến API mới được xác định trong , bao gồm các lớp tiện lợi cho các loại đa thức khác nhau [_______0_______8,

>>> p1d = np.poly1d[[1, 2, 3]]
>>> p = np.polynomial.Polynomial[p1d.coef[::-1]]
9, v.v. ]

chuyển từ sang

Như đã lưu ý ở trên, các hàm liên quan và được xác định trong

>>> p1d = np.poly1d[[1, 2, 3]]
>>> p = np.polynomial.Polynomial[p1d.coef[::-1]]
1, chẳng hạn như và , được coi là kế thừa và không được sử dụng trong mã mới. Kể từ phiên bản NumPy 1. 4, gói được ưu tiên để làm việc với đa thức

Tham khảo nhanh

Bảng sau đây nêu bật một số điểm khác biệt chính giữa mô-đun đa thức kế thừa và gói đa thức cho các tác vụ thông thường. Lớp được nhập cho ngắn gọn

from numpy.polynomial import Polynomial

Làm cách nào để…

Di sản []

Tạo một đối tượng đa thức từ các hệ số

In [1]: rng = np.random.default_rng[]

In [2]: x = np.arange[10]

In [3]: y = np.arange[10] + rng.standard_normal[10]
0

In [1]: rng = np.random.default_rng[]

In [2]: x = np.arange[10]

In [3]: y = np.arange[10] + rng.standard_normal[10]
1

Tạo một đối tượng đa thức từ gốc

In [1]: rng = np.random.default_rng[]

In [2]: x = np.arange[10]

In [3]: y = np.arange[10] + rng.standard_normal[10]
2
In [1]: rng = np.random.default_rng[]

In [2]: x = np.arange[10]

In [3]: y = np.arange[10] + rng.standard_normal[10]
3

In [1]: rng = np.random.default_rng[]

In [2]: x = np.arange[10]

In [3]: y = np.arange[10] + rng.standard_normal[10]
4

Khớp một đa thức bậc

In [1]: rng = np.random.default_rng[]

In [2]: x = np.arange[10]

In [3]: y = np.arange[10] + rng.standard_normal[10]
5 với dữ liệu

In [1]: rng = np.random.default_rng[]

In [2]: x = np.arange[10]

In [3]: y = np.arange[10] + rng.standard_normal[10]
6

In [1]: rng = np.random.default_rng[]

In [2]: x = np.arange[10]

In [3]: y = np.arange[10] + rng.standard_normal[10]
7

[]

Lưu ý thứ tự đảo ngược của các hệ số

Hướng dẫn chuyển tiếp

Có sự khác biệt đáng kể giữa

>>> p1d = np.poly1d[[1, 2, 3]]
>>> p = np.polynomial.Polynomial[p1d.coef[::-1]]
1 và. Sự khác biệt đáng kể nhất là thứ tự của các hệ số cho các biểu thức đa thức. Tất cả các hàm khác nhau đều xử lý chuỗi có hệ số đi từ bậc 0 trở lên, đó là thứ tự đảo ngược của quy ước poly1d. Cách dễ dàng để ghi nhớ điều này là các chỉ số tương ứng với mức độ, tôi. e. ,
In [4]: np.polyfit[x, y, deg=1]
Out[4]: array[[0.93492185, 0.27149771]]
1 là hệ số của số hạng i

Mặc dù sự khác biệt trong quy ước có thể gây nhầm lẫn, nhưng thật đơn giản để chuyển đổi từ API đa thức cũ sang API mới. Ví dụ: phần sau minh họa cách bạn sẽ chuyển đổi một thể hiện biểu thị biểu thức \[x^{2} + 2x + 3\] thành một thể hiện biểu diễn .

>>> p1d = np.poly1d[[1, 2, 3]]
>>> p = np.polynomial.Polynomial[p1d.coef[::-1]]

Ngoài thuộc tính

In [4]: np.polyfit[x, y, deg=1]
Out[4]: array[[0.93492185, 0.27149771]]
4, các đa thức từ gói đa thức còn có các thuộc tính
In [4]: np.polyfit[x, y, deg=1]
Out[4]: array[[0.93492185, 0.27149771]]
5 và
In [4]: np.polyfit[x, y, deg=1]
Out[4]: array[[0.93492185, 0.27149771]]
6. Các thuộc tính này phù hợp nhất khi khớp đa thức với dữ liệu, mặc dù cần lưu ý rằng các đa thức có các thuộc tính
In [4]: np.polyfit[x, y, deg=1]
Out[4]: array[[0.93492185, 0.27149771]]
5 và
In [4]: np.polyfit[x, y, deg=1]
Out[4]: array[[0.93492185, 0.27149771]]
6 khác nhau không được coi là bằng nhau và không thể trộn lẫn trong số học

>>> p1 = np.polynomial.Polynomial[[1, 2, 3]]
>>> p1
Polynomial[[1., 2., 3.], domain=[-1,  1], window=[-1,  1], symbol='x']
>>> p2 = np.polynomial.Polynomial[[1, 2, 3], domain=[-2, 2]]
>>> p1 == p2
False
>>> p1 + p2
Traceback [most recent call last]:
    ...
TypeError: Domains differ

Xem tài liệu về các lớp tiện lợi để biết thêm chi tiết về các thuộc tính

In [4]: np.polyfit[x, y, deg=1]
Out[4]: array[[0.93492185, 0.27149771]]
5 và
In [4]: np.polyfit[x, y, deg=1]
Out[4]: array[[0.93492185, 0.27149771]]
6

Một điểm khác biệt chính giữa mô-đun đa thức kế thừa và gói đa thức là khớp đa thức. Trong mô-đun cũ, việc lắp được thực hiện thông qua chức năng. Trong gói đa thức, phương thức lớp được ưu tiên. Ví dụ: hãy xem xét sự phù hợp tuyến tính đơn giản với dữ liệu sau

In [1]: rng = np.random.default_rng[]

In [2]: x = np.arange[10]

In [3]: y = np.arange[10] + rng.standard_normal[10]

Với mô-đun đa thức kế thừa, một khớp tuyến tính [i. e. đa thức bậc 1] có thể được áp dụng cho những dữ liệu này với

In [4]: np.polyfit[x, y, deg=1]
Out[4]: array[[0.93492185, 0.27149771]]

Với API đa thức mới, phương thức lớp được ưu tiên

In [5]: p_fitted = np.polynomial.Polynomial.fit[x, y, deg=1]

In [6]: p_fitted
Out[6]: Polynomial[[4.47864606, 4.20714835], domain=[0., 9.], window=[-1.,  1.], symbol='x']

Lưu ý rằng các hệ số được đưa ra trong miền tỷ lệ được xác định bởi ánh xạ tuyến tính giữa

In [4]: np.polyfit[x, y, deg=1]
Out[4]: array[[0.93492185, 0.27149771]]
6 và
In [4]: np.polyfit[x, y, deg=1]
Out[4]: array[[0.93492185, 0.27149771]]
5. có thể được sử dụng để lấy các hệ số trong miền dữ liệu chưa định tỷ lệ

In [7]: p_fitted.convert[]
Out[7]: Polynomial[[0.27149771, 0.93492185], domain=[-1.,  1.], window=[-1.,  1.], symbol='x']

Tài liệu cho gói

Ngoài các đa thức chuỗi lũy thừa tiêu chuẩn, gói đa thức cung cấp một số loại đa thức bổ sung bao gồm các đa thức Chebyshev, Hermite [hai kiểu con], Laguerre và Legendre. Mỗi trong số này có một lớp tiện lợi liên quan có sẵn từ không gian tên cung cấp giao diện nhất quán để làm việc với đa thức bất kể loại của chúng

  • Sử dụng các lớp học tiện lợi

Tài liệu liên quan đến các chức năng cụ thể được xác định cho từng loại đa thức riêng lẻ có thể được tìm thấy trong tài liệu mô-đun tương ứng

ADT đa thức là gì?

Đa thức ADT [HSM Ch. 2. 3] Đa thức là gì? . Các thao tác bao gồm trả về bậc, trích hệ số cho một số mũ đã cho, cộng, nhân, đánh giá cho một đầu vào đã cho. a homogeneous ordered list of pairs , where each coefficient is unique. Operations include returning the degree, extracting the coefficient for a given exponent, addition, multiplication, evaluation for a given input.

4 loại hàm đa thức là gì?

Các loại hàm đa thức .
Hàm đa thức không đổi. P[x] = a = ax. .
Hàm đa thức bằng không. P[x] = 0;
Hàm đa thức tuyến tính. P[x] = ax + b
Hàm đa thức bậc hai. P[x] = ax2+bx+c
Hàm đa thức bậc ba. ax3+bx2+cx+d

Làm thế nào là một đa thức được lưu trữ trong một danh sách được liên kết?

Mỗi nút của một danh sách được liên kết đại diện cho đa thức tạo thành ba phần. Phần đầu chứa giá trị của hệ số của số hạng. Phần thứ hai chứa giá trị của số mũ. Phần thứ ba, LINK trỏ đến thuật ngữ tiếp theo [nút tiếp theo]

Bổ sung đa thức trong DSA là gì?

Đa thức là biểu thức đại số chứa các hằng và biến có lũy thừa khác nhau. Cộng đa thức là một cách kết hợp và tính tổng các hạng tử có cùng lũy ​​thừa .

Chủ Đề