Hensel-Liftung
Der Rechner für die Hensel-Liftung übernimmt ein ganzzahliges Polynom, eine bekannte Wurzel modulo einer Primzahl p und einen Zielexponenten k.
Im Browser ausführen – kostenlos
Er verwendet die einfache Form des Henselschen Lemmas, um die eindeutig bestimmte kompatible Wurzel modulo p^k zu berechnen. Sämtliche Schritte beruhen auf exakter Ganzzahlarithmetik. Das Ergebnis zeigt alle Zwischenmoduln, Wurzeln und Korrekturziffern, damit Sie die Liftung prüfen oder nachvollziehen können. Die vollständige Kongruenzkette bleibt sichtbar.
Polynom und Wurzel eindeutig eingeben
Geben Sie die Polynomkoeffizienten nach aufsteigendem Grad an. Beispielsweise bezeichnet [-2, 0, 1] den Ausdruck x zum Quadrat minus 2: Der erste Eintrag ist der konstante Term, der zweite wird mit x und der dritte mit x zum Quadrat multipliziert. Geben Sie anschließend eine Primzahl p, eine ganzzahlige Wurzel und den Zielexponenten k ein. Die Wurzel darf ein beliebiger ganzzahliger Repräsentant sein; der Rechner reduziert sie zunächst auf den Standardrest zwischen null und p minus eins. Vor der Liftung prüft er, ob die Auswertung des Polynoms an diesem Rest null modulo p ergibt. Außerdem stellt er sicher, dass p tatsächlich prim und das Polynom nicht konstant ist. Diese Prüfungen sind wichtig, denn das Henselsche Lemma sucht nicht blind nach einer anfänglichen modularen Wurzel. Es setzt eine bereits auf der ersten Primzahlstufe bekannte Wurzel voraus. Ist diese Bedingung nicht erfüllt, erscheint ein klarer Eingabefehler statt eines mathematisch unbegründeten Restes.
Den Hensel-Schritt für einfache Wurzeln verstehen
Angenommen, die aktuelle Wurzel r gilt modulo p hoch n. Der nächste kompatible Kandidat besitzt die Form r plus t mal p hoch n, wobei t eine Ziffer modulo p ist. Der Quotient aus dem aktuellen Polynomwert und p hoch n wird mit dem Inversen der Ableitung multipliziert und bestimmt dadurch diese Korrekturziffer. Der Rechner wiederholt den Vorgang Stufe für Stufe bis p^k. Entscheidend ist, dass die formale Ableitung an der Ausgangswurzel nicht null modulo p ist. Dann ist sie invertierbar, sodass jede Korrektur existiert und eindeutig ist. Verschwindet die Ableitung modulo p, bricht diese Funktion bewusst mit einem Fehler ab. Singuläre Wurzeln benötigen eine allgemeinere Untersuchung: Es kann keine, mehrere oder auf späteren Potenzen anders verzweigte Liftungen geben. Eine stillschweigend ausgewählte Verzweigung würde den Satz für einfache Wurzeln falsch darstellen und nachfolgende Berechnungen zu Unrecht eindeutig erscheinen lassen.
Die berechnete Liftung lesen und prüfen
Das Hauptfeld root enthält den kleinsten nichtnegativen Repräsentanten modulo dem ausgegebenen Wert p^k. Beide Werte erscheinen als Dezimalzeichenketten, damit sie auch jenseits des sicheren Zahlenbereichs von JavaScript exakt bleiben. exponent bestätigt die gewünschte Stufe, derivative_mod_p dokumentiert den verwendeten, von null verschiedenen Ableitungsrest und verified zeigt, ob direktes Einsetzen null modulo dem Endmodul ergibt. Das Array lifts beginnt beim Exponenten eins und führt jede folgende Wurzel samt Modul auf. Ab dem zweiten Eintrag bezeichnet correction_digit die auf dieser Stufe addierte Ziffer zur Basis p. Diese Spur eignet sich für Übungsprüfungen, Musterlösungen, Algorithmustests und reproduzierbare Forschungsnotizen. Sie können das Polynom an jeder aufgeführten Wurzel selbst auswerten und die Teilbarkeit durch das jeweilige Modul bestätigen. Das Ergebnis ist die eindeutige Liftung, die zur angegebenen Ausgangswurzel modulo p kongruent ist; eine andere Ausgangswurzel führt gewöhnlich zu einem anderen p-adischen Zweig.
Anwendungsfälle
Eine zahlentheoretische Aufgabe prüfen
Vergleichen Sie jede Korrekturziffer mit Ihrer Rechnung und prüfen Sie den Endrest modulo der gewünschten Primzahlpotenz.
Exakte modulare Testvektoren erstellen
Erzeugen Sie deterministische Wurzeln modulo wachsender Primzahlpotenzen für Tests symbolischer Algebra oder modularer Arithmetik.
Einen p-adischen Zweig untersuchen
Verfolgen Sie eine einfache Wurzel über aufeinanderfolgende Potenzen von p und betrachten Sie die gewählte Basis-p-Korrektur jeder Stufe.
Häufige Fragen
In welcher Reihenfolge werden die Koeffizienten angegeben?
Nach aufsteigendem Grad. Das Array [a0, a1, a2] steht für a0 + a1*x + a2*x^2.
Warum muss p eine Primzahl sein?
Diese Funktion setzt das übliche Henselsche Lemma für einfache Wurzeln über Primzahlpotenzen um. Ein zusammengesetzter Anfangsmodul erfordert einen anderen Ansatz.
Warum verursacht eine verschwindende Ableitung einen Fehler?
Die Formel für einfache Wurzeln benötigt ein Inverses der Ableitung modulo p. Verschwindet sie, kann die Liftung fehlen oder mehrdeutig sein; der Rechner rät daher nicht.
Warum werden Wurzel und Modul als Zeichenketten ausgegeben?
Primzahlpotenzen können den sicheren Ganzzahlbereich überschreiten. Dezimalzeichenketten bewahren in JSON und im Browser jede Stelle exakt.
Muss die Ausgangswurzel zwischen null und p minus eins liegen?
Nein. Jeder sichere ganzzahlige Repräsentant wird akzeptiert und vor Prüfung und Liftung modulo p reduziert.
Was kostet die Berechnung?
Die Berechnung im Browser ist kostenlos. Eine API-Anfrage kostet $0.002.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/numth/hensel-lift \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"coefficients":[-2,0,1],"root":3,"p":7,"k":4}'const res = await fetch("https://api.kit.forhosting.com/numth/hensel-lift", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"coefficients": [
-2,
0,
1
],
"root": 3,
"p": 7,
"k": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/hensel-lift",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"coefficients": [
-2,
0,
1
],
"root": 3,
"p": 7,
"k": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/hensel-lift", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"coefficients":[-2,0,1],"root":3,"p":7,"k":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"coefficients":[-2,0,1],"root":3,"p":7,"k":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/hensel-lift", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"coefficients": [
-2,
0,
1
],
"root": 3,
"p": 7,
"k": 4
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.hensel_lift",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |