Equazione di Pell
Il risolutore dell’equazione di Pell trova la soluzione fondamentale di x² − Dy² = 1 per un intero positivo D che non sia un quadrato perfetto.
Esegui gratis nel browser
Inserisca D per ottenere la più piccola coppia di interi positivi x e y che soddisfa l’equazione. Il calcolo usa un’aritmetica intera esatta, quindi anche le risposte oltre il normale intervallo numerico di JavaScript rimangono precise. Lo strumento è utile per esercizi di teoria dei numeri, studio delle frazioni continue, verifiche di algoritmi e software che richiedono una soluzione canonica e affidabile dell’equazione di Pell.
Che cosa indica la soluzione fondamentale
Per un intero positivo fisso D che non sia un quadrato, l’equazione di Pell cerca valori interi che soddisfino x² − Dy² = 1. Esistono infinite soluzioni positive, ma tutte sono generate da un’unica coppia minima non banale. Questa calcolatrice restituisce tale coppia, detta soluzione fondamentale: x e y sono positivi, l’identità vale esattamente e nessun x positivo più piccolo risolve la stessa equazione. Per esempio, D = 2 produce x = 3 e y = 2, perché 3² − 2 × 2² è uguale a 1. L’input deve essere un numero intero compreso tra 2 e 10,000,000. Un D quadrato perfetto viene rifiutato perché x² − Dy² si fattorizza come (x − √D y)(x + √D y) e non esiste una soluzione positiva con y maggiore di zero. I risultati sono stringhe decimali e non valori in virgola mobile. Questa rappresentazione conserva ogni cifra quando la soluzione fondamentale è inaspettatamente grande, fenomeno che si presenta anche per alcuni valori piuttosto modesti di D. Lei può quindi copiare la risposta in un sistema di algebra computazionale o in una libreria a precisione arbitraria senza arrotondarla prima.
Come le frazioni continue trovano la risposta
L’algoritmo sviluppa √D come frazione continua semplice periodica. Le sue convergenti forniscono approssimazioni razionali p/q sempre più accurate di √D, finché numeratore e denominatore di una convergente soddisfano p² − Dq² = 1. Il risolutore aggiorna lo stato della frazione continua e le due ricorrenze delle convergenti con operazioni intere deterministiche. Dopo ogni passaggio verifica l’identità di Pell mediante aritmetica BigInt e restituisce subito la prima soluzione positiva. Questa prima convergente valida è la soluzione fondamentale; lo strumento non deve quindi esaminare coppie arbitrarie di interi né ipotizzare un intervallo per x e y. Il conteggio delle iterazioni indica quante convergenti sono state provate, inclusa la parte intera iniziale di √D. Il campo aiuta a confrontare le lunghezze dei periodi o a esaminare le prestazioni, ma non modifica il risultato matematico. La verifica finale dell’identità non usa approssimazioni numeriche. La normale radice quadrata serve soltanto a ricavare il pavimento intero esatto per il valore D limitato; ogni possibile grande soluzione e ogni uguaglianza vengono calcolate esattamente.
Come usare e verificare i valori restituiti
Invii un oggetto con il campo d, per esempio {"d": 13}. È accettato anche l’alias D maiuscolo per le formule copiate dalla notazione convenzionale. Una risposta valida include d, x, y e iterations. Nel codice dell’applicazione, tratti x e y come stringhe di interi decimali: i linguaggi dotati di interi a precisione arbitraria possono convertirle direttamente, mentre i sistemi limitati a numeri di ampiezza fissa devono conservare le stringhe o utilizzare una libreria per grandi interi. Per verificare autonomamente una risposta, elevi x al quadrato, sottragga D moltiplicato per il quadrato di y e confermi che il risultato sia esattamente uno. Esegua il controllo con aritmetica intera, non in virgola mobile. Tipi non validi, frazioni, valori fuori dall’intervallo pubblicato e quadrati perfetti generano un errore di input non valido invece di un risultato ingannevole. Il risolutore non usa rete, casualità, stato memorizzato o data corrente, quindi lo stesso D produce sempre la stessa risposta. Il browser è comodo per calcoli singoli; l’API costa $0.002 per richiesta quando occorre integrarla in uno script, un servizio didattico o una suite di test.
Casi d'uso
Verifichi esercizi di teoria dei numeri
Calcoli la soluzione canonica minima e confronti uno sviluppo manuale in frazione continua con i valori esatti di x e y.
Crei casi di test deterministici
Generi soluzioni esatte di Pell per convalidare aritmetica a precisione arbitraria, ricorrenze o procedure di algebra computazionale.
Esplori i periodi delle frazioni continue
Confronti il numero di iterazioni e le dimensioni delle soluzioni per diversi valori non quadrati di D.
Domande frequenti
Che cosa restituisce il risolutore?
Restituisce d, la soluzione positiva fondamentale x e y come stringhe decimali esatte e il numero di convergenti verificate.
Perché x e y sono stringhe?
Le soluzioni di Pell possono superare l’intervallo intero sicuro dei comuni ambienti JSON. Le stringhe decimali preservano tutte le cifre senza arrotondamenti.
Perché un D quadrato perfetto viene rifiutato?
Quando D è quadrato non esiste una soluzione di Pell non banale con y positivo e quindi manca una soluzione positiva fondamentale.
Quale intervallo di input è supportato?
D deve essere un intero non quadrato compreso tra 2 e 10,000,000.
Quanto costa una chiamata API?
Ogni richiesta API costa $0.002. Lei può anche eseguire gratuitamente la capacità nel browser.
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/pell-equation-solver \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"d":61}'const res = await fetch("https://api.kit.forhosting.com/numth/pell-equation-solver", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"d": 61
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/pell-equation-solver",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"d": 61
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/pell-equation-solver", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"d":61}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"d":61}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/pell-equation-solver", 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
{
"d": 61
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.pell_equation_solver",
"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.
Limiti
max_d | 10000000 |
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. |