Matematica

Polinomi simmetrici, passo dopo passo

Una dimostrazione algoritmica del teorema fondamentale dei polinomi simmetrici, con esempi interattivi dalle somme di potenze al discriminante.

11 min di letturaTradotto dall’inglese (originale)

Un polinomio in x1,…,xnx_1, \ldots, x_n è simmetrico se resta invariato permutando le variabili: x12+x22+x32x_1^2 + x_2^2 + x_3^2 e x1x2x3−1x_1 x_2 x_3 - 1 lo sono, x12x2x_1^2 x_2 no, perché scambiando x1x_1 e x2x_2 diventa x1x22x_1 x_2^2. Il teorema fondamentale dei polinomi simmetrici afferma che, su un campo FF, ogni polinomio simmetrico si scrive in un solo modo come polinomio in pochi polinomi di base, i polinomi simmetrici elementari e1,…,ene_1, \ldots, e_n:

Sym⁡[Xn]=F[e1,…,en]≅F[y1,…,yn].\begin{aligned} \operatorname{Sym}[X_n] &= F[e_1, \ldots, e_n] \\ &\cong F[y_1, \ldots, y_n]. \end{aligned}

Qui XnX_n è l’insieme {x1,…,xn}\{x_1, \ldots, x_n\}, Sym⁡[Xn]\operatorname{Sym}[X_n] è l’anello dei polinomi simmetrici in XnX_n a coefficienti in FF, e F[y1,…,yn]F[y_1, \ldots, y_n] è un anello di polinomi in nn nuove variabili. L’uguaglianza dice che ogni polinomio simmetrico è un polinomio negli eie_i; l’isomorfismo, che manda ogni yiy_i in eie_i, che lo è in un solo modo.

La dimostrazione usuale è un algoritmo, e per giunta breve. L’ho implementato per la prima volta nel 2022, in un notebook di SageMath archivio; qui viene eseguito direttamente nel browser.

I polinomi simmetrici elementari

Fissiamo n∈N+n \in \NN^+, il numero di variabili. Il polinomio simmetrico elementare di grado d≥1d \geq 1 è la somma di tutti i prodotti di dd variabili distinte,

ed=∑1≤i1<i2<⋯<id≤nxi1⋯xid⏟d fattori,e_d = \sum_{1 \leq i_1 < i_2 < \cdots < i_d \leq n} \underbrace{x_{i_1} \cdots x_{i_d}}_{d \text{ fattori}},

ed e0=1e_0 = 1. Con tre variabili, ad esempio,

e1=x1+x2+x3,e2=x1x2+x1x3+x2x3,e3=x1x2x3,\begin{aligned} e_1 &= x_1 + x_2 + x_3, \\ e_2 &= x_1 x_2 + x_1 x_3 + x_2 x_3, \\ e_3 &= x_1 x_2 x_3, \end{aligned}

e ed=0e_d = 0 per ogni d>nd > n, perché non ci sono abbastanza variabili tra cui scegliere.

Ordinare i monomi

L’algoritmo deve sapere quale termine di un polinomio viene per primo. Un monomio x1α1⋯xnαnx_1^{\alpha_1} \cdots x_n^{\alpha_n} si scrive xαx^\alpha, con α=(α1,…,αn)∈Nn\alpha = (\alpha_1, \ldots, \alpha_n) \in \NN^n, e i monomi si ordinano secondo l’ordine lessicografico graduato (deglex): prima per grado totale α1+⋯+αn\alpha_1 + \cdots + \alpha_n, poi, tra monomi dello stesso grado, per l’esponente di x1x_1, poi per quello di x2x_2, e così via. Quindi x13>x1x22>x23>x12x_1^3 > x_1 x_2^2 > x_2^3 > x_1^2 e, in generale, x1>x2>⋯>xnx_1 > x_2 > \cdots > x_n. Il termine di testa di un polinomio non nullo è il suo termine con il monomio più grande, e quel monomio è il suo monomio di testa.

Deglex non è un modo qualsiasi di ordinare i monomi: è un ordine monomiale, cioè un ordine totale sui monomi tale che

  1. è compatibile con la moltiplicazione: se xα<xα′x^\alpha < x^{\alpha'}, allora xαxγ<xα′xγx^\alpha x^\gamma < x^{\alpha'} x^\gamma per ogni monomio xγx^\gamma;
  2. è un buon ordine: ogni insieme non vuoto di monomi ha un elemento minimo. Equivalentemente, non esiste una successione infinita strettamente decrescente di monomi xα(1)>xα(2)>xα(3)>⋯x^{\alpha^{(1)}} > x^{\alpha^{(2)}} > x^{\alpha^{(3)}} > \cdots.

Deglex ha entrambe le proprietà. Moltiplicare per xγx^\gamma aggiunge la stessa quantità ai gradi di xαx^\alpha e xα′x^{\alpha'} e gli stessi esponenti a entrambi, quindi nessuno dei due confronti cambia. E al di sotto di un qualsiasi monomio ce n’è solo un numero finito di altri, quelli di grado non superiore al suo, quindi una successione strettamente decrescente deve arrestarsi.

La prima proprietà è ciò che garantisce il buon comportamento dei termini di testa: il termine di testa di un prodotto è il prodotto dei termini di testa. Ogni altro prodotto di un termine di gg per un termine di hh coinvolge almeno un monomio più piccolo, e la moltiplicazione lo mantiene più piccolo. La seconda proprietà è ciò che farà terminare l’algoritmo.

Un ulteriore fatto è specifico dei polinomi simmetrici: il loro monomio di testa ha esponenti non crescenti, α1≥α2≥⋯≥αn\alpha_1 \geq \alpha_2 \geq \cdots \geq \alpha_n. Se xαx^\alpha compare con αi<αi+1\alpha_i < \alpha_{i+1}, scambiando xix_i e xi+1x_{i+1} si ottiene un altro monomio del polinomio, e più grande: quindi xαx^\alpha non era il monomio di testa.

Cancellare il termine di testa

Sia ff simmetrico, con termine di testa c xαc \, x^\alpha. L’idea della dimostrazione è eliminare questo termine con un prodotto di polinomi simmetrici elementari: trovare una sequenza finita di esponenti b=(b1,…,bn)∈Nnb = (b_1, \ldots, b_n) \in \NN^n tale che

eb=e1b1e2b2⋯enbne^b = e_1^{b_1} e_2^{b_2} \cdots e_n^{b_n}

abbia lo stesso monomio di testa xαx^\alpha. Allora in f−c ebf - c \, e^b i due termini di testa si cancellano.

Poiché i termini di testa si moltiplicano, il termine di testa lt⁡(eb)\operatorname{lt}(e^b) di ebe^b è il prodotto di quelli dei suoi fattori, e il termine di testa di eke_k è x1x2⋯xkx_1 x_2 \cdots x_k, con coefficiente 11. La variabile xix_i vi compare esattamente quando k≥ik \geq i, quindi

lt⁡(eb)=∏k=1n(x1x2⋯xk)bk=x1b1+b2+⋯+bn x2b2+⋯+bn⋯xnbn.\begin{aligned} \operatorname{lt}(e^b) &= \prod_{k=1}^{n} (x_1 x_2 \cdots x_k)^{b_k} \\ &= x_1^{b_1 + b_2 + \cdots + b_n} \, x_2^{b_2 + \cdots + b_n} \cdots x_n^{b_n}. \end{aligned}

Perché questo sia xαx^\alpha, gli esponenti devono coincidere, e bb deve risolvere un sistema triangolare:

α1=b1+b2+⋯+bn,α2=b2+⋯+bn,    ⋮αn=bn.\begin{aligned} \alpha_1 &= b_1 + b_2 + \cdots + b_n, \\ \alpha_2 &= b_2 + \cdots + b_n, \\ &\;\;\vdots \\ \alpha_n &= b_n. \end{aligned}

Sottraendo ogni equazione da quella che la precede resta bi=αi−αi+1b_i = \alpha_i - \alpha_{i+1}, e l’ultima dà bn=αnb_n = \alpha_n. C’è quindi un unico candidato, che chiamiamo β(α)\beta(\alpha):

β(α)i={αi−αi+1se 1≤i<n,αialtrimenti.\beta(\alpha)_i = \begin{cases} \alpha_i - \alpha_{i+1} & \text{se } 1 \leq i < n, \\ \alpha_i & \text{altrimenti.} \end{cases}

Si tratta di una sequenza valida di esponenti, senza componenti negative, esattamente quando α1≥α2≥⋯≥αn\alpha_1 \geq \alpha_2 \geq \cdots \geq \alpha_n, condizione sempre soddisfatta dal monomio di testa di un polinomio simmetrico. Ad esempio, con n=3n = 3 e monomio di testa x13x2x3x_1^3 x_2 x_3, α=(3,1,1)\alpha = (3, 1, 1) dà β(α)=(2,0,1)\beta(\alpha) = (2, 0, 1), e in effetti e12e3=(x1+x2+x3)2 x1x2x3e_1^2 e_3 = (x_1 + x_2 + x_3)^2 \, x_1 x_2 x_3 ha monomio di testa x12⋅x1x2x3=x13x2x3x_1^2 \cdot x_1 x_2 x_3 = x_1^3 x_2 x_3.

L’algoritmo

Dato un polinomio simmetrico ff:

  • se ff è 00 o una costante, è già un polinomio negli eie_i, e non c’è nulla da fare;
  • altrimenti, siano c xαc \, x^\alpha il suo termine di testa in deglex e b=β(α)b = \beta(\alpha). Allora ff è c ebc \, e^b più l’espressione negli eie_i di f−c ebf - c \, e^b, dove ebe^b è sviluppato nelle xix_i; quest’ultima si trova eseguendo di nuovo l’algoritmo.

Il polinomio f−c ebf - c \, e^b è ancora simmetrico, in quanto differenza di polinomi simmetrici, e il suo monomio di testa è più piccolo di xαx^\alpha: i due termini di testa si cancellano, e ogni altro termine di ff e di c ebc \, e^b ha un monomio più piccolo. Eseguendo l’algoritmo si ottengono quindi polinomi simmetrici f0=f,f1,f2,…f_0 = f, f_1, f_2, \ldots i cui monomi di testa decrescono strettamente. Poiché deglex è un buon ordine, una tale successione non può proseguire all’infinito: dopo un numero finito di passi ciò che resta è 00, e i termini c ebc \, e^b raccolti lungo il percorso hanno per somma ff.

Anche l’espressione è unica. Supponiamo che f=P(e1,…,en)=Q(e1,…,en)f = P(e_1, \ldots, e_n) = Q(e_1, \ldots, e_n) per due polinomi P,Q∈F[y1,…,yn]P, Q \in F[y_1, \ldots, y_n]. La loro differenza R=P−QR = P - Q soddisfa allora R(e1,…,en)=0R(e_1, \ldots, e_n) = 0, e basta mostrare che ciò implica R=0R = 0, cioè che nessun polinomio non nullo si annulla quando alle sue variabili si sostituiscono gli eie_i (gli eie_i sono algebricamente indipendenti). Scriviamo

R=∑b∈Scb yb,R(e1,…,en)=∑b∈Scb eb,\begin{aligned} R &= \sum_{b \in S} c_b \, y^b, \\ R(e_1, \ldots, e_n) &= \sum_{b \in S} c_b \, e^b, \end{aligned}

dove S⊂NnS \subset \NN^n è l’insieme finito degli esponenti il cui coefficiente cbc_b non è nullo, e supponiamo che SS non sia vuoto. Ogni ebe^b ha termine di testa xα(b)x^{\alpha(b)}, con coefficiente 11 e α(b)i=bi+bi+1+⋯+bn\alpha(b)_i = b_i + b_{i+1} + \cdots + b_n, e a bb distinti corrispondono α(b)\alpha(b) distinti, poiché bb si ricava da α(b)\alpha(b) come β(α(b))\beta(\alpha(b)). Tra i finiti monomi xα(b)x^{\alpha(b)} con b∈Sb \in S ce n’è quindi uno massimo, xα(b∗)x^{\alpha(b^*)}, ottenuto da un solo b∗∈Sb^* \in S. Esso compare in cb∗eb∗c_{b^*} e^{b^*} con coefficiente cb∗c_{b^*}; ogni altro ebe^b ha solo monomi non superiori al proprio monomio di testa xα(b)x^{\alpha(b)}, che è più piccolo di xα(b∗)x^{\alpha(b^*)}, e quindi non contiene affatto xα(b∗)x^{\alpha(b^*)}. Il coefficiente di xα(b∗)x^{\alpha(b^*)} in R(e1,…,en)R(e_1, \ldots, e_n) è allora cb∗≠0c_{b^*} \neq 0, in contraddizione con R(e1,…,en)=0R(e_1, \ldots, e_n) = 0. Quindi SS è vuoto, R=0R = 0 e P=QP = Q.

Il calcolatore qui sotto mostra ogni passo: il termine di testa, α\alpha e β(α)\beta(\alpha), e ciò che resta, fif_i. Per mantenere leggibili i polinomi lunghi, i termini sono raggruppati in orbite: mλm_\lambda è la somma dei monomi distinti i cui esponenti sono un riordinamento di λ\lambda, così che con n=3n = 3

m(2,1)=x12x2+x12x3+x1x22+x22x3+x1x32+x2x32.\begin{aligned} m_{(2,1)} = {} & x_1^2 x_2 + x_1^2 x_3 + x_1 x_2^2 \\ & + x_2^2 x_3 + x_1 x_3^2 + x_2 x_3^2. \end{aligned}

Un polinomio è simmetrico esattamente quando è combinazione degli mλm_\lambda, con λ1≥⋯≥λn\lambda_1 \geq \cdots \geq \lambda_n; il calcolatore li elenca a partire dal più grande xλx^\lambda, quindi il primo contiene il termine di testa. Anche i calcoli avvengono in questa forma: il calcolatore non sviluppa mai un prodotto ebe^b, ma moltiplica per ogni eje_j operando direttamente sui coefficienti delle orbite.

Prova

Scrivi x_1 o x1, con + - * / ^ e parentesi; anche 2x1x2 è un prodotto. e(k), p(k) e h(k) sono i polinomi simmetrici elementari, le somme di potenze e i polinomi omogenei completi di grado kk.

Il polinomio deve essere simmetrico. Se non lo è, l’algoritmo non può terminare con successo: se così fosse, il polinomio sarebbe combinazione di polinomi simmetrici, e quindi simmetrico a sua volta, ↯. L’esempio Non simmetrico mostra dove l’algoritmo si inceppa: prima o poi il termine di testa ha esponenti non disposti in ordine non crescente, β(α)\beta(\alpha) ha una componente negativa, e nessun prodotto degli eie_i ha quel termine di testa.

Somme di potenze

Per le somme di potenze pk=x1k+⋯+xnkp_k = x_1^k + \cdots + x_n^k esiste una strada più diretta, le identità di Newton–Girard archivio. Esse esprimono pkp_k, per k≥1k \geq 1, in termini degli eie_i e delle somme di potenze precedenti:

pk=(−1)k+1(k ek+∑i=1k−1(−1)i pi ek−i),p_k = (-1)^{k+1} \Bigl( k \, e_k + \sum_{i=1}^{k-1} (-1)^i \, p_i \, e_{k-i} \Bigr),

dove ei=0e_i = 0 per ogni i>ni > n (e p0=np_0 = n, poiché xi0=1x_i^0 = 1). Calcolando p1p_1, poi p2p_2, e così via fino a pkp_k, ciascuna a partire dalle precedenti, si ottiene un’espressione; l’algoritmo generale applicato a x1k+⋯+xnkx_1^k + \cdots + x_n^k ne fornisce un’altra. Per l’unicità devono essere lo stesso polinomio, e in effetti la loro differenza è zero:

Prova

Il discriminante

Sia ora

f(x)=xn+an−1xn−1+⋯+a0f(x) = x^n + a_{n-1} x^{n-1} + \cdots + a_0

con radici x1,x2,…,xnx_1, x_2, \ldots, x_n in C\CC, ciascuna contata tante volte quanto la sua molteplicità, in modo che f(x)=(x−x1)⋯(x−xn)f(x) = (x - x_1) \cdots (x - x_n). Il discriminante di ff è il prodotto

Δ(f)=∏1≤i<j≤n(xi−xj)2,\Delta(f) = \prod_{1 \leq i < j \leq n} (x_i - x_j)^2,

e indica se ff ha una radice multipla:

∃ i≠j:xi=xj  ⟺  Δ(f)=0.\exists \, i \neq j : x_i = x_j \iff \Delta(f) = 0.

È facile verificare che Δ(f)\Delta(f) è un polinomio simmetrico nelle radici. Ogni permutazione è composizione di trasposizioni, quindi basta verificare che scambiare due radici xix_i e xjx_j lo lasci invariato:

  • i fattori che non contengono nessuna delle due restano immutati;
  • i fattori che ne contengono una sola si scambiano a coppie, (xi−xk)2(x_i - x_k)^2 con (xj−xk)2(x_j - x_k)^2, al più con la base cambiata di segno, cosa che il quadrato annulla;
  • il fattore che le contiene entrambe cambia il segno della propria base, (xi−xj)2(x_i - x_j)^2 diventa (xj−xi)2(x_j - x_i)^2, e una volta elevato al quadrato resta invariato.

Quindi, per il teorema fondamentale, Δ(f)\Delta(f) si scrive in un solo modo in termini dei polinomi simmetrici elementari delle radici. Ma questi non sono altro che i coefficienti di ff, a meno del segno: sviluppando (x−x1)⋯(x−xn)(x - x_1) \cdots (x - x_n) e confrontando con ff,

ei(x1,…,xn)=(−1)ian−ie_i(x_1, \ldots, x_n) = (-1)^i a_{n-i}

per 0≤i≤n0 \leq i \leq n, con an=1a_n = 1. Eseguendo l’algoritmo su ∏i<j(xi−xj)2\prod_{i<j} (x_i - x_j)^2 e sostituendo (−1)ian−i(-1)^i a_{n-i} a ogni eie_i si ottiene quindi il discriminante di ogni polinomio monico di grado nn in termini dei suoi coefficienti, senza conoscerne le radici. Per n=2n = 2 è il familiare Δ=a12−4a0\Delta = a_1^2 - 4 a_0; per n=3n = 3,

Δ=a12a22−4a0a23−4a13+18 a0a1a2−27a02,\begin{aligned} \Delta = {} & a_1^2 a_2^2 - 4 a_0 a_2^3 - 4 a_1^3 \\ & + 18 \, a_0 a_1 a_2 - 27 a_0^2, \end{aligned}

che per x3+px+qx^3 + p x + q si riduce a −4p3−27q2-4p^3 - 27q^2.

Un polinomio il cui coefficiente direttore ana_n non è 11 ha le stesse radici di f/anf / a_n, che è monico; il suo discriminante si definisce di solito come an2n−2 Δ(f/an)a_n^{2n-2} \, \Delta(f / a_n). Il fattore lo rende un polinomio in a0,…,ana_0, \ldots, a_n a coefficienti interi, e si annulla esattamente quando si annulla Δ(f/an)\Delta(f / a_n).

Qui sotto, la formula per il grado del polinomio inserito viene calcolata con l’algoritmo e poi valutata nei suoi coefficienti. Il primo esempio, (x−1)2(x+2)=x3−3x+2(x - 1)^2 (x + 2) = x^3 - 3x + 2, ha una radice doppia, quindi il suo discriminante è zero; il secondo, (x−1)(x+1)(x+3)=x3+3x2−x−3(x - 1)(x + 1)(x + 3) = x^3 + 3x^2 - x - 3, ha tre radici distinte e un discriminante non nullo.

Prova

Coefficienti razionali; prodotti e potenze vengono espansi, come in (x - 1)^2 (x + 3).

In questa pagina