Để tính mức độ đa thức trong một biến, bạn có thể sử dụng hàm hipow
.
(%i) p1 : 3*x^5 + x^2 + 1$
(%i) hipow(p1,x);
(%o) 5
Đối với một đa thức với nhiều hơn một biến, bạn có thể lập bản đồ hipow
qua các biến được trả về bởi các listofvars
chức năng, và sau đó đi tối đa của danh sách kết quả.
(%i) p2 : 4*y^8 - 3*x^5 + x^2 + 1$
(%i) degree(p) := if integerp(p) then 0 else
lmax(map (lambda([u], hipow(p,u)),listofvars(p)))$
(%i) degree(p1);
(%o) 5
(%i) degree(p2);
(%o) 8
(%i) degree(1);
(%o) 0
Các coeff
hàm trả về hệ số x^n
, trao coeff(p,x,n)
, vì vậy để tạo ra một danh sách các hệ số của một đa thức trong một biến, chúng ta có thể lặp qua quyền hạn của x, tiết kiệm các hệ số vào một danh sách.
(%i) coeffs1(p,x) := block([l], l : [],
for i from 0 thru hipow(p,x)
do (l : cons(coeff(p,x,i),l)), l)$
(%i) coeffs1(p1,x);
(%o) [3, 0, 0, 1, 0, 1]
Và để tạo ra một danh sách các hệ số của một đa thức trong nhiều hơn một biến bản đồ coeffs1
qua listofvars
,.
(%i) coeffs(p) := map(lambda([u], coeffs1(p, u)), listofvars(p))$
(%i) coeffs(p2);
(%o) [[- 3, 0, 0, 1, 0, 4 y^8 + 1],
[4, 0, 0, 0, 0, 0, 0, 0, - 3 x^5 + x^2 + 1]]
mức độ của bạn chỉ ở mức tối đa, nhưng không phải là mức tối đa. Ví dụ sau có thể đưa ra mức độ (x^2 * y-x) = 3. –