Blog — Principi matematiciDante Noguez |
Versione | 0.5.0 | |
|---|---|---|---|
| Lingua | ES/EN | ||
Questo testo e la continuazione di Elementi di reti neurali. Il mio proposito e ottenere geometricamente l’integrale a partire dalla derivata.
Cosi come la derivata nasce dalla pendenza, possiamo comprendere l’integrale a partire dall’area. In particolare, l’integrale ci aiuta a determinare l’area sotto qualsiasi segmento di una funzione.
Per esempio, supponiamo di avere la seguente funzione quadratica e di voler ottenere l’area del segmento denotato dalle linee tratteggiate:
x = np.arange(0, 21, 2)
def f(x): return x**2
y = f(x)
Una possibile approssimazione potrebbe ottenersi mediante le aree del rettangolo e del triangolo che possono formarsi al di sotto:
Dove:
\text{Rettangolo} = base \times altezza = x \cdot f(x) = (12 - 10)(100) = 200
\text{Triangolo} = \frac{1}{2} \times base \times altezza = \frac{x \cdot f(x)}{2} = \frac{(12-10)(144-100)}{2} = 44
\text{Area totale} = 200+44 = 244
Ma potremmo anche pensare a un’approssimazione piu semplice, sebbene un po’ meno esatta, ovvero determinare unicamente l’area del rettangolo che occupa quello spazio:
Ottenendo come risultato:
\text{Rettangolo} = x \cdot f(x) = (12 - 10)(144) = 288
Tuttavia, sappiamo che questi calcoli sono inesatti e laboriosi. Sappiamo anche che le funzioni possono assumere forme piu complesse dove il procedimento di disegnare figure sarebbe laborioso e inefficiente. Al contempo, i «trucchi» del calcolo differenziale possono suggerirci che deve esistere una soluzione. E se cominciassimo ad approssimarci al numero corretto con rettangoli piu piccoli?
x = np.arange(0, 21, 0.5)
def f(x): return x**2
y = f(x)
Ora ho quattro rettangoli con una base di 0.5, le cui aree posso determinare nel seguente modo:
\text{Rettangolo 1} = x_1 \cdot f(x_1) = (10.5 - 10)(100) = 50 \\ \text{Rettangolo 2} = x_2 \cdot f(x_2) = (11 - 10.5)(121) = 60.5 \\ \text{Rettangolo 3} = x_3 \cdot f(x_3) = (11.5 - 10.5)(132.25) = 66.12 \\ \text{Rettangolo 4} = x_4 \cdot f(x_4) = (12 - 11.5)(144) = 72 \\
Infine, per ottenere l’area totale, sommo tutti i valori tra loro: 50+60.5+66.12+72 = 248.62
Ci siamo approssimati meglio al risultato e il nostro numero appare simile al nostro primo calcolo. Ora, per entrare nel vivo del calcolo infinitesimale, ci manca coinvolgerci con il paradossale e intricato mondo dell’infinito. Non sarebbe piu accurato un risultato se utilizzassimo 10 rettangoli invece di 4? Anzi, perche non usare mille, un milione o, meglio ancora, infiniti rettangoli per realizzare il nostro calcolo? Questa e l’essenza del calcolo integrale e, gia familiarizzati con la derivata, puo sembrarci ragionevole e intuitivo.
Proviamolo programmaticamente, poiche manualmente sarebbe un disastro. Otteniamo 2100 valori di x, da 0 fino a 20.999 a intervalli di 0.01:
x = np.arange(0, 21, 0.01)
def f(x): return x**2
y = f(x)Allo stesso modo, otteniamo i loro valori corrispondenti di y con f(x) = x^2. Per ottenere l’area all’interno delle coordinate (x_1=10, y_1=100), (x_2=12, y_2=144), possiamo ottenere centinaia di rettangoli con una base o distanza tra le x di 0.01. L’altezza di ogni rettangolo sara il valore di y che corrisponde alla x in questione.
Moltiplicheremo ciascuna di queste altezze per una base x di 0.01 per ottenere l’area di ogni mini rettangolo. Infine, sommeremo tutte queste aree individuali tra loro per ottenere l’area totale. Questa operazione si chiama somma Riemanniana, e matematicamente si esprime cosi:
\lim_{\Delta x \to 0} \sum_{i=1}^{n} f(x_i)\Delta x
dove f(x_i) e il valore della funzione nell’i-esimo punto, \Delta x e la larghezza del rettangolo e n e il numero di rettangoli. Programmaticamente, si traduce cosi:
sum(y[1000:1200])*0.01~ 242.4467000000001
Graficamente, il nostro percorso e stato piu o meno cosi:
Shout out a Bernhard Riemann.
Il nostro esperimento e stato un successo e abbiamo ottenuto il miglior risultato finora. Prima di continuare, soffermiamoci un po’ per consolidare le nostre idee, formalizzarle e corroborare che il nostro lavoro sia corretto.
Fino a questo momento, abbiamo detto che l’area di ciascuno dei rettangoli infinitamente sottili che abbiamo suggerito e uguale all’altezza (cioe f(x)) moltiplicata per la base, che in questo caso sarebbe una distanza o differenza infinitamente piccola tra le x, cioe vicina a 0, proprio come con le derivate; ma ora, invece di utilizzare h per esprimere questa idea, utilizzeremo dx perche esprime meglio l’idea di una differenza piccola tra le x.
In tal senso, abbiamo che ogni area dei nostri rettangoli e f(x) \cdot dx. Infine, per integrare o sommare tra loro tutte queste aree piccole e ottenere l’area totale, possiamo utilizzare una lettera «s» allungata: \int. Indicheremo anche che questa somma si realizzerà con le aree di tutti i rettangoli da x_1 fino a x_n o, per non confonderci con tante x, da a fino a b, ottenendo la seguente espressione:
\int_{a}^{b}f(x) \cdot dx
In realta, per poter utilizzare questa formula ci serve il teorema fondamentale del calcolo. Questo teorema, che e troppo macchinoso da comprendere, ci dice che la differenziazione (le derivate) e l’integrazione (gli integrali) sono operazioni inverse, come lo fossero la divisione e la moltiplicazione. Accontentiamoci di questo per ora. E, cosi stando le cose, comprendiamo che possiamo usare l’«antiderivata»1 (l’inversa della derivata) per risolvere un integrale. Cioe, se la derivata e l’integrale sono operazioni inverse, allora semplicemente invertiamo una derivata e questo dovrebbe darci il risultato dell’integrale. Per esempio, se la derivata di x^n rispetto a x e {nx}^{n-1}, allora l’antiderivata o integrale di x^n rispetto a x e \frac{x^{n+1}}{n+1}+C2. Cioe, invece di sottrarre 1 all’esponente, gli sommiamo 1; e invece di moltiplicare per l’esponente, dividiamo per l’esponente. Poi aggiungiamo la costante e voila.
Ora, per utilizzare questa formula, sostituiamo solo i valori dell’intervallo [a, b] che ci interessa (in questo caso, dal punto 10 al 12), sostituiamo f(x) con il valore della funzione e otteniamo l’antiderivata (che denoteremo con F) della funzione in a e b, per infine sottrarre le antiderivate tra loro. (Intendiamoci: l’antiderivata misura l’area sotto la curva della funzione dall’origine (0) fino a x; pertanto, F(b), l’antiderivata di b (cioe di 12), misura l’area sotto la curva della funzione da 0 fino a 12. Ma se ci interessa solo l’area dal punto 10 al punto 12, possiamo sottrarre l’area di F(a) (da 0 a 10) all’area di F(b) (da 0 a 12) e basta).
\int_{a}^{b}f(x)dx = F(b) - F(a)
\int_{a}^{b}f(x)dx = \int_{10}^{12} x^2 dx
F(x^2) = \frac{x^{n+1}}{n+1}+C = \frac{x^{2+1}}{2+1}+C = \frac{x^3}{3}
\int_{a=10}^{b=12}(x^2)dx = \left(\frac{b^{n+1}}{n+1}+C\right) - \left(\frac{a^{n+1}}{n+1}+C\right) = \frac{12^3}{3} - \frac{10^3}{3} = 576-333.33 = 242.67
Curiosamente, la parola «calcolo» viene dal latino calculus, il cui significato e «piccola pietra». Calcolare, nelle epoche antiche, implicava l’uso di pietruzze che venivano contate una dopo l’altra, proprio come quando eravamo piccoli facevamo con l’abaco.
Il calcolo ha a che fare con cambiamenti infinitamente piccoli (da qui il suo nome «calcolo infinitesimale»). Inizialmente, questi «cambiamenti piccoli» si concepirono come trucchi pratici che facilitavano calcoli come quelli che abbiamo fatto, ma non ci fu mai una giustificazione matematicamente rigorosa per procedere cosi, «immaginando» figure infinitamente piccole. Proprio per questo Newton si era rifiutato di pubblicare il suo lavoro sul calcolo e Leibniz aveva affermato che trattare con l’infinitamente piccolo era una semplice finzione mentale che facilitava certi calcoli nella pratica. Da qui anche che idee come una «secante infinitamente piccola che si confonde con un punto» suonino a paradosso.
La mia intenzione in queste lezioni e stata seminare una comprensione elementare, intuitiva e concettuale del calcolo infinitesimale. A mio giudizio, questo tipo di comprensione razionale (fondata sulle cause delle cose), oltre a essere la piu importante, brilla per la sua assenza nella penosa maggioranza di scuole, libri, lezioni e conferenze di matematica.
Complementare queste lezioni con lo studio di certe regole per derivare o integrare e abbastanza semplice, mentre procedere inversamente e incredibilmente difficile. Intuire le ragioni dietro ogni dettaglio in una formula matematica astratta (scritta con simboli greci, corsivi e lettere arcaiche) e, al massimo, possibile dopo anni di addestramento nelle arti oscure e profondita della matematica; tuttavia, nell’insegnare matematica, il sistema educativo e i matematici presumono che qualsiasi giovane studente, senza motivazione alcuna per farlo, sia perfettamente capace di tale prodezza. Considero questo un fallimento clamoroso e il mio lavoro e stato un umile tentativo di rimediarlo in qualche modo.
Durante la redazione dei miei testi su derivate e integrali, oltre ai corsi di Khan Academy, sono stati particolarmente utili i seguenti video di YouTube:
Secondo quanto ricordo, la lezione del Traductor de Ingenieria sulle derivate ha un buon approccio, sebbene tenda a rendere le cose piu complicate di quanto siano. Allo stesso modo, i video di 3Blue1Brown, sebbene buoni a tratti, mi confondono sempre e mi lasciano lacune tra le idee. In ogni caso, entrambi meritano menzione.
Infine, sebbene abbia solo sfogliato alcune pagine, mi sembra che Calculus made easy di Thompson sia un buon libro.
Non e questa un’espressione nostra: realmente si chiama «antiderivata» nel mondo accademico.↩︎
C e una costante, ed e una formalita matematica che dobbiamo aggiungere a ogni antiderivata. C e «invisibile» nella derivata perche la derivata di una costante e 0. Questo deve avere senso per noi dopo aver studiato le derivate: se una funzione non cambia (cioe e costante), allora la sua derivata sara 0 perche la derivata misura il tasso di cambiamento della funzione. Un valore costante, per definizione, non cambia mai.↩︎