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:
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 |
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"
Due dadi "equi"
|
Un dado costruito con la carta
Lanciandone due ci si stabilizza sulla distribuzione:
|
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.
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%"> <input type="button" value="CLICCA" onClick="Calcola()" style="font-size:100%"> <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:
Ottengo in pochi secondi: 1 11 909091 10000001.
Calcoliamo, passo passo, 3/23:
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 = |
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 |
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
Calcoliamo come varia la velocità della nostra automobile. Metto in un successivo box
(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
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)
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.