Étant donné un polynôme non nul avec des coefficients entiers et des racines qui sont sur l'imaginaire et sur la ligne réelle de telle sorte que si a
est une racine, il en est de même -a
, renvoyez un autre polynôme avec les racines tournées de 90 degrés.
Détails
Le polynôme peut être donné dans n'importe quel format raisonnable, par exemple sous la forme d'une liste de coefficients. La condition de symétrie qui a
est une racine si et seulement si -a
est une racine applique également le polynôme pivoté pour avoir également des coefficients entiers réels.
Exemples
Dans la suite, les polynômes sont donnés sous la forme d'une liste de coefficients des monômes en degrés décroissants. (c'est-à-dire que la constante vient en dernier) Le polynôme x^2-1
a des racines {1,-1}
. Les faire pivoter 90°
signifie les multiplier par i
(l'unité imaginaire), de sorte que le polynôme de sortie devrait avoir les racines {i,-i}
, ce qui est x^2 + 1
.
Input / Output
[1 0 10 0 -127 0 -460 0 576] [1 0 -10 0 -127 0 460 0 576]
[1 0 -4 0] [1 0 4 0]
[1] [1]
la source
x
, afin que ma soumission puisse remplacer une chaînex
par(i*x)
? Mon format peut-il une fonction qui évalue le polynôme, de sorte que ma soumission est de le composer avec la fonctionx -> i*x
?Réponses:
Mathematica, 10 octets
Fonction pure qui prend une fonction de x et se substitue à ix.
Alternative avec seulement 7 octets mais pas tout à fait sûr si cela compte. Fonction pure qui prend une fonction pure et renvoie une fonction de x.
la source
#
comme variable et a un&
à la fin.Gelée , 5 octets
Essayez-le en ligne!
Comment ça fonctionne
Multiplie le premier élément par
1
, le troisième élément par-1
, etc.Preuve d'algorithme
Que le polynôme soit
f(x)
.Puisque nous sommes garantis que si
x
est une racine, alors il en est de même-x
, ainsif
doit être pair, ce qui signifie que son coefficient pour les puissances impaires doit être0
.Maintenant, la rotation des racines
90°
est essentiellementf(ix)
.L'expansion puis la comparaison des coefficients prouve l'algorithme.
la source
ı*Ċ
est très sympa, vous devriez l'expliquer :)JavaScript (ES6), 25 octets
Le polynôme original a des solutions de la forme
x = ±a
où a se trouve sur la ligne réelle ou imaginaire. Sauf quanda = 0
(auquel casx
est un facteur du polynôme), cela signifie quex² - a²
c'est un facteur du polynôme (ce qui signifie que les termes alternatifs sont toujours nuls). Maintenant, lorsque nous faisons pivoter les racines, le facteur devientx² + a²
. Puisque tous les facteurs changent en même temps, le troisième terme du polynôme, qui est la somme de tous les-a²
termes, change de signe, le cinquième terme, qui est la somme des produits des paires de-a²
termes, garde le même signe, etc. en alternance tous les deux termes.la source
Octave , 27 octets
Essayez-le en ligne!
Cela applique directement la définition: calculer les racines, multiplier par
j
, reconvertir des racines en polynômes. Un arrondi final est nécessaire en raison d'erreurs numériques en virgule flottante.la source
Python 3 , 42 octets
Essayez-le en ligne!
la source
SILOS ,
7166 octetsEssayez-le en ligne!
Je n'ai aucune idée de ce que la magie @Leaky Nun a fait ici pour économiser 5 octets.Il m'a fallu une seconde pour comprendre, mais le deuxième bit de C alternera comme nous le voulons. Par conséquent, @Leaky Nun a exploité cela pour enregistrer les bits dont nous avons besoin.
la source
TI-Basic, 20 octets
Si stocké dans
prgmA
, exécutez avec:seq(
devait juste être la seule commande * qui ne supporte pas les nombres complexes. :)*: Exagération
la source
Casio-Basic, 8 octets
Fonction sans nom, utilisant l'approche Mathematica d'Ian Miller. Le inary imaginaire du clavier Math2 doit être utilisé (compte comme 2 octets, code de caractère 769), et le polynôme doit être entré comme une équation de
x
.7 octets pour le code, 1 octet à spécifier
n
comme paramètre.Explication : prend l'équation
n
, puis remplace simplement toutes les instances dex
par𝑖x
.la source
Pari / GP , 16 octets
Essayez-le en ligne!
la source
Stax , 5 octets
Exécutez et déboguez en ligne!
Réponse de Port of the Jelly.
Utilise la représentation ASCII pour expliquer:
S'il peut y avoir des zéros non significatifs, ils doivent d'abord être coupés et cela peut être fait au prix d'un autre octet.
la source