La domanda è nata da una tesi dove si esplorano le misconcenzioni in matematica e come queste possano essere combattute con strumenti come Geogebra e Logo. Precisamente la questione posta dalla laureanda concerneva le trasformazioni geometriche che lasciano invariato il perimetro a scapito dell’area o viceversa; da qui la sua domanda: si può calcolare l’area di una figura con Logo?
La cosa più facile è calcolare il perimetro. Si potrebbe dire che in Logo è un fatto quasi spontaneo. Basta accumulare la lunghezza dei singoli passi della tartaruga — in pratica i valori delle successive istruzioni FORWARD — e il gioco è fatto: la somma finale darà la lunghezza del perimetro. Vedremo alla fine che questa quasi banale proprietà è espressione di una caratteristica fondamentale di Logo. Ma andiamo per gradi.
Se calcolare il perimetro è intuitivo e facile ben diverso è valutare l’area. Primariamente perché la tartaruga “vede” solo quello che sta tracciando passo passo. La sua è una visione prettamente locale e non ha nessuna percezione di qualità globali della figura che si formerà. Be’, in effetti per ottenere questo risultato un pò fuori dal seminato bisogna andare, nel senso che dobbiamo chiedere una mano a Cartesio, cessando per un attimo di fare gli schizzinosi pretendendo di fare proprio tutto con la Turtle Geometry.
E infatti, devo confessare che il modo per risolvere il problema mi è venuto in mente ripensando a come l’avevo risolto quarant’anni fa nel contesto delle elaborazioni delle scintigrafie, proprio in quei frangenti nei quali mettevo le mani nei computer della medicina nucleare di Firenze in modo un po’ birbone. E a quei tempi solo a Cartesio e Euclide potevo rivolgermi perché la Turtle Geometry non sapevo nemmeno cosa fosse.
Chiedere aiuto a Cartesio in questo contesto vuol dire disporre un sistema di riferimento Cartesiano nel piano percorso dalla tartaruga. Qui faccio riferimento a LibreLogo ma la stessa cosa si può fare tranquillamente con altre implementazioni, con il modulo Turtle di Python per esempio. In realtà in LibreLogo il sistema di riferimento cartesiano c’è e ci sono anche le istruzioni per muovere la tartaruga in modo cartesiano, vale a dire dandole direttamente le coordinate dei punti che deve raggiungere. Per iniziare a fissare le idee scegliamo una figura semplice, il triangolo equilatero, che produciamo mediante la procedura POLY, fondamento della Turtle Geometry [1]:
TO POLY L A N
REPEAT N [
FORWARD L
RIGHT A
]
END
POLY 100 120 3

Abbiamo così ottenuto un triangolo equilatero di lato eguale a 100 punti [2]. Per illustrare il metodo con maggiore generalità conviene ruotare il triangolo di un angolo arbitrario, ad esempio 15°. È facile ruotare le figure grazie alla natura intrinseca della loro rappresentazione nella Turtle Geometry. È infatti sufficiente anteporre il comando RIGHT 15 all’invocazione di POLY:
RIGHT 15
POLY 100 120 3

Collochiamo ora questa figura in un riferimento cartesiano.
La figura [3] seguente mostra l’idea base del metodo.

Una volta disegnato il sistema di riferimento si tratta di percorrere il contorno disponendo di una sorta di magia che calcola l’area sottesa da esso via via che la tartaruga procede. Nell’immagine di sinistra è rappresentato il risultato dopo i primi due FORWARD, che tracciano i due lati superiori del triangolo così orientato. La zona verde rappresenta l’area calcolata. La magia ha però una caratteristica particolare: quando la tartaruga procede verso destra l’area calcolata è positiva mentre quando procede verso sinistra allora questa à negativa. Questo effetto è rappresentato in rosso nell’immagine centrale dove la tartaruga ha tracciato il terzo lato. Il risultato finale è quindi quello di sottrarre la zona rossa dell’immagine di mezzo dalla regione verde di quella di sinistra. Quella che rimane è l’area del triangolo, nell’immagine a destra.
A livello intuitivo dovrebbe essere chiaro. Ma come facciamo a calcolare effettivamente le aree comprese fra i tratti percorsi dalla tartaruga e l’asse delle ascisse? Con questa semplice osservazione: ogni volta che la tartaruga percorre un segmento con un comando FORWARD si genera un trapezio. Consideriamo il quadrilatero ABCD nella figura seguente.

Poiché i punti A e D sono rispettivamente le proiezioni ortogonali dei punti B e C sull’asse delle ascisse, i lati A-B e D-C sono paralleli e il quadrilatero è un trapezio. In tal caso l’area del trapezio è data da
dove e
sono rispettivamente le lunghezze della base maggiore BA e della base minore CD del trapezio.
Per capire il meccanismo di sottrazione dell’area descritto dalla Fig. 3, occorre concentrare l’attenzione sull’inclinazione del lato obliquo del trapezio (BC). L’inclinazione è misurata dall’angolo dove il valore
corrisponde alla direzione verticale verso l’alto. Poiché l’altezza del trapezio è data da
essa risulterà avere valori positivi per
compreso fra
e
e valori negativi fra
e
(che coincide con
). In virtù di questo avremo che ogni volta che la direzione della tartaruga presenta una componente verso sinistra il valore dell’area sottostante sarà negativo, ottenendo così l’effetto di Fig. 3.
A questo punto possiamo vedere come può essere modificato il codice precedente per disegnare un triangolo equilatero inclinato di 15° calcolandone allo stesso tempo l’area.
1 TO POLYS L A N
2 S = 0
3 REPEAT N [
4 T = HEADING ; angolo θ
5 P = POSITION
6 Y1 = P[1]
7 FORWARD L
8 RIGHT A
9 P = POSITION
10 Y2 = P[1]
11 YY = (Y1 + Y2)/2
12 S = S - YY * L * SIN T * PI/180
13 ]
14 OUTPUT S
15 END
16
17 RIGHT 15
18 L = 100
19 S = POLYS L 120 3
Due osservazioni relative all’istruzione N. 12. Nell’argomento della funzione compare il fattore
perché in LibreLogo il comando SIN vuole valori in radianti mentre
nel codice è espresso in gradi. Inoltre, nella medesima istruzione, l’accumulo dei valori dei successivi trapezi avviene per sottrazione anziché per somma, il che parrebbe controintuitivo. Il motivo risiede nelle convenzioni geometriche di LibreLogo, dove il sistema di riferimento cartesiano è collocato nell’angolo in alto a sinistra del foglio, con l’asse delle ordinate orientato verso il basso mentre gli angoli sono contati rispetto alla direzione verticale verso l’alto. Per il resto penso che sia facile individuare e comprendere le modifiche rispetto alla versione precedente.
Verfichiamo il comportamento del codice in alcuni casi:
Figura | Orientazione | Formula | Valore esatto | Valore Logo | Errore % |
Triangolo lato 100 | 0 | 4330.13 | 4330.40 | 0.006 | |
Triangolo lato 100 | 15 | 4330.13 | 4332.47 | 0.054 | |
Triangolo lato 100 | 45 | 4330.13 | 4330.74 | 0.014 | |
Quadrato lato 100 | 0 | 10000.00 | 10000.63 | 0.0063 | |
Quadrato lato 100 | 45 | 10000.00 | 10004.95 | 0.049 | |
Cerchio REPEAT [FORWARD 1 RIGHT 1] | 10313.24 | 10318.79 | 0.054 |
Come si vede gli errori del calcolo rispetto ai valori esatti sono al massimo di qualche parte per diecimila, in armonia con l’accuratezza grafica della tartaruga in LibreLogo.
Calcolo differenziale e integrale
Ai lettori con reminiscenze di analisi sarà certo tornato in mente il concetto di integrale definito. Questo infatti, a livello di I anno di università — forse V liceo, non sono sicuro — viene spesso introdotto con l’esempio del calcolo dell’area sotto una curva, che è proprio ciò che abbiamo fatto qui. Infatti l’integrale se rappresentato, o per meglio dire approssimato in modo discreto, consiste in una sommatoria; in questo caso sommatoria delle aree di una successione di trapezi. Sempre rovistando nella memoria qualcuno ricorderà che l’operazione di integrazione rappresenta la soluzione di un’equazione differenziale. Le equazioni differenziali mettono in relazione fra loro le variazioni delle quantità in gioco anziché le quantità medesime. Così facendo hanno un carattere locale. Detto in modo intuitivo la soluzione di un’equazione differenziale consiste nella ricostruzione del fenomeno che descrive attraverso un processo di sommazione delle piccole variazioni locali.
Seymour Papert nel suo Mindstorms enuncia la natura differenziale del comportamento della tartaruga:
The Turtle program is an intuitive analog of the differential equation, a concept one finds in almost every example of traditional applied mathematics.
Mindstorms (1993) II ed., Basic Books, p. 66
Non v’è niente di infinitesimo in un programma al computer. Al più vi possono essere cose molto piccole, come nel caso dei piccoli passi e delle piccole deviazioni nel cerchio tracciato dalla tartaruga. Però si tratta sempre di variazioni, non infinitesime ma piccole. Se quindi a livello intuitivo possiamo assimilare il tracciamento di un percorso con la tartaruga alla soluzione di un’equazione differenziale possiamo anche immaginare in questo di poter realizzare un processo analogo a quello di integrazione. Vediamo alcuni esempi.
- Calcolo del perimetro. Si tratta semplicemente di accumulare la misura dei vari spostamenti fatti con le istruzioni FORWARD, durante il percorso; dal punto di vista del codice in modo simile a quello che abbiamo applicato per calcolare l’area.
- Calcolo dell’area che abbiamo visto in questo articolo. E qui, forti di questi due strumenti possiamo lavorare su trasformazioni geometriche che agiscono diversamente su area e perimetro, come nella tesi da cui è partito questo piccolo studio.
- Calcolo della deviazione totale della tartaruga. Il procedimento è altrettanto semplice come quello del perimetro: si tratta solo di sommare i successivi angoli di deviazione. Sorprendenti sono le conseguenze, emerse qualche anno fa durante il tentativo di rispondere ad un’altra studentessa; vedi La risposta definitiva al quesito di Marta. Considerazioni che abbiamo scoperto essere collegate al cosiddetto teorema del viaggio totale della tartaruga (Total Turtle Trip Theorem) per cui in un percorso intorno ad una qualsiasi area nel quale la tartaruga finisca nello stato iniziale la somma di tutte le deviazioni è sempre eguale a 360°. Il quesito di Marta, come quello di un’altra studentessa, Chiara (Le stelle di Chiara), era volto a trovare un criterio di arresto nell’applicazione di una procedura POLY con parametri L (lato) e A (angolo di deviazione) arbitrari. Il criterio fornisce direttamente il numero di cicli
necessari per chiudere la figura:
, dove
rappresenta il minimo comune multiplo fra i numeri interi
e
.
- Calcolo della somma degli angoli interni. Se la somma delle deviazioni, supplementari rispetto agli angoli interni, dà sempre lo stesso risultato, la somma degli angoli interni dà invece… ancora un volta un risultato soprendente ma questo lo lasciamo trovare al lettore!
Note
[1] Abelson H. e diSessa A. (1986) Turtle Geometry, MIT Press.
In realtà nella definizione del comando POLY di Abelson e diSessa non compare il parametro N che designa il numero di lati. Il motivo sta nel fatto che loro sono interessati all’essenza matematica dell’oggetto POLY nel quale il numero di lati è già determinato dall’angolo di deviazione..
[2] Il concetto di punto in LibreLogo coincide con quello di punto tipografico, pari a 1⁄72 di pollice: 1⁄72 × 25.4 mm ≈ 0.353 mm. Di converso in 1 mm ci stanno 2.83 punti tipografici.
[3] Tutte le figure di questo articolo sono state prodotte con LibreLogo stesso.