Calcolatore di Hensel
Il calcolatore del sollevamento di Hensel riceve un polinomio intero, una radice nota modulo un primo p e un esponente obiettivo k.
Esegui gratis nel browser
Applica la forma a radice semplice del lemma di Hensel per ottenere l’unica radice compatibile modulo p^k. Ogni calcolo usa aritmetica intera esatta e il risultato mostra ciascun modulo, radice e cifra di correzione intermedia, così Lei può controllare o riprodurre il sollevamento. L’intera catena di congruenze resta visibile.
Inserisca polinomio e radice in forma precisa
Fornisca i coefficienti del polinomio in ordine crescente di grado. Per esempio, [-2, 0, 1] indica x al quadrato meno 2: il primo elemento è il termine costante, il secondo moltiplica x e il terzo moltiplica x al quadrato. Indichi quindi un primo p, una radice intera e l’esponente obiettivo k. La radice può essere qualsiasi rappresentante intero; il calcolatore la riduce dapprima al residuo standard compreso fra zero e p meno uno. Prima del sollevamento verifica che il polinomio valutato in tale residuo dia zero modulo p. Controlla inoltre che p sia davvero primo e che il polinomio abbia grado positivo. Questi controlli sono essenziali perché il lemma di Hensel non cerca alla cieca una radice modulare iniziale. Parte da una radice già nota al primo livello primo. Se il requisito non è soddisfatto, il calcolatore restituisce un chiaro errore di input invece di mostrare un residuo privo di fondamento matematico.
Comprenda il passaggio di Hensel per radici semplici
Supponga che la radice corrente r funzioni modulo p elevato a n. Il successivo candidato compatibile ha forma r più t per p elevato a n, dove t è una cifra modulo p. Dividendo il valore corrente del polinomio per p elevato a n e moltiplicando per l’inverso della derivata si determina la cifra di correzione. Il calcolatore ripete l’operazione un livello alla volta fino a p^k. L’ipotesi decisiva richiede che la derivata formale nella radice iniziale non sia zero modulo p. La derivata è quindi invertibile e ogni correzione esiste ed è unica. Se la derivata si annulla modulo p, questa capacità si arresta intenzionalmente con un errore. Le radici singolari richiedono un’analisi più generale: possono non avere sollevamenti, averne diversi o comportarsi diversamente alle potenze successive. Selezionare in silenzio un ramo falserebbe il teorema della radice semplice e potrebbe far sembrare univoci calcoli che non lo sono.
Legga e verifichi il sollevamento restituito
Il campo principale della radice contiene il minimo rappresentante non negativo modulo il valore p^k restituito. Entrambi sono stringhe decimali, così i valori esatti restano intatti anche oltre l’intervallo numerico sicuro di JavaScript. L’esponente conferma il livello richiesto, derivative_mod_p registra il residuo non nullo della derivata impiegato e verified indica se la sostituzione diretta produce zero modulo il modulo finale. L’array lifts inizia dall’esponente uno e registra ogni radice e modulo successivi. Dal secondo elemento, correction_digit è la cifra in base p aggiunta in quella fase. La traccia è utile per controllare esercizi, esempi svolti, test di algoritmi e appunti di ricerca riproducibili. Lei può valutare autonomamente il polinomio in qualsiasi radice elencata e confermare la divisibilità per il modulo associato. Il risultato è l’unico sollevamento congruente alla radice iniziale fornita modulo p; una radice diversa conduce in genere a un ramo p-adico compatibile differente.
Casi d'uso
Verificare un esercizio di teoria dei numeri
Confronti ogni cifra di correzione con il calcolo manuale e verifichi il residuo finale modulo la potenza prima richiesta.
Creare vettori modulari esatti
Generi radici deterministiche modulo potenze prime crescenti per collaudare codice di algebra simbolica o aritmetica modulare.
Esplorare un ramo p-adico
Segua una radice semplice attraverso potenze successive di p ed esamini la correzione in base p scelta a ogni livello.
Domande frequenti
Quale ordine dei coefficienti usa il calcolatore?
L’ordine crescente di grado. L’array [a0, a1, a2] rappresenta a0 + a1*x + a2*x^2.
Perché p deve essere primo?
Questa capacità implementa il lemma di Hensel standard per radici semplici sulle potenze di un primo. Un modulo iniziale composto richiede un’impostazione diversa.
Perché una derivata nulla causa un errore?
La formula per radici semplici richiede che la derivata abbia un inverso modulo p. Se si annulla, il sollevamento può mancare o non essere unico, quindi il calcolatore non presume una soluzione.
Perché radice e modulo vengono restituiti come stringhe?
Le potenze prime possono superare l’intervallo degli interi sicuri. Le stringhe decimali conservano esattamente ogni cifra in JSON e nel browser.
La radice iniziale deve essere fra zero e p meno uno?
No. Qualsiasi rappresentante intero sicuro viene accettato e ridotto modulo p prima della convalida e del sollevamento.
Quanto costa?
Il calcolo nel browser è gratuito. Una richiesta API costa $0.002.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"coefficients": [
-2,
0,
1
],
"root": 3,
"p": 7,
"k": 4
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.hensel_lift",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |