Appendice I — Introduzione agli integrali
Questa appendice riprende e adatta il celebre approccio di Calculus Made Easy per superare quella che spesso viene percepita come una barriera iniziale nell’interpretazione delle formule che contengono integrali. Il terrore preliminare che molti provano di fronte ai simboli presenti in queste formule può essere superato comprendendone il significato intuitivo.
I due simboli fondamentali sono in realtà concetti molto semplici:
\(d\): rappresenta un “piccolo incremento” o “un po’ di”. La scrittura \(\operatorname{d}\!x\) indica una quantità infinitesimale di \(x\). I matematici preferiscono il termine “differenziale”, ma l’idea intuitiva di “un pezzettino molto piccolo” è perfettamente corretta.
\(\int\): questo simbolo, una S allungata, significa “somma di”. L’espressione \(\int \operatorname{d}\!x\) rappresenta quindi la somma di tutti i piccoli incrementi di \(x\). Quando si considera \(x\) come composta da innumerevoli piccoli pezzi \(\operatorname{d}\!x\), la loro somma fornisce il valore totale di \(x\). Questo processo di somma continua è ciò che chiamiamo integrazione.
In questo senso, l’integrazione ci permette di ricostruire il “tutto” (l’integrale) a partire dalle sue “parti infinitesimali” (i differenziali).
I.1 Verifica empirica con simulazioni in R
Per illustrare concretamente il concetto di integrazione, consideriamo l’esempio della funzione di densità della distribuzione normale (gaussiana):
\[ f(x; \mu, \sigma) = \frac{1}{\sigma \sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}. \]
I.1.1 Implementazione della funzione
I.1.2 Visualizzazione della funzione
# Parametri
mu <- 0
sigma <- 1
x_valori <- seq(-4, 4, length.out = 1000)
y_valori <- gaussiana(x_valori, mu, sigma)
# Grafico
ggplot(data.frame(x = x_valori, y = y_valori), aes(x, y)) +
geom_line(color = "steelblue", linewidth = 1) +
geom_area(fill = "steelblue", alpha = 0.3) +
labs(
title = "Funzione di Densità Gaussiana Standard",
x = "x",
y = "f(x)"
) +
theme_minimal()I.1.3 Approssimazione dell’integrale mediante somma di rettangoli
L’idea fondamentale dell’integrazione numerica è approssimare l’area sotto la curva come somma di aree di rettangoli sottili. Questo metodo, noto come metodo dei rettangoli, implementa concretamente il concetto di integrale come “somma di piccole parti”.
I.1.3.1 Spiegazione dettagliata dell’algoritmo
La funzione integrale_approssimato implementa il seguente procedimento:
# Funzione per approssimare l'integrale con il metodo dei rettangoli
integrale_approssimato <- function(f, a, b, n = 10000) {
# 1. Calcolo della larghezza di ciascun rettangolo
delta_x <- (b - a) / n
# 2. Creazione dei punti medi di ciascun intervallo
x_punti <- seq(a + delta_x/2, b - delta_x/2, length.out = n)
# 3. Calcolo delle altezze dei rettangoli nei punti medi
# 4. Somma delle aree di tutti i rettangoli
somme <- sum(f(x_punti)) * delta_x
return(somme)
}Suddivisione dell’intervallo. L’intervallo \([a, b]\) viene diviso in \(n\) sottointervalli uguali. La larghezza di ciascun sottointervallo è \(\Delta x = \frac{b-a}{n}\). Più grande è \(n\), più stretti saranno i rettangoli e migliore sarà l’approssimazione.
Selezione dei punti di valutazione. Per ciascun sottointervallo, si sceglie il punto medio come rappresentativo dell’intero intervallo. I punti medi sono calcolati come: \(x_i = a + \frac{\Delta x}{2} + (i-1)\Delta x\), per \(i = 1, 2, \dots, n\). La scelta del punto medio garantisce una migliore approssimazione rispetto all’uso dell’estremo sinistro o destro.
Calcolo delle altezze. Per ciascun punto medio \(x_i\), si valuta la funzione: \(f(x_i)\). Questi valori rappresentano le altezze dei rettangoli.
Calcolo delle aree e somma. L’area di ciascun rettangolo è: \(\text{Area}_i = f(x_i) \cdot \Delta x\). L’area totale approssimata è: \(\text{Area}_{\text{tot}} = \sum_{i=1}^n f(x_i) \cdot \Delta x\).
I.1.3.2 Illustrazione grafica del metodo
# Visualizzazione del metodo dei rettangoli
visualizza_rettangoli <- function(f, a, b, n = 10) {
delta_x <- (b - a) / n
x_punti <- seq(a + delta_x/2, b - delta_x/2, length.out = n)
y_punti <- f(x_punti)
# Creazione dei rettangoli per la visualizzazione
rettangoli <- data.frame(
x_min = x_punti - delta_x/2,
x_max = x_punti + delta_x/2,
y_min = 0,
y_max = y_punti
)
# Punti della funzione per il grafico
x_fine <- seq(a, b, length.out = 1000)
y_fine <- f(x_fine)
ggplot() +
# Area sotto la curva
geom_area(
data = data.frame(x = x_fine, y = y_fine),
aes(x = x, y = y),
fill = "steelblue",
alpha = 0.2
) +
# Rettangoli approssimanti
geom_rect(
data = rettangoli,
aes(xmin = x_min, xmax = x_max, ymin = y_min, ymax = y_max),
fill = "red",
alpha = 0.3,
color = "darkred"
) +
# Linea della funzione
geom_line(
data = data.frame(x = x_fine, y = y_fine),
aes(x = x, y = y),
color = "steelblue",
linewidth = 1
) +
labs(
title = paste("Approssimazione dell'integrale con", n, "rettangoli"),
x = "x",
y = "f(x)"
) +
theme_minimal()
}
# Esempio con pochi rettangoli per visualizzare il metodo
visualizza_rettangoli(gaussiana, -2, 2, n = 10)I.1.3.3 Analisi dell’errore di approssimazione
L’errore commesso dal metodo dei rettangoli diminuisce all’aumentare del numero di suddivisioni \(n\):
# Studio della convergenza al variare di n
studi_convergenza <- function(f, a, b, n_valori = c(10, 50, 100, 500, 1000, 5000, 10000)) {
risultati <- data.frame(
n = n_valori,
approssimato = numeric(length(n_valori)),
errore_relativo = numeric(length(n_valori))
)
# Valore "esatto" (calcolato con n molto grande)
valore_rif <- integrate(f, lower = a, upper = b)$value
for (i in seq_along(n_valori)) {
approx <- integrale_approssimato(f, a, b, n = n_valori[i])
risultati$approssimato[i] <- approx
risultati$errore_relativo[i] <- abs(approx - valore_rif) / valore_rif
}
return(risultati)
}
# Applicazione alla gaussiana tra -1.96 e 1.96
convergenza <- studi_convergenza(gaussiana, -1.96, 1.96)
# Visualizzazione della convergenza
ggplot(convergenza, aes(x = n, y = errore_relativo)) +
geom_point(color = "red", size = 3) +
geom_line(color = "red", alpha = 0.5) +
scale_x_log10() +
scale_y_log10() +
labs(
title = "Convergenza del metodo dei rettangoli",
x = "Numero di rettangoli (scala logaritmica)",
y = "Errore relativo (scala logaritmica)"
) +
theme_minimal()I.1.3.4 Interpretazione matematica
Matematicamente, l’approssimazione converge all’integrale vero quando \(n \to \infty\):
\[ \lim_{n \to \infty} \sum_{i=1}^n f(x_i) \cdot \Delta x = \int_a^b f(x) \, dx, \] dove \(x_i\) sono i punti medi degli intervalli. Questo è precisamente il significato dell’integrale definito secondo Riemann: la somma delle aree di rettangoli infinitamente sottili che approssimano sempre meglio l’area sotto la curva.
I.1.3.5 Vantaggi e limiti del metodo
Il metodo dei rettangoli presenta diversi aspetti positivi. La sua implementazione è semplice e intuitiva, in quanto si basa direttamente sull’idea geometrica di approssimare un’area con la somma di aree rettangolari. La sua chiarezza concettuale lo rende anche facile da visualizzare, facilitando la comprensione del principio di integrazione numerica. Per funzioni sufficientemente regolari, il metodo può garantire un’elevata accuratezza, a condizione che si utilizzi un numero adeguato di suddivisioni.
Tuttavia, il metodo presenta anche notevoli limitazioni. La sua velocità di convergenza è relativamente lenta, dell’ordine di \(O(1/n)\), il che significa che per dimezzare l’errore è necessario raddoppiare il numero di rettangoli. Ciò lo rende poco efficiente per le funzioni dal comportamento irregolare o con punti di discontinuità. Per ottenere un’elevata precisione, è necessario un numero considerevole di valutazioni della funzione, il che comporta un aumento del costo computazionale.
Esistono metodi di integrazione numerica più sofisticati, come quelli implementati nella funzione integrate() di R. La regola di Simpson, per esempio, utilizza parabole anziché di rettangoli per approssimare la funzione, raggiungendo una velocità di convergenza superiore (\(O(1/n^4)\)). Le tecniche di quadratura adattiva modificano dinamicamente la densità dei punti di valutazione in base alle caratteristiche locali della funzione, concentrando il calcolo nelle regioni più problematiche. Per problemi di integrazione multidimensionale, l’integrazione Monte Carlo è spesso un’alternativa efficace.
Questo esempio mostra chiaramente come il concetto astratto di integrale possa essere implementato in modo computazionale, collegando la definizione matematica formale alla sua applicazione pratica nell’analisi numerica.


