Per calcolare il grado di un polinomio in una variabile, è possibile utilizzare la funzione hipow
.
(%i) p1 : 3*x^5 + x^2 + 1$
(%i) hipow(p1,x);
(%o) 5
Per un polinomio con più di una variabile, è possibile mappare hipow
sulle variabili restituiti dalla funzione listofvars
, e poi prendere il massimo della lista risultante.
(%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
La funzione coeff
restituisce il coefficiente di x^n
, data coeff(p,x,n)
, in modo da generare un elenco dei coefficienti di un polinomio in una variabile, possiamo scorrere le potenze di x, salvando i coefficienti da un elenco.
(%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]
E per generare un elenco dei coefficienti di un polinomio in più di una variabile, mappa coeffs1
sopra la 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]]
il tuo corso di studi è solo di massimo livello, ma non di livello massimo monomiale. Il dopo potrebbe per esempio dare grado (x^2 * y-x) = 3. –