• Non ci sono risultati.

Il Matlab contiene le funzioni predefinite quad, quadl e quad8 che cal- colano l’integrale definito di una funzione f all’interno di un fissato intervallo.

N/A
N/A
Protected

Academic year: 2021

Condividi "Il Matlab contiene le funzioni predefinite quad, quadl e quad8 che cal- colano l’integrale definito di una funzione f all’interno di un fissato intervallo."

Copied!
8
0
0

Testo completo

(1)

Francesca Mazzia

Dipartimento Interuniversitario di Matematica Universit` a di Bari

MATLAB: Integrazione

Il Matlab contiene le funzioni predefinite quad, quadl e quad8 che cal- colano l’integrale definito di una funzione f all’interno di un fissato intervallo.

Tali funzioni accettano come dati in input:

f unz stringa contenente il nome del file in cui inserire la funzione integranda

a estremo sinistro dell’intervallo b estremo destro dell’intervallo tol tolleranza dell’errore desiderata.

Il parametro di tolleranza tol ha come valore di default 10 −3 e quindi pu` o essere omesso. Hanno come dato di output:

q integrale della funzione f .

Nel caso la funzione non riescano a calcolare il valore dell’integrale con la precisione desiderata, verr` a posto q = ∞. Vengono richiamate mediante:

q = quad(’funz’, a, b, tol) q = quadl(’funz’, a, b, tol) q = quad8(’funz’, a, b, tol)

ESEMPIO: Risolvere il problema dell’approssimazione di

Z b a

(e x sin(x) + 2x + 6)dx

Per risolvere tale problema possiamo costruire la function fint1.m e

quindi utilizzare le function predefinite quad e quadl e quad8:

(2)

>> type fint1.m function y=fint1(x)

y = exp(sqrt(x)).*sin(x)+2*x+6;

>> I = quad(’fint1’,0,12,1e-5,1) I =

1.8835e+002

>> I = quadl(’fint1’,0,12,1e-5) I =

1.8835e+02

>> I = quad8(’fint1’,0,12,1e-5) I =

1.8835e+002

Possiamo fare un altro esempio:

I = quad(’sin’,0,pi,1e-3) I =

2.0000

>> I = quad8(’sin’,0,pi,1e-3) I =

2.0000e+00

>> I = quadl(’sin’,0,pi,1e-3)

(3)

I =

2.0000e+00

Ora vediamo come implementare la formula dei trapezi:

% FORMULA DEI TRAPEZI PER IL CALCOLO APPROSSIMATO DI INTEGRALI

%

% function I = trapezi(funz,a,b)

%

% DATI DI INPUT:

% funz = stringa contenente il nome della funzione integranda

% (definita in un omonimo file .m)

% a = estremo inferiore dell’intervallo di integrazione

% b = estremo superiore dell’intervallo di integrazione

%

% DATI DI OUTPUT:

% I = approssimazione dell’integrale

%

function I = trapezi(funz,a,b) h = (b-a);

fa = feval(funz,a);

fb = feval(funz,b);

I = (fa + fb) * h/2;

ESEMPI: Valutiamo gli integrali approssimati delle seguenti funzioni:

fint1(x) = exp(sqrt(x)).*sin(x) + 2*x + 6 nell’intervallo [0,12]

fint2(x) = sqrt(1-x.*x) nell’intervallo [-1,1]

sin(x) nell’intervallo [0,pi]

e confrontiamoli con i valori esatti di tali integrali, che sono rispettivamente

188.35, pi/2 e 2.

(4)

>> type fint1.m function y=fint1(x)

y = exp(sqrt(x)).*sin(x)+2*x+6;

>> I1 = trapezi(’fint1’,0,12) I1 =

1.1315e+002

>> type fint2.m function y=fint2(x) y = sqrt(1-x.*x) ;

>> I2 = trapezi(’fint2’,-1,1) I2 =

0

>> I3 = trapezi(’sin’,0,pi) I3 =

1.9237e-16

Implementiamo la formula di Simpson:

% FORMULA DI SIMPSON PER IL CALCOLO APPROSSIMATO DI INTEGRALI

%

% function I = simpson(funz,a,b)

(5)

%

% DATI DI INPUT:

% funz = stringa contenente il nome della funzione integranda

% (definita in un omonimo file .m)

% a = estremo inferiore dell’intervallo di integrazione

% b = estremo superiore dell’intervallo di integrazione

%

% DATI DI OUTPUT:

% I = approssimazione dell’integrale

%

function I = simpson(funz,a,b) h = (b-a)/2;

fa = feval(funz,a);

fb = feval(funz,b);

fc = feval(funz,(a+b)/2);

I = (fa + fb + 4*fc) * h/3;

ESEMPI:

>> I1 = simpson(’fint1’,0,12) I1 =

1.5582e+02

>> I2 = simpson(’fint2’,-1,1) I2 =

1.3333e+00

>> I3 = simpson(’sin’,0,pi)

(6)

I3 =

2.0944e+00

Formule composte.

Le formule precedenti usano un unico polinomio interpolatore su tutto l’intervallo [a, b]. Ci` o presenta talvolta degli inconvenienti dovuti essenzial- mente al fatto che per n grande il polinomio pu` o presentare delle oscillazioni.

Inoltre la formula diventa costosa.

Le formule composte sono ottenute dividendo l’intervallo [a, b] in un certo numero N di sottointervalli uguali, ed applicando in ognuno di questi una formula di quadratura di grado basso. Fissato h = b − a

N , e x i = a + ih, per i = 0, 1, . . . , N , si ha:

Z b a

f (x)dx =

N −1

X

i=0

Z x

i+1

x

i

f (x)dx,

se nel sottointervallo [x i , x i+1 ] si usa la formula dei trapezi, si ha:

Z b a

f (x)dx =

=

N −1

X

i=0

x i+1 − x i

2 (f (x i ) + f (x i+1 )) + E(f ) =

= b − a

2N f (a) + 2

N −1

X

i=1

f (x i ) + f (b)

!

+ E(f ).

Nel caso in cui f 00 (x) sia continua in [a, b], si ottiene:

E(f ) = − (b − a) 3

12N 2 f 00 (ξ), ξ ∈ [a, b].

Vediamo come costruire la function Matlab che implementa la formula dei trapezi composta. Chiameremo tale funzione ctrap.m:

% FORMULA DEI TRAPEZI COMPOSTA PER IL CALCOLO APPROSSIMATO DI INTEGRALI

(7)

%

% function I = ctrap(funz,a,b,n)

%

% DATI DI INPUT:

% funz = stringa contenente il nome della funzione integranda

% (definita in un omonimo file .m)

% a = estremo inferiore dell’intervallo di integrazione

% b = estremo superiore dell’intervallo di integrazione

% n = numero di sottointervalli a cui applicare la formula dei trapezi

%

% DATI DI OUTPUT:

% I = approssimazione dell’integrale

%

function I = ctrap(funz,a,b,n) h = (b-a)/n;

x = a + [0:n]*h;

I = (feval(funz,x(1)) + 2*sum(feval(funz,x(2:n)))...

+ feval(funz,x(n+1))) * h/2;

ESEMPIO:

>> I1c = ctrap(’fint1’,0,12,10) I1c =

191.1843

>> I2c = ctrap(’fint2’,-1,1,10) I2c =

1.5185

>> I3c = ctrap(’sin’,0,pi,10)

(8)

I3c = 1.9835

Aumentando n, il numero di suddivisioni dell’intervallo [a, b], si dovreb- be osservare un miglioramento dell’approssimazione. Verifichiamolo per la funzione fint1:

>> ctrap(’fint1’,0,12,10) ans =

191.1843

>> ctrap(’fint1’,0,12,20) ans =

189.0541

>> ctrap(’fint1’,0,12,30) ans =

188.6645

>> ctrap(’fint1’,0,12,40) ans =

188.5284

Riferimenti

Documenti correlati

che per un certo N , uguale al massimo al numero di righe della matrice di coefficienti di ricorrenza ab, fornisce nodi x e pesi w immagazzinati in una matrice xw che ha quale

Si tratta dell’integrale di una funzione razionale fratta in cui il numeratore ha maggior grado del denominatore.. Eseguiamo anzitutto la divisione di polinomi tra numeratore

Circa il calcolo effettivo dell’integrale (10.5) possiamo dire per ora che, in ogni caso, se ne possono ottenere valori comunque approssimati per mezzo delle somme integrali σ, s,

Essendo una funzione f convessa se e solo se −f `e concava, le propriet`a enunciate valgono anche per le funzioni concave.. In aiuto ci viene

Per integrali impropri si intendono integrali in cui l’intervallo di integrazione sia illimitato (li chia- meremo di primo tipo) o la funzione sia illimitata al massimo in un

D’ora in poi ci limiteremo salvo avviso contrario a considerare funzioni defi- nite su intervalli non ridotti a un punto, o unioni di tali intervalli.. Una volta nota una primitiva

Nello sviluppo della definizione di integrale per una funzione limitata su un intervallo chiuso e limitato, prima abbiamo definito l’integrale di una fun- zione a gradini ϕ ( come

Proposizione: ogni sottospazio di R n si puo’ rappresentare sia come insieme delle soluzioni di un sis- tema lineare omogeneo in n incognite, sia come insieme delle combinazioni