Integrale di Riemann \(\int_{a}^{b}\)

prof. Matteo Lugli

Created: 2024-03-20 mer 22:49

Introduzione

I calcolatori sanno fare soltanto le operazioni che vi hanno insegnato alle elementari: \(+, \times , -, \%\)

Non hanno nemmeno il concetto di continuita', ragionano sempre in termini discreti.

Concetto di Integrale


Non ci concentreremo quindi sulle tecniche di integrazione, che avete visto a matematica.

Vedremo piu' nello specifico il "significato" dell'integrale in calcolo numerico.

Definizione


L'integrale e' l'area sottesa alla curva descritta da una funzione.

Ad esempio:

Bernhard Riemann agli inizi del 600' descrive una tecnica interessante per poter calcolare l'area sottesa di qualsiasi funzione.

Si basa su un'idea semplice che ha portato alle tecniche di integrazione usate oggi, ma che grazie ai calcolatori puo' anche essere applicata direttamente.

Formula (somma inferiore)


Definiamo la somma inferiore di rieman la seguente quantita':

\begin{equation} s(f) = \sum_{k=1}^{n} m_k (x_k - x_{k-1}) \end{equation}

con

\begin{equation} m_k = inf_{x \in [x_{k-1}, x_k]}f(x) \end{equation}

Confronto grafico


Formula:

\begin{equation} s(f) = \sum_{k=1}^{n} m_k (x_k - x_{k-1}) \end{equation}

Idea:

Quindi per risolvere l'integrale \(\int_{a}^{b}\) dx, gli step da seguire sono questi:

Dividere l'intervallo di interesse in \(n\) intervalli, quindi prendendo \(n-1\) punti equidistanziati in \([a,b]\).

Partendo dal secondo punto (\(k=1\)), per ogni punto si calcolano:

l'immagine di \(x_{k}\)

l'immagine di \(x_{k-1}\)

Si applica la formula per ottenere la somma finale.

Passare al limite


In teoria, secondo la formula che avete visto a matematica, bisognerebbe passare al limite perche' il calcolo abbia senso.

E' quindi necessario che gli intervalli diventino estremamente piccoli.

Come fare?

Basta prendere \(n\) grande: piu' grande sara' \(n\), piu' piccoli saranno gli intervalli, e di conseguenza piu' preciso il nostro integrale.

Implementazione


Definiamo i parametri \(a,b,n\)

n = 2000000
a = 2
b = 6
step = (b-a)/n

Prendiamo i punti \({x_k}\) equidistanziati in base all'intervallo scelto:

step = (b-a)/n
x = [a+step*i for i in range(0,n+1)]

Ora possiamo creare gli intervalli usando delle tuple in cui inseriamo l'elemento \(x_{k}\) e il successivo (stessa cosa che il precedente). Inizializziamo la variabile che conterra' il risultato finale a zero.

c = [(x[i], x[i+1]) for i in range(n)]
a = 0

Definiamo la funzione \(f = 3x^2\):

def f(x):
        return 3*pow(x,2)

Traduciamo la sommatoria con un for loop, e stampiamo il risultato finale.

for x1, x2 in c:
        b = x2-x1
        h = max(f(x2),f(x1))
        a += (b*h)
print(a)