Cosa succederebbe se un grande guerriero e una piccola tartaruga si sfidassero in una gara di velocità? Per Zenone di Elea, matematico e filosofo greco del V secolo a.C., il guerriero non raggiungerebbe mai la tartaruga — almeno secondo la logica del suo celebre paradosso. Eppure il buon senso ci dice il contrario. Ecco come la matematica ha risolto il dilemma dopo quasi duemila anni di dibattito.
Il Paradosso
“Il prode Achille e la piccola tartaruga decidono di fare una gara di velocità. Achille, sicuro di vincere, decide di dare un bel vantaggio alla tartaruga. Come potrebbe mai perdere il grande guerriero contro il piccolo e lento animale? La tartaruga parte e Achille aspetta. Solo dopo qualche minuto il prode Achille parte all’inseguimento. Achille, in ogni minuto, dimezza la distanza che lo separa dalla tartaruga… riuscirà mai l’eroe a raggiungere la sua avversaria?”
Se aveste fatto questa domanda a Zenone, vi avrebbe risposto tranquillamente di no.
Il ragionamento è questo: immaginate che la distanza tra Achille e la tartaruga sia un numero intero che continuate a dividere per due ad ogni intervallo. Il risultato, per quanto piccolo, non sarà mai uguale a zero — sarà sempre un numero decimale più piccolo, all’infinito.
Dove sbagliava Zenone
Zenone concludeva che la somma di infinite grandezze desse un valore infinito:
1/2 + 1/4 + 1/8 + 1/16 + … = infinito?
L’errore sta proprio qui. Zenone credeva che la somma di infinite grandezze debba per forza dare una grandezza infinita. Come ci dimostra il calcolo infinitesimale, non è così. Dato x = 1/2:
(1-x)(x¹ + x² + x³ + …) = x − x^(n+1)
Quindi: x¹ + x² + x³ + … = (x − x^(n+1)) / (1−x)
Se x = 1/2, la somma converge a: (1/2) / (1/2) = 1
Il tempo impiegato da Achille è dunque finito. Possiamo trattarlo come un semplice problema di cinematica.
La soluzione numerica
- Distanza iniziale Achille–Tartaruga: 1000 metri
- Velocità Achille: 10 m/s
- Velocità Tartaruga: 1 m/s
Lo spazio percorso da Achille (10t) deve eguagliare il vantaggio iniziale più lo spazio percorso dalla tartaruga:
10t = 1000 + t → 9t = 1000 → t = 111,1 secondi
Il buon Achille raggiunge la tartaruga in poco meno di due minuti. Zenone, dopo duemila anni, può finalmente dormire sonni tranquilli.
L’implementazione in C#: il paradosso sul computer
Il programma seguente simula la gara usando un algoritmo ricorsivo in C#. L’aspetto interessante è che nessuna macchina reale può rappresentare il paradosso di Zenone alla lettera: la distanza diventa sempre più piccola, ma a un certo punto la variabile raggiunge il limite di precisione del tipo di dato… e Achille prende la tartaruga. Provate a cambiare il tipo della variabile di distanza (da decimal a double o float) e osservate come cambia il comportamento.
using System;
namespace ZenoneInCSharp
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
decimal x = 1000;
Console.WriteLine("Achille e la Tartaruga: un'implementazione del paradosso di Zenone.
");
Zenone(ref x);
}
static public int min = 0;
static void Zenone(ref decimal x)
{
if (x > 0)
{
Console.WriteLine("Achille dista " + x + " metri dalla tartaruga dopo " + min + " minuti.");
Console.WriteLine("(Premi Invio)");
Console.ReadLine();
x = x / 2;
min++;
Zenone(ref x);
}
else
{
Console.WriteLine("Achille prende la tartaruga in " + min + " minuti.");
Console.WriteLine("Abbiamo uno spazio FINITO di memoria per contenere la distanza.");
Console.WriteLine("In caso contrario la tartaruga, in virtù del paradosso, vincerebbe la gara.");
Console.ReadLine();
}
}
}
}
Articolo originalmente pubblicato su itvirtualcommunity.net (2004), riscritto e aggiornato nel 2012.








Leave a Reply
You must be logged in to post a comment.