Trapezio VS Simpson
Devo creare un metodo per calcolare l'approssimazione di integrali definiti usando il metodo del trapezio.
Il metodo prende in input la funzione, e due punti, all'interno dei quali e' continua. Restituisce un numero, ovvero l'approssimazione dell'integrale.
Il requisito piu' importante e' avere almeno 5 cifre esatte dopo la virgola.
Non so quanto saranno distanti gli estremi a e b dell'intervallo interessato.
Il primo, e per ora unico, metodo che mi viene in mente e' quello di partire con n = 1 partizioni, quindi rieseguire il programma con 2 partizioni, quindi con 4, 8, 16... etc, tenendo sempre l'ultimo risultato e confrontando di volta in volta le prime 5 cifre dopo la virgola. Quando tali cifre saranno uguali, sono certo che tale approssimazione sia corretta?
E ancora: esistono metodi migliori di questo per calcolare l'approssimazione con le prime 5 cifre corrette (sempre usando la regola del trapezio)??
--------------
Il metodo di Cavalieri-Simpson, invece, riesce a giungere prima (con meno iterazioni) ad un risultato? E' piu efficiente? Perche'?
Grazie in anticipo per l'attenzione
Il metodo prende in input la funzione, e due punti, all'interno dei quali e' continua. Restituisce un numero, ovvero l'approssimazione dell'integrale.
Il requisito piu' importante e' avere almeno 5 cifre esatte dopo la virgola.
Non so quanto saranno distanti gli estremi a e b dell'intervallo interessato.
Il primo, e per ora unico, metodo che mi viene in mente e' quello di partire con n = 1 partizioni, quindi rieseguire il programma con 2 partizioni, quindi con 4, 8, 16... etc, tenendo sempre l'ultimo risultato e confrontando di volta in volta le prime 5 cifre dopo la virgola. Quando tali cifre saranno uguali, sono certo che tale approssimazione sia corretta?
E ancora: esistono metodi migliori di questo per calcolare l'approssimazione con le prime 5 cifre corrette (sempre usando la regola del trapezio)??
--------------
Il metodo di Cavalieri-Simpson, invece, riesce a giungere prima (con meno iterazioni) ad un risultato? E' piu efficiente? Perche'?
Grazie in anticipo per l'attenzione
Risposte
potresti provare con una formula adattiva(quella usata di solito dalle calcolatrici per ottenere gli integrali, insieme a delle tecniche a posteriori.)
L'idea è più o meno crearti un'approssimazione $I_n$ t.c $| \int - I_n| < \epsilon|$ e come maggiorante dai le tue cifre necessarie.
Spero ti aiuti altrimenti sarò più esplicativo.
L'idea è più o meno crearti un'approssimazione $I_n$ t.c $| \int - I_n| < \epsilon|$ e come maggiorante dai le tue cifre necessarie.
Spero ti aiuti altrimenti sarò più esplicativo.
Ho creato il metodo, funziona in modo soddisfacente, sebbene esegua una quantita' mostruosa di iterazioni.
Questo e' l'output del metodo per calcolare l'integrale di $f = x^2$ nell'intervallo $[-1,1]$
con 4 trapezi, l'integrale e': 0.75
con 8 trapezi, l'integrale e': 0.6875
con 16 trapezi, l'integrale e': 0.671875
con 32 trapezi, l'integrale e': 0.66796875
con 64 trapezi, l'integrale e': 0.6669921875
con 128 trapezi, l'integrale e': 0.666748046875
con 256 trapezi, l'integrale e': 0.666687011719
con 512 trapezi, l'integrale e': 0.66667175293
con 1024 trapezi, l'integrale e': 0.666667938232
con 2048 trapezi, l'integrale e': 0.666666984558
---Una buona approssimazione dell'integrale e': 0.666666984558
--- ah una piccola nota riguardo la precisione:
il metodo continua a iterare raddoppiando il numero $n$ di trapezi, finche':
abs{ abs{vecchio valore} - abs{nuovo valore}} < 0.000001
(non ho trovato il comando per il valore assoluto)
ho dei dubbi riguardo il valore 0.000001... in alcuni casi il metodo ha continuato anche se la quinta cifra decimale era uguale a quella del risultato precedente.
----
@ luca: devo usare obbligatoriamente il metodo dei trapezi. Se hai qualche link che parla del metodo che hai accennato, saro' felice di dare un'occhiata.
Questo e' l'output del metodo per calcolare l'integrale di $f = x^2$ nell'intervallo $[-1,1]$
con 4 trapezi, l'integrale e': 0.75
con 8 trapezi, l'integrale e': 0.6875
con 16 trapezi, l'integrale e': 0.671875
con 32 trapezi, l'integrale e': 0.66796875
con 64 trapezi, l'integrale e': 0.6669921875
con 128 trapezi, l'integrale e': 0.666748046875
con 256 trapezi, l'integrale e': 0.666687011719
con 512 trapezi, l'integrale e': 0.66667175293
con 1024 trapezi, l'integrale e': 0.666667938232
con 2048 trapezi, l'integrale e': 0.666666984558
---Una buona approssimazione dell'integrale e': 0.666666984558
--- ah una piccola nota riguardo la precisione:
il metodo continua a iterare raddoppiando il numero $n$ di trapezi, finche':
abs{ abs{vecchio valore} - abs{nuovo valore}} < 0.000001
(non ho trovato il comando per il valore assoluto)
ho dei dubbi riguardo il valore 0.000001... in alcuni casi il metodo ha continuato anche se la quinta cifra decimale era uguale a quella del risultato precedente.
----
@ luca: devo usare obbligatoriamente il metodo dei trapezi. Se hai qualche link che parla del metodo che hai accennato, saro' felice di dare un'occhiata.
se ti interessa, ho le formule dell'errore riportate senza dimostrazione sulle mie vecchie dispense, credo che la pagina sia tratta dal Fontanella-Pasquali:
se $n$ è il numero di suddivisioni dell'intervallo [a,b] ed $h_n$ è il passo ($h_n=(b-a)/n$, intervallino in cui applichiamo una volta l'intera formula dei trapezi o di Simpson), gli errori rispettivi si possono scrivere così:
$E_T^((n))[f]=I[f]-I_T^((n))[f]=-(b-a)/12*h_n^2*f^((2))(xi), a
$E_S^((n))[f]=I[f]-I_S^((n))[f]=-(b-a)/180*h_n^4*f^((4))(xi), a
forse sono cose che sapevi già, e magari la tua richiesta era un'altra. se è così, mi dispiace, ma forse non ti posso essere utile.
ciao.
se $n$ è il numero di suddivisioni dell'intervallo [a,b] ed $h_n$ è il passo ($h_n=(b-a)/n$, intervallino in cui applichiamo una volta l'intera formula dei trapezi o di Simpson), gli errori rispettivi si possono scrivere così:
$E_T^((n))[f]=I[f]-I_T^((n))[f]=-(b-a)/12*h_n^2*f^((2))(xi), a
$E_S^((n))[f]=I[f]-I_S^((n))[f]=-(b-a)/180*h_n^4*f^((4))(xi), a
forse sono cose che sapevi già, e magari la tua richiesta era un'altra. se è così, mi dispiace, ma forse non ti posso essere utile.
ciao.
"Luc@s":
http://www.diegobovenzi.it/argomenti/informatica/analisinumerica/matlib/CAP17.pdf direi che potrebbe aiutarti
Interessante questo metodo.
In pratica continua a iterare la fomula di Simpson solo la dove c'e bisogno, ignorando i tratti dove ulteriori suddivisioni degli intervalli portano solo differenze trascurabili. Non mi e' stato chiesto nulla di cosi' complesso, ma sono felice di averlo letto.
"adaBTTLS":
se ti interessa, ho le formule dell'errore riportate senza dimostrazione sulle mie vecchie dispense, credo che la pagina sia tratta dal Fontanella-Pasquali:
se $n$ è il numero di suddivisioni dell'intervallo [a,b] ed $h_n$ è il passo ($h_n=(b-a)/n$, intervallino in cui applichiamo una volta l'intera formula dei trapezi o di Simpson), gli errori rispettivi si possono scrivere così:
$E_T^((n))[f]=I[f]-I_T^((n))[f]=-(b-a)/12*h_n^2*f^((2))(xi), a
$E_S^((n))[f]=I[f]-I_S^((n))[f]=-(b-a)/180*h_n^4*f^((4))(xi), a
forse sono cose che sapevi già, e magari la tua richiesta era un'altra. se è così, mi dispiace, ma forse non ti posso essere utile.
ciao.
Ihihih avevo gia visto queste formule e non devo fare misurazioni di errore, per ora.
Ti ringrazio comunque per l'attenzione, ciao!!
---------------------------
A quanto ho capito, per avere una precisione di tot cifre, si usa un po' dappertutto il sistema di re-iterare l'algoritmo per un numero sempre piu grande di sub-intervalli. Questa era la domanda fondamentale del mio thread, che credo abbia trovato risposta.
L'altra era riguardo un confronto dei metodi del trapezio e di Simpson.
Ho visto dei risultati dei due metodi e quello di Simpson trova (molto) prima un'approssimazione accettabile per la maggior parte delle funzioni.
Pero' mi verrebbe da pensare che ad esempio con una funzione lineare, invece, il metodo del trapezio trova immediatamente l'area esatta (essendo il grafico una retta), mentre quello di Simpson no, perche' costruisce un arco, e chiaramente e' suscettibile ad errore.
prego.
ricordo che Trapezi è esatta, come dici anche tu, per funzioni di primo grado, mentre Simpson è esatta anche per funzioni di secondo grado.
ciao.
ricordo che Trapezi è esatta, come dici anche tu, per funzioni di primo grado, mentre Simpson è esatta anche per funzioni di secondo grado.
ciao.