Integrazione definita: le somme di Riemann

Lorenzo Roi (luglio 2022)

Nota

Questo notebook di Mathematica riporta la traccia di una lezione introduttiva all'integrale definito proposta ad una classe quinta di liceo scientifico.

Funzioni e codice

istogrammaMed[a_,b_,n_,funzione_]:=Module[{i,amp,sep},
amp=Abs[(b-a)/n];sep=0.006`;Graphics[Table[{Pink,Rectangle[{amp (i-1)+a+sep,0},{amp i+a-sep,funzione[1/2 amp (2 i-1)+a]}]},{i,1,n}]]];
(**)
metodoRettangoliMed[a_,b_,n_,funzione_]:=Module[{i,amp},amp=Abs[(b-a)/n];amp Sum[funzione[a+1/2 amp (2 i-1)],{i,1,n}] ];
(**)
istogrammaEstSx[a_,b_,n_,funzione_]:=Module[{i,amp,sep},amp=Abs[(b-a)/n];sep=0.006`;Graphics[Table[{Orange,Rectangle[{amp (i-1)+a+sep,0},{amp i+a-sep,funzione[amp (i-1)+a]}]},{i,1,n}]]];
(**)
metodoRettangoliEstSx[a_,b_,n_,funzione_]:=Module[{i,amp},amp=Abs[(b-a)/n];amp Sum[funzione[a+amp (i-1)],{i,1,n}]];
(**)
istogrammaEstDx[a_,b_,n_,funzione_]:=Module[{i,amp,sep},amp=Abs[(b-a)/n];sep=0.006`;Graphics[Table[{Brown,Opacity[.6],Rectangle[{amp (i-1)+a+sep,0},{amp i+a-sep,funzione[a+amp i]}]},{i,1,n}]]];
(**)
metodoRettangoliEstDx[a_,b_,n_,funzione_]:=Module[{i,amp},amp=Abs[(b-a)/n];amp Sum[funzione[a+amp i],{i,1,n}]];
(**)
istogrammaRnd[a_,b_,n_,funzione_]:=Module[{i,amp,sep},amp=Abs[(b-a)/n];sep=0.006`;Graphics[Table[{RGBColor[1,0,1],Rectangle[{amp (i-1)+a+sep,0},{amp i+a-sep,funzione[RandomReal[{a+amp (i-1),a+amp i}]]}]},{i,1,n}]]];
(**)
metodoRettangoliRnd[a_,b_,n_,funzione_]:=Module[{i,amp},amp=Abs[(b-a)/n];amp Sum[funzione[RandomReal[{a+amp (i-1),a+amp i}]],{i,1,n}]];
(**)
istogrammaPartRnd[a_,b_,n_,funzione_]:=Module[{i,lista1,lista2,partizione,intervalli,sep},sep=0.006`;lista1=Sort[Table[RandomReal[{a,b}],{i,1,n-1}]];partizione=Append[Prepend[lista1,a],b];lista2=RotateLeft[partizione];intervalli=Delete[lista2-partizione,n+1];Graphics[Table[{RGBColor[0,0.7`,0.5`],Opacity[0.6],Rectangle[{partizione[[i]]+sep,0},{partizione[[i+1]]-sep,funzione[RandomReal[{partizione[[i]],partizione[[i+1]]}]]}]},{i,1,n}]]];
(**)
metodoRettangoliPartRnd[a_,b_,n_,funzione_]:=Module[{i,lista1,lista2,partizione,intervalli},lista1=Sort[Table[RandomReal[{a,b}],{i,1,n-1}]];partizione=Append[Prepend[lista1,a],b];lista2=RotateLeft[partizione];intervalli=Delete[lista2-partizione,n+1];Sum[intervalli[[i]]*funzione[RandomReal[{partizione[[i]],partizione[[i+1]]}]],{i,1,n}] ];
(**)
Options[areaPluriRettangolo]={metodo->med};
areaPluriRettangolo[a_,b_,n_,funzione_,opts___Rule]:=Module[{tipopluriRettangolo=metodo/.{opts}/.Options[areaPluriRettangolo]},Which[tipopluriRettangolo===med,N[metodoRettangoliMed[a,b,n,funzione]],tipopluriRettangolo===sx,N[metodoRettangoliEstSx[a,b,n,funzione]],tipopluriRettangolo===dx,N[metodoRettangoliEstDx[a,b,n,funzione]],tipopluriRettangolo===rnd,N[metodoRettangoliRnd[a,b,n,funzione]],tipopluriRettangolo===partRnd,N[metodoRettangoliPartRnd[a,b,n,funzione]]]];

SetOptions[ListPlot,ImageSize->500];
SetOptions[Plot,ImageSize->500];

f[x_]:=(1/3)(x^2)-2x+5+Sin[3 x];

a=0;b=5;
graficoFunzione=Plot[f[x],{x,a,b},PlotRange->{{a,b},{0,6}}]

Area del trapezoide e dei plurirettangoli

Definita la funzione

f[x_]:=(1/3)(x^2)-2x+5+Sin[3 x];

studiamone il grafico in un intervallo chiuso [a,b], per esempio [0,5].

a=0;b=5;
graficoFunzione=Plot[f[x],{x,a,b},PlotRange->{{a,b},{0,6}}]

Osserviamo che la funzione f(x) risulta in [0,5]sempre positiva. Il nostro scopo è di determinare l'area della regione compresa tra le rette di equazione x=0, x=5, la curva grafico di f , e l'asse delle ascisse, regione ben evidenziata nel grafico sottostante e chiamata trapezoide.
Va subito notato che tale area dipende dalle scelte che abbiamo fatto ossia sostanzialmente dalla funzione f e dagli estremi dell'intervallo [a,b] cioè da 0 e da 5.

trapezoide=Plot[{f[x],0},{x,a,b},Filling->Axis]

Per determinare l'area del trapezoide suddividiamo l'intervallo [a,b] in n intervallini di ampiezza uguale e consideriamo la figura formata dall'unione di tutti i rettangoli aventi per basi gli intervalli di ampiezza ((b-a)/n) ed altezze pari al valore della funzione f calcolata nel punto medio di ciascun intervallino. Figure di tal genere, analoghe ai tradizionali istogrammi, vengono indicate come plurirettangoli associati alla funzione.
Se identifichiamo l'estremo inferiore a con l'estremo inferiore del primo intervallino (cioè (Subscript[x, 0])=a) e l'estremo superiore b di [a,b]con l'estremo superiore dell'n-esimo intervallino ((Subscript[x, n])=b), ne segue che l'indice i potrà assumere i valori tra (1...n) e l'i-esimo intervallino avrà estremi [(Subscript[x, i-1]),(Subscript[x, i])]. In termini dell'ampiezza comune amp=((b-a)/n) risultano le seguenti espressioni:

ascissa degli estremi: (Subscript[x, i])=a+i*amp,         i=1..n

ascissa del punto medio di quest'ultimo risulta (Subscript[x, m,i])=((((Subscript[x, i-1])+(Subscript[x, i])))/2)=a+(amp/2)(2i-1)

Le istruzioni sottostanti costruiscono il plurirettangolo e lo rappresentano assieme al grafico della funzione. Si noti che si è scelta una suddivisione dell'intervallo in 10 intervallini (n=10) e che la funzione viene calcolata in (Subscript[x, m,i]).

pluriRettangoloMed10=istogrammaMed[a,b,10,f];
Show[pluriRettangoloMed10,graficoFunzione,Graphics[Text["n = 10 (valori medi)",{3.9`,5}]],Axes->True,AspectRatio->1/GoldenRatio,ImageSize->400]

L'area di questo plurirettangolo viene calcolata dalla funzione successiva ed è evidentemente data dalla somma delle aree dei singoli rettangoli componenti: è questa la prima somma di Riemann che presentiamo:
fissato n=10, l'area del plurirettangolo corrispondente è

areaPluriRettMed10=metodoRettangoliMed[a,b,10,f]//N

Anziché calcolare le altezze dei singoli rettangoli nel punto medio dell'intervallo si potrebbe scegliere di calcolarle nell'estremo sinistro di ciascuno e cioè in (Subscript[x, i-1])=a+amp*(i-1). È quanto viene fatto dalle funzioni che seguono

pluriRettangoloEstSx10=istogrammaEstSx[a,b,10,f];
Show[pluriRettangoloEstSx10,graficoFunzione,Graphics[Text[Style["n = 10 (est. sx)",Bold,FontSize->12],{4,5}]],Axes->True,AspectRatio->1/GoldenRatio,ImageSize->400]

La funzione che fornisce l'area diviene in tal caso

areaPluriRettEstSx10=metodoRettangoliEstSx[a,b,10,f]//N

Come si può facilmente constatare disponiamo già di due valori approssimati dell'area del trapezoide, entrambi corrispondenti ad una suddivisione in 10 intervallini. Nello stesso modo, e solo con leggere modifiche al codice, costruiamo il plurirettangolo con le altezze calcolate nell'estremo destro (Subscript[x, i])=a+amp*i di ciascun intervallino e

pluriRettangoloEstDx10=istogrammaEstDx[0,5,10,f];
Show[pluriRettangoloEstDx10,graficoFunzione,Graphics[Text[Style["n = 10 (est. dx)",Bold,FontSize->12],{4,5}]],Axes->True,AspectRatio->1/GoldenRatio,ImageSize->400]

calcoliamo poi il valore dell'area del nuovo plurirettangolo

areaPluriRettEstDx10=metodoRettangoliEstDx[a,b,10,f]//N

Diviene ora evidente come sia possibile costruire diversi plurirettangoli in corrispondenza di una medesima suddivisione dell'intervallo originario: per esempio potremmo considerare il minimo (o il massimo) assoluto assunti dalla funzione in ciascun intervallino e identificare questi valori come le altezze dei diversi rettangoli oppure, ed è quanto seguiremo, potremo calcolare le altezze in un punto scelto a caso all'interno di ciascun intervallino.
Difatti di seguito otteniamo sia l'istogramma rappresentativo

pluriRettangoloRnd10=istogrammaRnd[a,b,10,f];
Show[pluriRettangoloRnd10,graficoFunzione,Graphics[Text[Style["n = 10 (valori rnd)",Bold,FontSize->12],{4,5}]],Axes->True,AspectRatio->1/GoldenRatio,ImageSize->400]

sia l'area del plurirettangolo.

areaPluriRettRnd10=metodoRettangoliRnd[a,b,10,f]//N

Con questa scelta risulta chiaro che, fissata una certa suddivisione dell'intervallo [a,b], abbiamo infinite possibilità per costruire un plurirettangolo e di conseguenza, infiniti valori per la sua area. Difatti è sufficiente ricalcolare l'area per ottenere un altro valore generalmente diverso per quest'ultima.

areaPluriRettRnd10=metodoRettangoliRnd[a,b,10,f]//N

Per sottolineare ulteriormente la libertà esistente nel costruire i plurirettangoli intendiamo infine rimuovere pure l'unica restrizione che finora abbiamo sempre rispettato e che consiste nel suddividere l'intervallo [a,b]in intervallini di uguale ampiezza. Procederemo pertanto ad una suddivisione casuale di [a,b]cioè ad una sua partizione in intervallini di ampiezza generalmente diversa. A tal fine, facendo coincidere ancora l'estremo inferiore del primo con a e l'estremo superiore dell'n-esimo con b, è sufficiente scegliere in modo casuale n-1 punti interni di [a,b]. Il codice, un po' più complesso dei precedenti, realizza ciò sfruttando uno dei più importanti strumenti di Mathematica ossia le liste. Al solito, si costruisce dapprima l'istogramma e poi la corrispondente somma di Riemann.

pluriRettangoloPartRnd10=istogrammaPartRnd[a,b,10,f];
Show[pluriRettangoloPartRnd10,graficoFunzione,Graphics[Text[Style["n = 10 (partizione rnd)",Bold,FontSize->12],{3,5}]],Axes->True,AspectRatio->1/GoldenRatio,ImageSize->400]

La corrispondente somma di Riemann fornisce, per n=10

areaPluriRettPartRnd10=metodoRettangoliPartRnd[a,b,10,f]//N

Riassumiamo infine in una tabella i valori finora ottenuti:

TableForm[Transpose[List[{areaPluriRettMed10,areaPluriRettEstSx10,areaPluriRettEstDx10,areaPluriRettRnd10,areaPluriRettPartRnd10}]],TableHeadings->{Style[#,FontFamily->"Helvetica"]&/@{"con valore medio","estr. sx","estr. dx","valore casuale","partizione casuale"},{Style["area plurirettangoli n=10",FontFamily->"Helvetica"]}}]

Come si vede i valori sono tutti diversi (e ci mancherebbe!) pur non essendo, tra loro, sensibilmente diversi. Il metodo finora seguito, e quest'ultima osservazione, suggeriscono naturalmente di aumentare le suddivisioni dell'intervallo [a,b] in modo tale che i plurirettangoli approssimino in modo più fine il trapezoide. Nella prossima sezione intendiamo quindi studiare, al variare del numero n di intervallini, come vari l'area dei plurirettangoli e, particolarmente, il suo andamento quando n->+∞.

Andamento dell'area dei plurirettangoli

Definiamo una funzione più flessibile delle precedenti e con la quale, tramite una semplice opzione (che può assumere i valori med, sx, dx, rnd, partRnd), si possa selezionare una delle cinque tecniche viste sopra per il calcolo dell'area. In mancanza di questa verrà attivato il calcolo nel punto medio degli intervallini.
Per puro controllo ricalcoliamo l'area nei punti medi

areaPluriRettangolo[a,b,10,f,metodo->med]

Come detto, appare naturale aumentare il numero di suddivisioni dell'intervallo originario in modo da migliorare la nostra approssimazione all'area del trapezoide. Un'animazione grafica, per n=1-100, mette bene in evidenza questo fatto geometrico.

Manipulate[Block[{a=0,b=5},Show[istogrammaMed[a,b,n,f],graficoFunzione,Graphics[Text[Style[StringJoin["n = ",ToString[n]],Bold,FontSize->14],{4,5}]],Axes->True,AspectRatio->1/GoldenRatio,ImageSize->500]],{{n,30,Style["n",Bold,FontSize->14]},1,100,1}]

Formiamo quindi una tabella di valori che metta in corrispondenza il numero n di intervallini (a partire da 1 e fino a 50) con le aree dei rispettivi plurirettangoli.

TableForm[Table[{i,areaPluriRettangolo[a,b,i,f,metodo->med]},{i,1,50}],TableHeadings->{None,{Style["num.intervallini  ",Bold],Style["area (med)",Bold]}}]

Come si vede e come aspettato, l'approssimazione all'area del trapezoide, appare migliorare all'aumentare del numero di suddivisioni. Sottolineiamo inoltre che tale tabella può essere interpretata come l'elenco dei primi 50 termini di una successione, successione della quale intendiamo studiare (numericamente) il limite per n->+∞. Per disporre comunque di una visione d'insieme di tali risultati è utile una rappresentazione grafica che ponga in ascissa in numero n e in ordinata la corrispondente area del plurirettangolo.

datiMed=Table[{i,areaPluriRettangolo[a,b,i,f,metodo->med]},{i,1,50}];
medListPlot=ListPlot[datiMed,PlotStyle->{Pink,PointSize[0.015]},AxesLabel->{Style["n",Bold,FontSize->14],None};GridLines->Automatic]

Una seconda animazione permette di associare la situazione geometrica con l'andamento dell'area dei plurirettangoli all'aumentare di n.

Manipulate[GraphicsRow[{Show[istogrammaMed[a,b,n,f],graficoFunzione,Graphics[Text["n = "<>ToString[n],{4,5}]],Axes->True,AspectRatio->1/GoldenRatio,ImageSize->400],ListPlot[Table[{i,areaPluriRettangolo[a,b,i,f,metodo->med]},{i,1,n}],PlotStyle->{Pink,PointSize[0.015]},PlotRange->{{0,50},{9,17}},GridLines->Automatic]}],{{n,25},1,50,1}]

L'andamento riesce del tutto evidente: la successione appare convergere asintoticamente ad un certo valore. Generalizziamo ulteriormente tale approccio costruendo una tabella comprensiva di tutti e cinque i metodi di calcolo presentati nella sezione precedente, sempre per n che varia da 1 a 50.

TableForm[Table[{i,areaPluriRettangolo[a,b,i,f,metodo->med],areaPluriRettangolo[a,b,i,f,metodo->sx],areaPluriRettangolo[a,b,i,f,metodo->dx],areaPluriRettangolo[a,b,i,f,metodo->rnd],areaPluriRettangolo[a,b,i,f,metodo->partRnd]},{i,1,50}],TableHeadings->{None,{"num. intervallini","area (medi)","area (est.sx)","area (est.dx)","area (rnd)","area (part.rnd)"}}]

Ancora, si nota la tendenza alla

convergenza di ciascuna successione e, cosa particolarmente importante,

le differenze tra le aree calcolate con ciascun metodo, tendono a diminuire.

La rappresentazione grafica permette di cogliere tutte queste proprietà in modo sintetico ed immediato,

datiSx=Table[{i,areaPluriRettangolo[a,b,i,f,metodo->sx]},{i,1,50}];
datiDx=Table[{i,areaPluriRettangolo[a,b,i,f,metodo->dx]},{i,1,50}];
datiRnd=Table[{i,areaPluriRettangolo[a,b,i,f,metodo->rnd]},{i,1,50}];
datiPartRnd=Table[{i,areaPluriRettangolo[a,b,i,f,metodo->partRnd]},{i,1,50}];
sxListPlot=ListPlot[datiSx,PlotStyle->{Orange,PointSize[0.015`]},PlotLabel->Style["Estremo sx",Bold,FontSize->14],GridLines->Automatic];
dxListPlot=ListPlot[datiDx,PlotStyle->{Brown,PointSize[0.015`]},PlotLabel->Style["Estremo dx",Bold,FontSize->14],GridLines->Automatic];
rndListPlot=ListPlot[datiRnd,PlotStyle->{RGBColor[1,0,1],PointSize[0.015`]},PlotLabel->Style["Valore casuale",Bold,FontSize->14],GridLines->Automatic];
partRndListPlot=ListPlot[datiPartRnd,PlotStyle->{RGBColor[0,0.7`,0.5`],PointSize[0.015`]},PlotLabel->Style["Partizione casuale",Bold,FontSize->14],GridLines->Automatic];
GraphicsGrid[{{sxListPlot,dxListPlot},{rndListPlot,partRndListPlot}},ImageSize->700]

in particolare, quando tutti gli andamenti vengono riportati sul medesimo piano.

Show[{medListPlot,sxListPlot,dxListPlot,rndListPlot,partRndListPlot},ImageSize->500,PlotRange->{{0,50},Automatic},GridLines->Automatic]

Riportiamo ancora in un'animazione sia i plurirettangoli che il grafico dell'andamento della successione delle somme di Riemann nei rimanenti quattro casi.

Manipulate[GraphicsRow[{Show[istogrammaEstSx[a,b,n,f],graficoFunzione,Graphics[Text["n = "<>ToString[n],{4,5}]],Axes->True,AspectRatio->1/GoldenRatio,ImageSize->400],ListPlot[Table[{i,areaPluriRettangolo[a,b,i,f,metodo->sx]},{i,1,n}],PlotStyle->{Orange,PointSize[0.015`]},PlotRange->{{0,100},{13,16}},GridLines->Automatic]}],{{n,50},1,100,1}]

Manipulate[GraphicsRow[{Show[istogrammaEstDx[a,b,n,f],graficoFunzione,Graphics[Text["n = "<>ToString[n],{4,5}]],Axes->True,AspectRatio->1/GoldenRatio,ImageSize->400],ListPlot[Table[{i,areaPluriRettangolo[a,b,i,f,metodo->dx]},{i,1,n}],PlotStyle->{Brown,PointSize[0.015]},PlotRange->{{0,100},{11,16}},GridLines->Automatic]}],{{n,50},1,100,1}]

Manipulate[GraphicsRow[{Show[istogrammaRnd[a,b,n,f],graficoFunzione,Graphics[Text["n = "<>ToString[n],{4,5}]],Axes->True,AspectRatio->1/GoldenRatio,ImageSize->400],ListPlot[Table[{i,areaPluriRettangolo[a,b,i,f,metodo->rnd]},{i,1,n}],PlotStyle->{RGBColor[1,0,1],PointSize[0.015`]},PlotRange->{{0,100},{9,17}},GridLines->Automatic]}],{{n,50},1,100,1}]

Manipulate[GraphicsRow[{Show[istogrammaPartRnd[a,b,n,f],graficoFunzione,Graphics[Text["n = "<>ToString[n],{4,5}]],Axes->True,AspectRatio->1/GoldenRatio,ImageSize->400],ListPlot[Table[{i,areaPluriRettangolo[a,b,i,f,metodo->partRnd]},{i,1,n}],PlotStyle->{RGBColor[0,0.7`,0.5`],PointSize[0.015`]},PlotRange->{{0,100},{9,17}},GridLines->Automatic]}],{{n,50},1,100,1}]

Infine studiamo il limite di tali somme quando n assume valori ancora maggiori (tra 100 e 2500 con incrementi di 100).

TableForm[Table[{i,areaPluriRettangolo[a,b,i,f,metodo->med],areaPluriRettangolo[a,b,i,f,metodo->sx],areaPluriRettangolo[a,b,i,f,metodo->dx],areaPluriRettangolo[a,b,i,f,metodo->rnd],areaPluriRettangolo[a,b,i,f,metodo->partRnd]},{i,100,2500,100}],TableHeadings->{None,{"num. intervallini","area (medi)","area (est.sx)","area (est.dx)","area (rnd)","area (part.rnd)"}}]

Quanto osservato circa la convergenza di ciascuna successione appare confermato così come la diminuzione delle differenze esistenti tra una successione e l'altra. Graficamente tutto ciò appare evidente se si osserva la diversa scala dell'asse delle ordinate del grafico seguente.

datiMed=Table[{i,areaPluriRettangolo[a,b,i,f,metodo->med]},{i,100,2500,100}];datiSx=Table[{i,areaPluriRettangolo[a,b,i,f,metodo->sx]},{i,100,2500,100}];
datiDx=Table[{i,areaPluriRettangolo[a,b,i,f,metodo->dx]},{i,100,2500,100}];
datiRnd=Table[{i,areaPluriRettangolo[a,b,i,f,metodo->rnd]},{i,100,2500,100}];
datiPartRnd=Table[{i,areaPluriRettangolo[a,b,i,f,metodo->partRnd]},{i,100,2500,100}];
Show[ListPlot[{datiMed,datiSx,datiDx,datiRnd,datiPartRnd},PlotStyle->{{PointSize[0.012],Pink},{PointSize[0.012],Orange},{PointSize[0.012],Brown},{PointSize[0.012],RGBColor[1,0,1]},{PointSize[0.012],RGBColor[0,0.7,0.5]}}],GridLines->Automatic,ImageSize->500]

Definizione di integrale definito

In definitiva possiamo proporre una stima dell'area del trapezoide: essa, a meno di 1×(10^(-3))(pari alla semidispersione dei risultati relativi a n=2500), risulta essere

(Subscript[A, stima])=14.475

Ben più importante appare invece la definizione che emerge per l'area A del trapezoide: detta (Subscript[A, n]) l'area del plurirettangolo corrispondente ad una suddivisione dell'intervallo iniziale in n intervallini e termine generale della successione delle somme di Riemann,  l'area del trapezoide sarà data dal limite della successione (Subscript[A, n]) al tendere di n->+∞ ossia

A=(lim_(n->+∞))(Subscript[A, n])

qualsiasi sia il modo in cui il plurirettangolo venga costruito. Come affermato inizialmente basandoci sull'intuizione geometrica, è ora immediato verificare la dipendenza dell'area del trapezoide dagli estremi a e/o b. Difatti, già a livello grafico appare evidente come l'area del trapezoide debba dipendere dall'estremo inferiore (la figura seguente evidenzia ora il trapezoide compreso nell'intervallo [1,5])

Show[Plot[{f[x],0},{x,1,5},Filling->Axis],Plot[{f[x],0},{x,0,1}],PlotRange->{{0,5},Automatic},AxesOrigin->{0,0}]

così come dall'estremo superiore (nella figura successiva appare il trapezoide compreso in [0,4])

Show[Plot[{f[x],0},{x,0,4},Filling->Axis],Plot[{f[x],0},{x,4,5}],Graphics[{Blue,Line[{{5,0},{5,f[5]}}]}],PlotRange->{{0,5},Automatic},AxesOrigin->{0,0}]

Passando al calcolo esplicito e supponendo una partizione di questi intervalli in 2500 intervallini, con la tecnica dei valori medi si ottengono rispettivamente i risultati

aa=1;bb=5;areaPluriRettangolo[aa,bb,2500,f,metodo->med]

aa=0;bb=4;areaPluriRettangolo[aa,bb,2500,f,metodo->med]

ben diversi dal valore finora ottenuto con gli estremi scelti all'inizio. Quindi  l'area del trapezoide dipende dai valori degli estremi a, b, oltreché dalla funzione f. Pertanto, volendo generalizzare e a prescindere dal significato geometrico di area del trapezoide finora discusso, va considerato che tale limite è

funzione di a,

funzione di b

e dipende dalla particolare funzione scelta f.

Verrà pertanto indicato con il simbolo

(lim_(n->+∞))(Subscript[A, n])=(∫_a^b)f(x)dx

che intende mettere in evidenza tutto ciò. Esso si legge: integrale definito della funzione f(x) esteso all'intervallo [a,b].
Come curiosità, il metodo di calcolo che ha origine da tale definizione, fornisce per l'area del trapezoide discusso finora

areaTrapezoide=(∫_0^5)f[x]\[DifferentialD]x//N[#,20]&

valore peraltro ben evidenziato dall'andamento delle somme ottenute con i valori medi (punti rossi nell'ultimo grafico), somme che mostrano una sostanziale convergenza già a partire da n=200.