Sfondo (salta alle definizioni)
Eulero dimostrò un bellissimo teorema sui numeri complessi: e ix = cos (x) + i sin (x).
Questo rende facile dimostrare il teorema di De Moivre:
(e ix ) n = e i (nx)
(cos (x) + i sin (x)) n = cos (nx) + i sin (nx)
Possiamo tracciare numeri complessi usando il piano euclideo bidimensionale, con l'asse orizzontale che rappresenta la parte reale e l'asse verticale che rappresenta la parte immaginaria. In questo modo, (3,4) corrisponderebbe al numero complesso 3 + 4i.
Se hai familiarità con le coordinate polari, (3,4) sarebbe (5, arctan (4/3)) in coordinate polari. Il primo numero, r, è la distanza del punto dall'origine; il secondo numero, θ, è l'angolo misurato dall'asse x positivo al punto, in senso antiorario. Di conseguenza, 3 = r cosθ e 4 = r sinθ. Pertanto, possiamo scrivere 3 + 4i come r cosθ + ri sinθ = r (cosθ + i sinθ) = re iθ .
Risolviamo l'equazione complessa z n = 1, dove n è un numero intero positivo.
Lasciamo z = re iθ . Quindi, z n = r n e inθ . La distanza di z n dall'origine è r n e l'angolo è nθ. Tuttavia, sappiamo che la distanza di 1 dall'origine è 1 e l'angolo è 0. Pertanto, r n = 1 e nθ = 0. Tuttavia, se si ruota di 2π in più, si finisce comunque nello stesso punto, perché 2π è solo un cerchio completo. Pertanto, r = 1 e nθ = 2kπ, dandoci z = e 2ikπ / n .
Riaffermiamo la nostra scoperta: le soluzioni per z n = 1 sono z = e 2ikπ / n .
Un polinomio può essere espresso in termini di radici. Ad esempio, le radici di x 2 -3x + 2 sono 1 e 2, quindi x 2 -3x + 2 = (x-1) (x-2). Allo stesso modo, dalla nostra scoperta sopra:
Tuttavia, quel prodotto conteneva certamente radici di altri n. Ad esempio, prendi n = 8. Le radici di z 4 = 1 verrebbero incluse anche nelle radici di z 8 = 1, poiché z 4 = 1 implica z 8 = (z 4 ) 2 = 1 2 = 1. Prendi n = 6 come esempio. Se z 2 = 1, avremmo anche z 6 = 1. Allo stesso modo, se z 3 = 1, quindi z 6 = 1.
Se vogliamo estrarre le radici uniche di z n = 1, avremmo bisogno di k e n per condividere nessun divisore comune tranne 1. Oppure, se condividono un divisore comune d dove d> 1, allora z sarebbe il (k / d) -th radice di z n / d = 1. Usando la tecnica sopra per scrivere il polinomio in termini di radici, otteniamo il polinomio:
Si noti che questo polinomio viene eseguito rimuovendo le radici di z n / d = 1 con d che è un divisore di n. Sosteniamo che il polinomio sopra abbia coefficienti interi. Considera l'LCM dei polinomi sotto forma di z n / d -1 dove d> 1 e d divide n. Le radici dell'LCM sono esattamente le radici che desideriamo rimuovere. Poiché ogni componente ha coefficienti interi, l'LCM ha anche coefficienti interi. Poiché l'LCM divide z n -1, il quoziente deve essere un polinomio con coefficiente intero e il quoziente è il polinomio sopra.
Le radici di z n = 1 hanno tutte il raggio 1, quindi formano un cerchio. Il polinomio rappresenta i punti del cerchio unici per n, quindi in un certo senso i polinomi formano una partizione del cerchio. Pertanto, il polinomio sopra è l'n-esimo polinomio ciclotomico. (ciclo- = cerchio; tom- = da tagliare)
Definizione 1
Il polinomio n-esimo ciclotomico, indicato , è il polinomio unico con coefficienti interi che dividono x n -1 ma non x k -1 per k <n.
Definizione 2
I polinomi ciclotomici sono un insieme di polinomi, uno per ogni numero intero positivo, tali che:
dove k | n significa che k divide n.
Definizione 3
Il polinomio n-esimo ciclotomico è il polinomio x n -1 diviso per il LCM dei polinomi nella forma x k -1 dove k divide n e k <n.
Esempi
- Φ 1 (x) = x - 1
- Φ 2 (x) = x + 1
- Φ 3 (x) = x 2 + x + 1
- Φ 30 (x) = x 8 + x 7 - x 5 - x 4 - x 3 + x + 1
- Φ 105 (x) = x 48 + x 47 + x 46 - x 43 - x 42 - 2x 41 - x 40 - x 39 + x 36 + x 35 + x 34 + x 33 + x 32 + x 31 - x 28 - x 26 - x 24 - x 22 - x 20 + x 17 + x 16 + x 15 + x 14 + x 13 + x 12 - x9 - x 8 - 2x 7 - x 6 - x 5 + x 2 + x + 1
Compito
Dato un numero intero positivo n
, restituisce il n
polinomio ciclotomico -th come definito sopra, in un formato ragionevole (è consentito un elenco di coefficienti ieeg).
Regole
È possibile restituire i numeri in virgola mobile / complessi purché arrotondati al valore corretto.
punteggio
Questo è code-golf . Vince la risposta più breve in byte.