Calculadora de Hensel
La calculadora de elevación de Hensel recibe un polinomio entero, una raíz conocida módulo un primo p y un exponente objetivo k.
Ejecutar — gratis
Aplica la forma de raíz simple del lema de Hensel para obtener la única raíz compatible módulo p^k. Todos los cálculos emplean aritmética entera exacta, y el resultado muestra cada módulo, raíz y dígito de corrección intermedio para que usted pueda revisar o reproducir la elevación. La cadena completa de congruencias permanece visible.
Introduzca el polinomio y la raíz con precisión
Indique el polinomio mediante coeficientes en orden ascendente de grado. Por ejemplo, [-2, 0, 1] representa x al cuadrado menos 2: la primera entrada es el término constante, la segunda multiplica x y la tercera multiplica x al cuadrado. Después indique un primo p, una raíz entera y el exponente objetivo k. La raíz puede ser cualquier representante entero; la calculadora primero la reduce al residuo estándar entre cero y p menos uno. Antes de elevarla, comprueba que el valor del polinomio en ese residuo sea cero módulo p. También verifica que p sea realmente primo y que el polinomio tenga grado positivo. Estas comprobaciones son esenciales porque el lema de Hensel no busca a ciegas una raíz modular inicial. Parte de una raíz ya conocida en el primer nivel primo. Si no se cumple ese requisito, la calculadora devuelve un error de entrada claro en lugar de presentar un residuo sin justificación matemática.
Comprenda el paso de Hensel para una raíz simple
Suponga que la raíz actual r funciona módulo p elevado a n. El siguiente candidato compatible tiene la forma r más t por p elevado a n, donde t es un dígito módulo p. Al dividir el valor actual del polinomio entre p elevado a n y multiplicar por el inverso de la derivada se obtiene ese dígito de corrección. La calculadora repite la operación nivel por nivel hasta llegar a p^k. La hipótesis decisiva es que la derivada formal en la raíz inicial no sea cero módulo p. Así, la derivada es invertible y cada corrección existe y es única. Si la derivada se anula módulo p, esta capacidad se detiene de forma deliberada con un error. Las raíces singulares exigen un análisis más general: pueden carecer de elevación, admitir varias o cambiar de comportamiento en potencias posteriores. Elegir una rama en silencio tergiversaría el teorema de raíz simple y podría hacer que cálculos posteriores parecieran únicos sin serlo.
Lea y verifique la elevación obtenida
El campo principal de raíz contiene el menor representante no negativo módulo el valor p^k devuelto. Ambos aparecen como cadenas decimales, de modo que los valores exactos se conservan aunque superen el intervalo numérico seguro de JavaScript. El exponente confirma el nivel solicitado, derivative_mod_p registra el residuo no nulo de la derivada usado en el cálculo y verified indica si la sustitución directa produce cero módulo el módulo final. El arreglo lifts comienza en el exponente uno y registra cada raíz y módulo sucesivos. Desde la segunda entrada, correction_digit es el dígito en base p añadido en esa etapa. Esta traza sirve para revisar ejercicios, ejemplos desarrollados, pruebas de algoritmos y notas de investigación reproducibles. Usted puede evaluar el polinomio en cualquier raíz listada y confirmar la divisibilidad por su módulo. El resultado es la elevación única congruente con la raíz inicial indicada módulo p; otra raíz inicial suele conducir a una rama p-ádica diferente.
Qué puede hacer con ella
Comprobar un ejercicio de teoría de números
Compare cada dígito de corrección con su cálculo manual y verifique el residuo final módulo la potencia prima solicitada.
Crear vectores modulares exactos
Genere raíces deterministas módulo potencias primas crecientes para probar código de álgebra simbólica o aritmética modular.
Explorar una rama p-ádica
Siga una raíz simple a través de potencias sucesivas de p e inspeccione la corrección en base p elegida en cada nivel.
Preguntas frecuentes
¿Qué orden de coeficientes utiliza la calculadora?
Orden ascendente de grado. El arreglo [a0, a1, a2] representa a0 + a1*x + a2*x^2.
¿Por qué p debe ser primo?
Esta capacidad implementa el lema de Hensel estándar para raíces simples sobre potencias de un primo. Un módulo inicial compuesto requiere otro planteamiento.
¿Por qué una derivada nula provoca un error?
La fórmula para raíces simples necesita que la derivada tenga inverso módulo p. Si se anula, la elevación puede no existir o no ser única, por lo que la calculadora no hace suposiciones.
¿Por qué la raíz y el módulo se devuelven como cadenas?
Las potencias primas pueden superar el intervalo entero seguro. Las cadenas decimales conservan cada cifra exactamente en JSON y en el navegador.
¿La raíz inicial debe estar entre cero y p menos uno?
No. Se acepta cualquier representante entero seguro y se reduce módulo p antes de validarlo y elevarlo.
¿Cuánto cuesta?
El cálculo en el navegador es gratuito. Una solicitud API cuesta $0.002.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su 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)Ejemplo de solicitud
{
"coefficients": [
-2,
0,
1
],
"root": 3,
"p": 7,
"k": 4
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.hensel_lift",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |