Una intuizione semplifica il calcolo delle Terne Pitagoriche di distanza ‘1’

01

Le terne pitagoriche sono tre numeri (rispettivamente i due cateti e l’ipotenusa di un ipotetico triangolo rettangolo) obbligatoriamente interi e che soddisfano l’eguaglianza c1^2 + c2^2 = ipo^2 dove c1 e c2 costituiscono i due cateti e ipo costituisce l’ipotenusa. In questo articolo ci occupiamo delle terne pitagoriche a distanza “1” e del loro calcolo che, grazie ad una mia intuizione, è possibile semplificare ed applicare facilmente a qualsiasi linguaggio di programmazione.

Per essere una Terna Pitagorica occorre che si verifichi la condizione generale, ossia che i tre parametri siano tutti numeri interi. Esistono naturalmente infinite combinazioni possibili, in quanto si tratta sempre di una formazione non critica ad alta probabilità di avvenimento. Esempi importanti (semplici da calcolare anche mentalmente) sono rappresentati dai gruppi (3, 4, 5) oppure (5, 12, 13).

In questo articolo tratterò solamente di quelle terne in cui la misura di un cateto sia consecutiva (quindi distante di una unità) all’altro cateto. Iniziamo subito da un esempio, poi fornirò un metodo balistico per il calcolo e la determinazione. Le terne (3, 4, 5) e (20, 21, 29) e (119, 120, 169) e (696, 697, 985) e così via, costituiscono validamente delle terne pitagoriche in quanto, come si può notare, ciascun cateto dista dall’altro cateto proprio di una unità, ed inoltre i tre parametri sono numeri interi. Provate ad effettuare, con il Teorema di Pitagora, il calcolo e vedrete che i gruppi sono verificati. Calcolare le terne con l’ausilio di un elaboratore è oltremodo semplice.

Utilizzando un linguaggio di programmazione è possibile fare in modo che una variabile incrementi il suo valore di una unità sino alla ricerca del risultato voluto. Ma cosa succede quando la “fame” di numeri e di risultati aumenta a dismisura sino a pretendere quantità di lunghezza spropositata e di grandezza stratosferica?

Con i normali metodi di calcolo possiamo sicuramente abbandonare il nostro lavoro per la presenza di due problemi apparentemente irrisolvibili:

  1. I normali linguaggi di programmazione basano i propri valori numerici su pochi bit, pertanto la precisione e l’accuratezza (quindi il numero delle cifre composte) è estremamente basso. In altre parole potremo solo usare numeri formati al massimo da 8-12 cifre significative e “realmente” esistenti, in quanto la semplice notazione esponenziale non si presta affatto per lo scopo;
  2. Ammesso che il linguaggio di programmazione ci permetta di risolvere il problema n. 1, ci troviamo davanti all’insormontabile fattore “tempo”, che purtroppo ci mette davanti un limite pratico di calcolo. Basti pensare infatti che, per calcolare una terna consecutiva composta dai numeri (927538920, 927538921, 1311738121) occorrerebbero, in media, 30 giorni. Questo tempo proibitivo si avrebbe però utilizzando un algoritmo non ottimizzato, quindi non idoneo.

Ma esiste una soluzione. Propongo innanzitutto il listato in UBASIC, per la ricerca delle terne. Il metodo utilizzato pertanto (per il momento) è quello della “forza bruta” in quanto esso cerca indiscriminatamente tutti i possibili valori da 1 al limite massimo (nell’esempio 10^200).

   10   point 200 
   20   cls 
   30   N=0 
   40   while N<10^200 
   50         N=N+1 
   60         C1=N:C2=N+1:IP=sqrt(C1*C1+C2*C2) 
   70         R=IP-int(IP) 
   80         if R=0 then print C1;C2;IP 
   90   wend
Il listato è funzionante ma non funzionale. E’ estremamente lento.  Commentiamo le varie istruzioni presenti nei numeri di linea:
10 Predispone la gestione sino a 963 decimali;
20 Cancella il video;
30 Inizializza il contatore a zero (punto di partenza);
40 Crea un ciclo ripetitivo che si ripeterà sino a quando N arriva a 10E200 !!!
50 Incrementa di una unità il contatore;
60 Assegna a C1 il valore di N, C2 il valore successivo e calcola ipotenusa;
70 Controlla se ipotenusa è intero, guardando se ha cifre decimali;
80 Se è intero allora stampa la TERNA PITAGORICA;
90 Fine ciclo.

 

Riporto adesso alcuni risultati generati dopo alcune ORE di funzionamento:

 

   CATETO 1      CATETO 2     IPOTENUSA  (C1 corr)/(C1 prec)
—————————————-
          3             4             5   
         20            21            29    6,666666667 
        119           120           169    5,950000000 
        696           697           985    5,848739496 
      4.059         4.060         5.741    5,831896552 
     23.660        23.661        33.461    5,829021927 
    137.903       137.904       195.025    5,828529163 
    803.760       803.761     1.136.689    5,828444631 
  4.684.659     4.684.660     6.625.109    5,828430128 
 27.304.196    27.304.197    38.613.965    5,828427640
Siamo ancora ben lungi dal parlare di Grandi Numeri.  Dopo un’attenta osservazione alle terne generate, salta subito all’occhio un particolare veramente importante: guardate il  rapporto che esiste tra un qualsiasi cateto1 ed il cateto1 precedente (esempio: 119/20 oppure 23.660/4.059 oppure ancora    4.684.659/803.760).  Come si può ben osservare esso tende, sempre di più, al numero 5,82842712475, cioè:
 Questo vuol dire che se, appena viene trovata una terna, moltiplichiamo il cateto 1 per tale coefficiente, “saltiamo” direttamente ad esaminare  il prossimo cateto, con il risparmio di tantissimo tempo.

 

La scoperta di un nesso
 Dopo settimane di studio, di ricerca e di tentativi, ho trovato alcuni elementi che caratterizzavano la successione ordinata delle Terne Pitagoriche Particolari, che adesso vado ad evidenziare, indicando l’esistenza di alcuni nessi:
  • Il rapporto tra un cateto di una terna e lo stesso cateto precedente tende al numero irrazionale 5,828427125. Questo numero, studiato già in precedenza è equivalente all’espressione 3+(2*sqrt(2)) o, meglio ancora, 3+sqrt(8).
  • Il rapporto tra l’ipotenusa ed un cateto tende al numero irrazionale 1,414213562 che, come si sa, equivale alla radice quadrata di 2.
Eseguendo svariate interpolazioni, allo scopo di applicare un adeguato “curve fitting“, ho finalmente trovato la  formula risolutiva per determinare la ennesima terna pitagorica particolare, secondo il modello di equazione denominato “Modified Power”:
dove:
  • Ipotenusa è naturalmente la misura dell’ipotenusa intera da calcolare;
  • (X) è il numero d’ordine dell’ipotenusa, ed in generale, di tutta la Terna Pitagorica Particolare;
  • “a” è una costante irrazionale pari a 0,8535539. Dopo giorni di studio ho realizzato che essa è pari a:
  • “b” è una costante irrazionale pari a 5,8284271 e come detto sopra essa è pari a:
  • “x” è semplicemente il numero d’ordine della terna che si vuol cercare, come ad esempio la 20ma, la 50ma e così via.
Generalizzando le formule, sostituendo le costanti e raggruppandole per intero si ha:

 

Con queste formule finali si  pone fine alla ricerca sistematica di algoritmi e tentativi iterativi, in quanto propone una “formula diretta” per il calcolo e la determinazione della ‘n-esima’ Terna Pitagorica Particolare, con distanza tra i cateti pari all’unità.  La formula risolutiva, naturalmente implementabile su qualsiasi sistema e con qualsiasi linguaggio di programmazione, ha lo scopo di ricavare direttamente, ed in tempi rapidissimi, la misura dei cateti e dell’ipotenusa,  rispettando la condizione che i due cateti devono essere a distanza 1, cioè la loro differenza deve esse pari all’unità.

GDM

 

Quello che hai appena letto è un Articolo Premium reso disponibile affinché potessi valutare la qualità dei nostri contenuti!

 

Gli Articoli Tecnici Premium sono infatti riservati agli abbonati e vengono raccolti mensilmente nella nostra rivista digitale EOS-Book in PDF, ePub e mobi.
volantino eos-book1
Vorresti accedere a tutti gli altri Articoli Premium e fare il download degli EOS-Book? Allora valuta la possibilità di sottoscrivere un abbonamento a partire da € 2,95!
Scopri di più

3 Comments

  1. Piero Boccadoro Piero Boccadoro 2 gennaio 2013
  2. PERUZZO FLAVIO 25 luglio 2014
  3. Massimo.Manca Massimo.Manca 19 gennaio 2015

Leave a Reply