Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ciao a tutti!
ho scritto un programma che deve calcolare il valore dell'integrale definito di una certa funzione scelta dall'utente utilizzando uno dei tre metodi: rettangoli, trapezi e Simpson. c'è però un errore nel calcolo finale e io credo sia dovuto alla cattiva approssimazione. potreste aiutarmi a capire dov'è l'errore?
grazie mille!
vi posto il codice che ho scritto...
Forse è meglio anche fare un esempio di dati da inserire, risultati attesi e risultati ottenuti ... che ne dici?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
L'errore c'è sempre ed è normale, quelli sono metodi per calcolare gli integrali in maniera approssimativa, comunque dovresti curare il codice: nome variabili, parametri di funzioni inutilizzati(l'intero t che passi alla funzione "intervallo"), variabili non controllate(ad esempio nella funzione sceglif posso inserire un valore < 1, come 0 o -42, oppure dopo posso scegliere un numero di nodi < 0 o > 100) e altro ancora
Ultima modifica effettuata da arack95 il 08/04/2012 alle 22:04
avete ragione entrambi... iniziamo col rispondere a nessuno: uso la funzione di Runge (caso3) e il risultato dovrebbe essere all'incirca 2,747 con 2 nodi (per tutti e tre i metodi). a me invece viene 1,3793(rettangoli), 5,1923(trapezi) e 2,6508(Simpson)
altro esempio: funzione caso2. Per un numero di nodi pari a 4 il risultato dovrebbe essere -0.122122 e invece a me viene -0,0000(rettangoli), -0.3569(trapezi) e -0.1118(Simpson)
risposta per arack95: so che il mio codice non è dei migliori, ma purtroppo non mi è stato insegnato molto bene a programmare, ho tante lacune e vorrei colmarle. dimmi altre cose che secondo te non vanno così le sistemo:-)
ho però una domanda: nella funzione intervallo mi dici che il parametro t è inutilizzato, ma se non lo passo come faccio il valore che mi interessa allo switch?
Per le altre cose da modificare: potresti usare le librerie standard del C++ al posto di quelle deprecate del C, potresti rendere più esplicativi i nomi delle variabili e delle funzioni...
Per gli errori, basta che aumenti il numero di nodi e i risultati saranno più precisi, del resto ce lo dice proprio la matematica Ho provato il 2 caso, se metti 100 nodi esce -0.121956 con i rettangoli, -0.122455 con i trapezi e -0.122122 con Simpson (valori approssimati)
Ultima modifica effettuata da arack95 il 11/04/2012 alle 14:14
per quanto riguarda le librerie del C purtroppo non posso toglierle visto che mi è stato imposto di usare proprio quelle, per i nomi delle variabili invece ho cercato di mettere dei nomi che si avvicinassero il più possibile alle formule teoriche studiate, in modo da non fare confuzione...
per quanto riguarda gli errori invece ho visto anche io che effettivamente sono giuste le approssimazioni quindi