Esercizio n.5
description
Transcript of 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].
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
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
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)
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
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;}
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!
Soluzione n.5d
il risultato è I = 0.7127 0.0005 che si ottiene con 58 intervalli di integrazione
10
1
sin dxx
xI