Esercizio n.5

8
Esercizio n.5 b a dx x f I ) ( a) Dimostrare che, dato un qualunque > 0, se m’ : | I m’ + 1 I m’ | allora Ciò consente, prefissato un certo > 0, errore massimo assoluto voluto nella approssimazione del calcolo di I, di trovare un n sufficientemente grande da verificare la: 2 1 1 1 n n I I n n 1 2 1 1 : m m I I m m m affinché sia verificata la | I n I | per tutti gli n successivi. Dato e la formula del metodo trapezoidale b x ih a x x f x f a f h I n i n i i n n ; ; ) ( 2 ) ( ) ( 2 1 1 supponendo che f(x) C 2 [a,b].

description

Esercizio n.5. Dato e la formula del metodo trapezoidale. a ) Dimostrare che, dato un qualunque  > 0, se  m’ : | I m’ + 1  I m’ |   allora. supponendo che f ( x )  C 2 [ a , b ]. - PowerPoint PPT Presentation

Transcript of Esercizio n.5

Page 1: Esercizio n.5

Esercizio n.5

b

adxxfI )(

a) Dimostrare che, dato un qualunque > 0, se m’ : | Im’ + 1 Im’ | allora

Ciò consente, prefissato un certo > 0, errore massimo assoluto voluto nella approssimazione del calcolo di I, di trovare un n sufficientemente grande da verificare la:

2

1 11

nnII nn

12

11:

m

mIImm m

affinché sia verificata la | In I | per tutti gli n successivi.

Dato e la formula del metodo trapezoidale

bxihaxxfxfafhI ni

n

iinn

;;)(2)()(2

1

1

supponendo che f(x) C 2 [a,b].

Page 2: Esercizio n.5

Esercizio n.5

b) Si scriva un programma in C per trovare una stima di I col metodo trapezoidale e in modo che l’accuratezza sia determinabile a priori secondo il metodo descritto in a).

c) Si verifichi la bontà del metodo applicandolo al calcolo dell’integrale per vari gradi di precisione e confrontando il risultato

con la soluzione analitica per verificare che l’errore effettivo sia compatibile con la precisione richiesta.

1

0dxeI x

Page 3: Esercizio n.5

Esercizio n.5

d) Si applichi il metodo al calcolo dell’integralecon tre cifre significative.

10

1

sin dxx

xI

-4,E-01

-2,E-01

0,E+00

2,E-01

4,E-01

6,E-01

8,E-01

1,E+00

1 2 3 4 6 7 8 9 10

xxsin

Page 4: Esercizio n.5

Soluzione n.5a

a) Indichiamo con IInn

Dato un > 0, supponiamo che m : mm II 1 allora, essendo,

1111 )( mmmmmmmm IIIIIIII

ma sappiamo che* 2

2

1 )1( n

nnn quindi 2

2

1 )1( m

mmmmm

da cui e dalla (5.1) 122

11

1

mm

mm

mmm

*vero a patto che f(x) C2[a,b] e ricordando che, in questo caso, |RT| < M/n2

1mmsi ha che (5.1)

Dunque abbiamo dimostrato che se mm II 1 allora

12

11

mmIIm

ma quest’ultima disuguaglianza è in realtà valida n > m poiché m è sempre decrescente c.v.d.Nota: la stessa vale anche per il metodo rettangolare, mentre per Simpson va sostituito l’esponente 2 con 4 nella frazione n/(n+1) che va a sua volta sostituita con n/(n+2)

Page 5: Esercizio n.5

Soluzione n.5b

Leggi a, b, deltaPoni n = 2; h = b - a; deltaI = 1Poni trap0 = (funz(b) + funz(a)) * h / 2Esegui loop la prima volta e poi finché deltaI > c1

Poni c1 = delta * (1-n^2/(n+1)^2)Poni h= (b-a)/nPoni trap = 0Esegui loop per i = 1,2,3,...,n-1

poni trap = trap + 2*funz(a + h*i)Fine loopPoni trap = (trap + funz(a) + funz(b))*h/2

Poni deltaI = Ass(trap - trap0) Poni n = n + 1

Poni trap0 = trapFine loopScrivi trap0, n - 1 Fine

Algoritmo

Page 6: Esercizio n.5

Soluzione n.5b/* ESERCIZIO 5 programma per il calcolo numerico dell'integrale di una funzione data analiticamente, tra gli estremi a e b che, usando il metodo trapezoidale, si arresta ad un numero di intervalli tali da dare una stima con errore assoluto inferiore a un delta dato. La funzione e‘ specificata in f *** compilare con l'opzione -lm*/

#include <stdio.h>#include <math.h>

main()

{

/* dichiarazione variabili */

int i,n; double nf; double a,b,h,delta,deltaI,c1; double trap,trap0; double f( double );/*-------------------------*/ printf ("introdurre a, b, delta: "); fflush (stdin); scanf ("%lf,%lf,%lf", &a,&b,&delta); n=2; h=b-a;

trap0=(f(b)+f(a))*h*0.5; do { nf=(double)n; c1=delta*(1-pow(nf/(nf+1),2)); h=(b-a)/nf; trap=0; for (i=1; i < n; i=++i) { trap = trap +f(a+h*(double)i); } trap = h*trap + (f(a)+f(b))*h*0.5; deltaI = fabs (trap - trap0); n=n+1; trap0=trap; } while (deltaI > c1) printf ("integrale = %lf \n",trap); printf ("dopo %d passi. \n", n);}

double f ( double x){ double funz ; funz = exp(x); return funz;}

Page 7: Esercizio n.5

Soluzione n.5c

n I n Errore effettivo0.005 8 1.721203 0.0029212

0.0005 20 1.718678 0.00039620.00005 56 1.718329 0.0000472

0.000005 172 1.718287 0.00000525E-07 538 1.718282 0.0000002

I = 1.718282

Il margine d’errore imposto è sempre compatibile ( maggiore) con quello effettivamente commesso. OK!

Attenzione: le variabili nel programma devono essere in doppia precisione!

Page 8: Esercizio n.5

Soluzione n.5d

il risultato è I = 0.7127 0.0005 che si ottiene con 58 intervalli di integrazione

10

1

sin dxx

xI