Il computer ha cambiato la matematica e i suoi rapporti con le altre discipline?
Riflessioni ed esperienze.

Stage per gli studenti della scuola secondaria - DiMa - Carlo Dapueto

http://macosa.dima.unige.it/stage2020

Prima parte

Faremo una brevissima panoramica storica sulla diffusione dei mezzi di calcolo,  faremo poi qualche esempio d'uso in matematica e nella altre discipline, utilizzando software libero e affidabile, e, infine, nel pomeriggio,  proverete a fare qualcosa voi.  Nel documento che segue le parti sottolineate sono da "cliccare".

——————— (1) ———————

Al di là della nascita dei primi computer, i mezzi di calcolo sono entrati prepotentemente nelle vita quotidiana di moltissime persone agli inizi degli anni '70 (50 anni fa).  All'inizio si diffusero le prime calcolatrici scientifiche.  Esse consentirono di implementare e rendere praticabili da un ampio pubblico prime procedure di calcolo, legate a varie aree della matematica.  Un esempio:  l'area tra l'asse delle ascisse e una parabola con asse di simmetria verticale e concavità verso il basso, studiata, qui, con un semplice programmino al computer, simulando quanto era fattibile con tali calcolatrici:

area parabola

Una prima osservazione. Dopo un po' otteniamo:
        133.33333333332146   se  n=67108864
        133.33333333333874   se  n=33554432
        133.33333333333303   se  n=16777216
        133.33333333333587   se  n=8388608

All'aumentare del numero delle prove prima o poi le uscite tendono a scostarsi dal valore esatto (che in questo caso particolare sappiamo essere 133+1/3). Questo pone l'esigenza di fare qualche riflessione sul calcolo approssimato (quando e come fermare l'algoritmo, come arrotondare il risultato, …).

Tutto ciò ebbe come ricaduta un rinnovamento dei programmi scolastici, introducendo l'uso dei mezzi di calcolo, riflessioni semplici di "calcolo numerico", modi nuovi di introdurre i concetti matematici tradizionali, … e la necessità di buttare a mare gran parte delle cose macchinose che un tempo si facevano a mano. I primi programmi che hanno introdotto questi temi a partire dalla scuola di base risalgono al 1979  (ma nella pratica didattica …!).

——————— (2) ———————

Per quanto riguarda la geometria, il passo decisivo fu la diffusione dei primi personal computer. All'università di Genova e in molte università in tutto il mondo ciò si realizzò soprattutto attraverso lo sviluppo e la diffusione delle piccolissime (rispetto ai computer fino ad allora in uso) HP85 (1979). Un esempio delle cose che si facevano con questi computer con gli studenti del primo anno del corso di laurea in matematica:

figure in movimento 
(clicca e aspetta 
qualche secondo)

Gli strumenti concettuali visti nei corsi (a teoria o ad esercizi) servivano per costruire gli oggetti matematici, ed altri strumenti concettuali sarebbero serviti per costruirne di nuovi ... (ma questo "intreccio" purtroppo è stata una breve parentesi ...).

——————— (3) ———————

Soprattutto a partire dal 1984 si sviluppano (prima in ambito Mac e, da un certo punto in poi, soprattutto, in ambito Windows) applicazioni per il trattamento delle immagini che utilizzano il mouse, ossia la possibilità di dare input "numerici" mediante movimenti "geometrici" (e che avrebbero dovuto spingere ad una impostazione del tutto diversa dell'insegnamento della geometria):

come tracciare un cerchio e trovarne il centro:
 
una trasformazione geometrica:
 
… e a riflessioni sulla natura del concetto di "punto":   (quali?)

——————— (4) ———————

Si sviluppa Internet (in Italia a partire dal 1986), nasce la possibilità di costruire e diffondere via rete documenti e immagini animate.  Qualche (altra) immagine, per dare idea del modo in cui le animazioni sono intervenute in vari ambiti dell'insegnamento:

  congettura           dimostrazione

Un dado "equo"

   
 
 
30%

Due dadi "equi"

  
 
 30%

Un dado costruito con la carta

   
 30%

Lanciandone due ci si stabilizza sulla distribuzione:

  
  
 20%

         

Le animazioni sono figure in movimento, che funzionano essenzialmente come in un film:  sono fotogrammi giustapposti e intervallati con un opportuno tempo (quelle qui viste sono gif animate; "gif" è un formato di immagini in uso dal 1987; sono facilmente realizzabili da ogni utente).

——————— (5) ———————

Possiamo fermarci qui, per avere un'idea di quando sono stati progettati i dispositivi che ora siamo abituati ad usare quotidianamente. Ora vedremo il funzionamento di alcuni programmi. Poi, nel pomeriggio, vi eserciterete ad usarli in aula computer.

Tutti i dispositivi a cui abbiamo accennato hanno incorporata molta matematica.
Consideriamo il programmino per calcolare l'area tra una parabola e l'asse x considerato sopra, con cui abbiamo simulato una calcolatrice scientifica. È realizzato in JavaScript (JS), un linguaggio di programmazione incorporato in tutti i browser, ossia i vari software (Internet Explorer, Mozilla Firefox, Microsoft Edge, Safari, …) con cui si naviga sul web. Sono simili a JS i vari linguaggi (incorporati nei browser o nel sistema operativo) con cui sono realizzati i programmi per prenotare e pagare un viaggio in treno o la partecipazione ad un certo spettacolo o … (questi linguaggi vengono chiamati "di scripting"). Vediamone un esempio più semplice.

costo fontina

Posso vedere il testo del programma (scritto nel linguaggio "html" dei browser) aprendo il seguente file in un programma per la lettura di testi.  Qui, in ambiente Windows, lo apro con BloccoNote (o NotePad); attivo il programma e apro il file  http://macosa.dima.unige.it/stage/costo.htm.
Ecco cosa vedo (" " introduce un ulteriore spazio bianco"; i comandi sono racchiusi tra parentesi angolari; "i" e "b" sono i comandi per il "corsivo" - o "italic" - e il "grassetto" - o "bold"):

<html><head><title>costo fontina in g</title>
<script type="text/javascript" language="javascript" type="text/javascript"> window.focus();
function F(x) { with(Math) { return round(x*1.95)/100 } }
function Calcola() 
{ q=Number(document.dati.quanta.value); document.dati.costo.value=F(q) }
</script></head>

<body style="font-family:Times New Roman; font-size:150%">
<center><b>COSTO DELLA FONTINA<br><br>
<form name="dati">
<i>grammi:</i> <input type="text" name="quanta" value="0" size=6 style="font-size:100%">
&nbsp; <input type="button" value="CLICCA" onClick="Calcola()" style="font-size:100%"> &nbsp;
<i>euro:</i> <input type="text" name="costo" value="0" size=6  style="font-size:100%">
<br></b></center>
</body></html>

In questo caso la matematica  (oltre ad essere presente nell'uso del linguaggio di programmazione, un tempo appannaggio dei matematici - prima della nascita dei corsi di laurea specifici, l'informatica si studiava nel corso di laurea in matematica)  è presente nel comando round(x*1.95)/100.

Un altro paio di esempi. Calcoliamo i divisori di 10000001:

divisori

Ottengo in pochi secondi:  1  11  909091  10000001.

Calcoliamo, passo passo,  3/23:

divisione tra interi

Se mi fermo ad un certo punto ottengo:

e capisco (perché?) che il periodo è  1304347826086956521739.

——————— (6) ———————

Ora saltiamo ad un software più evoluto:  Cinderella, che consente di realizzare immagini spostabili col mouse (una versione più semplice è GeoGebra, che alcuni di voi forse conoscono). Il software (gratuito) deve essere installato sul computer (vedi qui se sei interessato a farlo).

  

Vediamo come si può visualizzare in modo animato la somma di due vettori (rappresentati come numeri complessi; cosa sono i numeri complessi? a che cosa servono?):  clicca qui.

[se non apparissero i bottoni nella parte superiore dello schermo devi operare sul menu "Configuration" e quindi su "Seleziona Pannello di Controllo": vedi]

L'uso di software di geometria dinamica (come questo o GeoGebra o altri) per costruire in classe file che facciano cose significative, e senza perdere tempo rispetto agli obiettivi dei programmi scolastici, necessita di tempi di apprendimento troppo lunghi.  Altra cosa è limitarsi ad utilizzare file già costruiti, come quello ora visto.  Vedremo ora l'uso di un altro software più semplice, gratuito e usabile anche online, con cui si possono realizzare animazioni e svolgere alcuni tipi di calcoli (penso che molti di voi lo conosceranno).

——————— (7) ———————

Il software a cui abbiamo appena accennato è Desmos. Per un breve help si può cliccare qui.
Apriamolo cliccando qui: www.desmos.com.

Clicco Start Graphing, metto nel box 1  y = x^2, metto nel box 2  x = y^2
Per semplificare la vita Desmos usa sempre x ed y come variabili per le ascisse e le ordinate.
Posso spostare il piano cartesiano col mouse (o con un dito).
Se clicco su uno dei pallini a sinistra, () o (), posso togliere la visualizzazione di un grafico.
Cliccando la chiave inglese posso modificare la scala, anche rendendola non monometrica.

 

Vediamo un esempio più significativo.  Sotto sono riprodotte le posizioni (in metri) di un'auto che (inizialmente) viaggiava a velocità costante di circa 46.5 m/s (ossia circa 46.5/1000·60·60 ≈ 167 km/h, valore segnato dal tachimetro), rilevate con delle fotografie scattate ogni secondo a partire da quando l'autista ha iniziato a frenare.

Ecco le coppie ordinate (tempo, spazio) che rappresentano i valori rilevati  (la virgola è l'elemento separatore tra gli elementi di una coppia; per separare parte intera e parte frazionaria si usa il "punto", non la "virgola"):

(0,0),(1,44),(2,81),(3,113),(4,139),(5,160),(6,174),(7,183),(8,187)

Copio queste coppie nel box 3, cambio la scala nel modo indicato a destra.  Ottengo i punti sotto tracciati in verde. Poi metto nel box 4 la relazione y = a*x^2+46.5*x che rappresenta il moto dell'auto in metri al secondo quadrato, di cui conosco la velocità iniziale ma non l'accelerazione a.

  

Mi compare una scritta con cui mi viene chiesto di aggiungere uno slider (termine inglese, usato anche in italiano, per designare l'indice mobile lungo una scala di uno strumento); clicco la a che appare evidenziata e mi compare un 5º box, con uno slider con cui posso variare il valore di a; se poi in questo box clicco a mi appare una riga in cui posso cambiare gli estremi dello slider: metto −5 e 0, e metto 0.05 come passo.  Azionando lo slider posso modificare l'andamento della curva (parabola) e vedere che essa approssima al meglio i punti tracciati quando a = −2.9.  Dunque l'accelerazione con cui l'auto frena è −2.9 m/s².
Se clicco il bottone a forma di fiore e poi l'immagine della tabella ho la possibilità di vedere i dati sotto forma di tabella.
Se sbaglio qualcosa, posso tornare indietro con Ctrl+Z, come si fa in genere.

  

Questo software consente di realizzare grafici di curve e altre cose che si possono vedere nell'help. Vediamo solo come si possono calcolare le derivate; ricordiamo che la derivata di una funzione in un punto è la pendenza (Δy/Δx) della retta tangente al suo grafico in quel punto  (derivate e integrali sono temi che da qualche hanno si introducono in tutte le scuole a partire dal terzo anno, per affrontare gli argomenti di fisica, che nei licei classici e in altre scuole un tempo erano introdotti solo al 4º anno;  l'introduzione delle derivate al 3º anno, per altro, era già stata prevista per i licei scientifici nei programmi scolastici del 1936, più di 80 anni fa).
Calcoliamo come varia la velocità della nostra automobile.  Metto in un successivo box  (a*x^2+46.5*x), poi aggiungo in testa y = d/dx e ottengo il grafico rettilineo rappresentato sotto, che attraversa l'asse x nel punto di ascissa 8.  Questo è il tempo in secondi che l'auto impiega a fermarsi dopo che l'automobilista a incominciato a frenare  (Ricordiamo:  se l'automobilista ha frenato 1.5 s dopo che si è accorto dell'ostacolo ha percorso 1.5·46.5+187 = 256.75 m!!! La matematica serve anche per rendersi conto delle condizioni di pericolo, per sé e per gli altri).

——————— (8) ———————

Consideriamo, infine, il software libero più usato al mondo in ambito scientifico, R, riferimento standard per la statistica e per vari ambiti informatici.  Si tratta di software che può caricare librerie che consentono di adattarlo ai più svariati ambiti.  Noi useremo una libreria che consente di usarlo facilmente per le attività matematiche nei vari livelli scolastici, dalla scuola di base all'università.

  

Un ampio help sull'uso della libreria è accessibile da  http://macosa.dima.unige.it/R/base.htm (conviene usare l'help in inglese), in cui è spiegato anche come installare R sul proprio computer.  Faremo solo qualche flash, rivedendo anche alcuni degli esempi considerati sopra con altri software. La libreria carica anche alcuni comandi in italiano, ma noi useremo sempre i comandi in inglese.

I comandi sono separati da un "a capo" o da un ";". Il cancelletto "#" precede dei commenti per l'utente.

source("http://macosa.dima.unige.it/r.R")         # carico la libreria
divisors(10000001)
#[1]    1    11    909091   10000001
divInt(3,23, 35)         # divisione 3/23 con 35 cifre e resto
#[1] 0 1 3 0 4 3 4 7 8 2 6 0 8 6 9 5 6 5 2 1 7 3 9 1 3 0 4 3 4 7 8 2 6 0 8 6
#[1] 22
#
BF=6; HF=3           # base e altezza in pollici della finestra grafica
PLANE(-11,11, 0,11)  # ascisse da -11 a 11, ordinate da 0 a 10
F = function(x) -x^2/10+10
graph(F,-11, 11, "brown")
                       
F(-10); F(10)
#[1]  0
#[1]  0
integral(F, -10,10)
#[1]  133.3333
fraction( integral(F, -10,10) )
#[1]  400/3
# con PLANE il sistema era monometrico, con Plane non lo sarebbe stato
#
BF=4; HF=4; PLANE(0,8, 0,8)
u1=6; u2=1; v1=2; v2=5 
arrow(0,0, u1,u2, "red"); arrow(0,0, v1,v2, "red")
line(u1,u2, u1+v1, u2+v2, "brown"); line(v1,v2, u1+v1, u2+v2, "brown")
arrow(0,0, u1+v1, u2+v2, "blue")
                         
#
# Per l'automobile che frena, vediamo come affrontare il problema in modo più raffinato,
# usando strumenti che studierà chi proseguirà nelle facoltà scientifiche, ma il cui uso
# è facile da comprendere.
t = 0:8                                   # metto in t i valori interi da 0 a 8
s = c(0,44,81,113,139,160,174,183,187)    # metto in s una collezione di valori
BF=4; HF=3
Plane(0,9, 0,200)
POINT(t,s, "blue")                        # ho tracciato in blu i punti
abovex("sec"); abovey("m")
                         
# Il comando regression2 trova la funzione quadratica che "meglio" approssima i punti dati;
# se metto molti punti con s e t uguali a 0 impongo praticamente che (0,0) sia fisso.
# rep(x,n) contiene n volte il dato x; aggiungo 1 milione di volte (0,0).
t1 = c(rep(0,1e6), t); s1 = c(rep(0,1e6), s); regression2(t1,s1)
#-2.87 * x^2 + 46.3 * x + 4.31e-07      # trascuro 4.31e-07
f = function(x) -2.87 * x^2 + 46.3 * x 
graph(f, 0,8, "red"); POINT(t,s, "blue")
# Posso verificare che il punto più alto è quello di ascissa 8:
maxmin(f, -10,20)
#[1] 8.066202         # OK
#
# Il software consente di affrontare moltissimi argomenti matematici concettualmente, anche
# se non tecnicamente, alla portata dell'utente. Ma il software non basta ...
F = function(x) x/(abs(x-1)-abs(x+1))     # x/(|x-1|-|x+1|)  [per x>1 -x/2, ...]
BF=4; HF=3; Plane(-3,3, -2,1/2)
graph(F, -3,3, "blue")
# Ottengo il grafico sotto a sinistra ...
   
# ... ma c'è un buco che non viene visualizzato
F(0)
# NaN    # Not a Number
POINT(0, -1/2, "red")    # Vedi il grafico sopra a destra
# Questo era un esempio in cui era facile capire la cosa, ma ci sono molte
# situazioni analoghe assai più complesse.
#
# Facciamo ancora due flash.
# Le lunghezze di molti semi di fava raccolti da una classe di alunni dodicenni.
fave = c(
1.35,1.65,1.80,1.40,1.65,1.80,1.40,1.65,1.85,1.40,1.65,1.85,1.50,1.65,1.90,
1.50,1.65,1.90,1.50,1.65,1.90,1.50,1.70,1.90,1.50,1.70,1.90,1.50,1.70,2.25,
1.55,1.70,1.55,1.70,1.55,1.70,1.60,1.70,1.60,1.75,1.60,1.75,1.60,1.80,1.60,
1.80,1.60,1.80,1.60,1.80,1.00,1.55,1.70,1.75,1.30,1.55,1.70,1.75,1.40,1.60,
1.70,1.75,1.40,1.60,1.70,1.80,1.40,1.60,1.70,1.80,1.40,1.60,1.70,1.80,1.40,
1.60,1.70,1.80,1.40,1.60,1.70,1.80,1.40,1.60,1.70,1.80,1.40,1.60,1.70,1.80,
1.45,1.60,1.70,1.80,1.50,1.60,1.70,1.80,1.50,1.60,1.70,1.85,1.50,1.60,1.70,
1.85,1.50,1.60,1.75,1.90,1.50,1.60,1.75,1.90,1.50,1.65,1.75,1.90,1.55,1.65,
1.75,1.95,1.55,1.65,1.75,2.00,1.55,1.65,1.75,2.30,1.35,1.65,1.80,1.40,1.65,
1.80,1.40,1.65,1.85,1.40,1.65,1.85,1.50,1.65,1.90,1.50,1.65,1.90,1.50,1.65,
1.90,1.50,1.70,1.90,1.50,1.70,1.90,1.50,1.70,2.25,1.55,1.70,1.55,1.70,1.55,
1.70,1.60,1.70,1.60,1.75,1.60,1.75,1.60,1.80,1.60,1.80,1.60,1.80,1.60,1.80,
1.00,1.55,1.70,1.75,1.30,1.55,1.70,1.75,1.40,1.60,1.70,1.75,1.40,1.60,1.70,
1.80,1.40,1.60,1.70,1.80,1.40,1.60,1.70,1.80,1.40,1.60,1.70,1.80,1.40,1.60,
1.70,1.80,1.40,1.60,1.70,1.80,1.40,1.60,1.70,1.80,1.45,1.60,1.70,1.80,1.50,
1.60,1.70,1.80,1.50,1.60,1.70,1.85,1.50,1.60,1.70,1.85,1.50,1.60,1.75,1.90,
1.50,1.60,1.75,1.90,1.50,1.65,1.75,1.90,1.55,1.65,1.75,1.95,1.55,1.65,1.75,
2.00,1.55,1.65,1.75,2.30
)
# Range (minimo e massimo) e la loro quantità
range(fave);  length(fave)
#[1]  1.0  2.3
#[1]  260
BF=5; HF=3
histo(fave)
#[the distance of the sides of the grid is  5 %] 
#  Frequencies and percentage freq.: 
#  2,  0, 0,   4,  24,   40,   64,   64,   38,  18,   2, 0, 4
#0.77, 0, 0,1.54,9.23,15.38,24.62,24.62,14.62,6.92,0.77, 0,1.54
             
# Questo flash ci dà un'idea di come la statistica si intrecci con tutte le altre
# discipline. Non a caso si tratta di un tema matematico presente nei programmi in tutti
# i livelli scolastici e che dovrebbe intrecciarsi con tutte le altre aree matematiche.
#
# Un altro esempio:
# La distribuzione % della popolazione del Bahrain nel 2016 per classi di età e sesso:
CL = c("[0,5)","[5,10)","[10,15)","[15,20)","[20,25)", "[25,30)","[30,35)",
      "[35,40)","[40,45)","[45,50)","[50,55)","[55,60)","[60,65)","[65,70)",
      "[70,75)","[75,80)","[80,85)","[85,90)","[90,95)","[95,100)")
M = c(39,38,32,36,58,85,86,64,58,44,32,24,10,6,3,2,1)/10
F = c(38,35,32,29,30,37,40,33,29,25,20,14,7,4,3,3,1)/10
BF=5; HF=4
pyramid(F,M, "pink", "cyan",CL,"  ")
GridV(c(-max(F),max(M))); gridV(seq(-4,9,1))
abovex("Bahrain 2016 - F/M population - %")
             
# Diagrammi di questo genere si chiamano "a piramide".
# Come mai le popolazioni di maschi e femmine in Bahrain hanno distribuzioni così diverse?
# Pensateci.
#
# Due ultimi esempi:
k = function(x) sort(x); a = c(5,2,1,3); k(a)
#   1  2  3  5
AND = function(x,y) x & y;  AND(1>2, 1<3);  AND(1<2, 1<3)
#   FALSE    TRUE
# Che cosa calcolano le funzioni k e AND. Che cos'è una funzione?
# In matematica una funzione è una connessione di output a input, dove input/output
# possono essere di qualunque genere!

Nel tempo che ci rimane possiamo discutere di tutte le questioni o i problemi che volete approfondire.
Se volete rivedere/approfondire qualche argomento relativo all'uso del software potete guardare QUI.

———————————————

Seconda parte

A)   So che la rapida salita disegnata a fianco avanza orizzontalmente di 400±3 cm e che si innalza di 200±2 cm. Usando questo script calcola, arrotondata opportunamente, la pendenza della salita.

  

B)   Apri questo file di Cinderella, azionando i pallini rossi e verde determina sperimentalmente quanto deve essere lunga la corda per tracciare un'aiuola con i capi distanti 6 metri e l'asse maggiore lungo 12 metri. Potevo arrivarci anche senza questo esperimento?  [puoi spostare la parte di piano rappresentata azionando il tasto con le 4 frecce in basso a sinistra]

  

C)   Con Desmos provate a tracciare la figura  x·y < k  al variare di k.  Che forme assume la figura?

D)   Per risolvere un particolare problema un ingegnere svolge il seguente calcolo con R. Prova ad eseguirlo, spiega che cosa vuole calcolare l'ingegnere e cerca di capire che cosa fanno i vari comandi.

source("http://macosa.dima.unige.it/r.R")
BF=5; HF=4
f = function(x) x^2-2; g = function(x) x^3+1
graphF(f, -3,3, "blue")
graph(g, -3,3, "brown")
x = solution2(f,g, -2,0); x; more(x); more(f(x))
POINT(x,f(x), "red")

  

E)   Con R è possibile anche realizzare animazioni.  Esegui il seguente comando.  Quale curva viene tracciata?  Motiva la risposta.
 
BF=5; HF=5; CURVES(3)
 

———————————————

[soluzioni]

———————————————

Anche questo pomeriggio, nel tempo che ci rimane, possiamo discutere di tutte le questioni o i problemi che volete approfondire.
Possiamo, anche, sviluppare meglio la tematica dei rapporti con le altre discipline, che è stata affrontata in modo un po' implicito nel corso dell'esame dei vari esempi.
Se volete, potete, poi, inviarmi dei messaggi di posta elettronica:  dapueto@dima.unige.it
 

Altri esempi e riferimenti li potete trovare QUI.