Bei einem Polynom ungleich Null mit ganzzahligen Koeffizienten und Wurzeln, die sich auf der imaginären und der realen Linie befinden, so dass, wenn a
es sich um eine Wurzel handelt -a
, ein weiteres Polynom mit um 90 Grad gedrehten Wurzeln zurückgegeben wird.
Einzelheiten
Das Polynom kann in jedem vernünftigen Format angegeben werden, z. B. als Liste von Koeffizienten. Die Symmetriebedingung, die a
genau dann -a
eine Wurzel ist, wenn eine Wurzel zu stark ist, erzwingt, dass das gedrehte Polynom auch echte ganzzahlige Koeffizienten aufweist.
Beispiele
Im Folgenden werden die Polynome als Liste der Koeffizienten der Monome in absteigendem Grad angegeben. (dh die Konstante kommt zuletzt) Das Polynom x^2-1
hat Wurzeln {1,-1}
. Drehen Sie sie durch 90°
Multiplizieren mit i
(der imaginären Einheit), so dass das Ausgangspolynom die Wurzeln haben sollte {i,-i}
, d x^2 + 1
. H.
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]
quelle
x
, sodass meine Übermittlung durch Zeichenfolgen ersetztx
werden kann(i*x)
? Kann ich eine Funktion formatieren, die das Polynom auswertet, sodass ich es mit der Funktion zusammenstellen sollx -> i*x
?Antworten:
Mathematica, 10 Bytes
Reine Funktion, die eine Funktion von x übernimmt und in ix ersetzt.
Alternative mit nur 7 Bytes, aber nicht ganz sicher, ob es zählt. Reine Funktion, die eine reine Funktion aufnimmt und eine Funktion von x zurückgibt.
quelle
#
als Variable verwendet und hat&
am Ende ein.Gelee , 5 Bytes
Probieren Sie es online aus!
Wie es funktioniert
Multipliziert das erste Element mit
1
, das dritte Element mit-1
usw.Beweis des Algorithmus
Das Polynom sei
f(x)
.Da wir garantiert sind, dass wenn
x
es eine Wurzel ist-x
, dann ist es so , sof
muss es gerade sein, was bedeutet, dass sein Koeffizient für die ungeraden Potenzen sein muss0
.Nun ist das Drehen der Wurzeln um
90°
im Wesentlichenf(ix)
.Das Erweitern und Vergleichen von Koeffizienten beweist den Algorithmus.
quelle
ı*Ċ
ist sehr schön, Sie sollten es erklären :)JavaScript (ES6), 25 Byte
Das ursprüngliche Polynom hat Lösungen der Form,
x = ±a
in der a auf der realen oder imaginären Linie liegt. Außer wenna = 0
(in diesem Fallx
ist dies ein Faktor des Polynoms), bedeutet dies, dass diesx² - a²
ein Faktor des Polynoms ist (was bedeutet, dass alternative Terme immer Null sind). Wenn wir nun die Wurzeln drehen, ändert sich der Faktor zux² + a²
. Da sich alle Faktoren gleichzeitig ändern, ändert der dritte Term des Polynoms, der die Summe aller-a²
Terme ist, das Vorzeichen, der fünfte Term, der die Summe der Produkte von Termpaaren-a²
ist, das gleiche Vorzeichen usw. jeden zweiten Begriff abwechselnd.quelle
Oktave , 27 Bytes
Probieren Sie es online aus!
Dies wendet direkt die Definition an: Wurzeln berechnen, multiplizieren mit
j
, von Wurzeln zurück in Polynom konvertieren. Eine endgültige Rundung ist aufgrund von numerischen Gleitkommafehlern erforderlich.quelle
Python 3 , 42 Bytes
Probieren Sie es online aus!
quelle
SILOS ,
7166 BytesProbieren Sie es online aus!
Ich habe keine Ahnung, was Wizardry @Leaky Nun hier getan hat, um 5 Bytes zu sparen.Ich habe eine Sekunde gebraucht, um das herauszufinden, aber das zweite Bit von C wird sich abwechseln, wie wir wollen. Deshalb hat @Leaky Nun dies ausgenutzt, um die benötigten Bits zu speichern.
quelle
TI-Basic, 20 Bytes
Wenn in gespeichert
prgmA
, führen Sie Folgendes aus:seq(
musste nur der one * -Befehl sein, der keine komplexen Zahlen unterstützt. :) :)*: Übertreibung
quelle
Casio-Basic, 8 Bytes
Unbenannte Funktion unter Verwendung des Mathematica-Ansatzes von Ian Miller. Das imaginäre 𝑖 von der Math2-Tastatur muss verwendet werden (zählt als 2 Bytes, Zeichencode 769), und das Polynom sollte als Gleichung von eingegeben werden
x
.7 Bytes für den Code, 1 Byte
n
als Parameter.Erläuterung : Nimmt die Gleichung
n
und ersetzt dann einfach alle Instanzen vonx
durch𝑖x
.quelle
Pari / GP , 16 Bytes
Probieren Sie es online aus!
quelle
Stax , 5 Bytes
Online ausführen und debuggen!
Port of the Jelly Antwort.
Verwendet die ASCII-Darstellung, um Folgendes zu erklären:
Wenn es führende Nullen geben kann, müssen diese zuerst abgeschnitten werden, und dies kann auf Kosten eines anderen Bytes erfolgen.
quelle