|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Dec 2006
Messaggi: 1
|
MATLAB....AIUTO VI PREGO!!!
RAgazzi devo fare un'algoritmo di quadratura adattativa con formula rettangolare utilizzando la ricorsione.
Io ho scritto questo: function [Qf,... E,n_val_f]=Adattativa_Rettangolare(f,ak,bk,a,b,tol,max_val h = bk - ak; Qfk = h * feval(f, ak); mk = (bk + ak) / 2; Qf1k = h/2 * feval(f, ak); Qf2k = h/2 * feval(f, mk); Q2f = Qf1k + Qf2k; Ek = abs(Q2f - Qfk)/3; n_val_f =n_val_f + 3; if Ek <= tol | n_val_f > max_val Qf =+ Q2f; E =+ Ek; else [Qf, E,n_val_f]=Adattativa_Rettangolare(f,ak,mk,a,b,tol/2,max_val); [Qf, E,n_val_f]=Adattativa_Rettangolare(f,mk,bk,a,b,tol/2,max_val); end ************ Dove h è l'ampiezza dell'intervallo corrente Qf1k la quadratura del sottointervallo di sinistra Qf2k la quadratura del sottointervallo di destra Q2f la somma delle quadrature dei sottointervalli Ek l'errore di approssimazione a livello dell'intervallo corrente n_val_f tiene conto delle valutazio feval fatte su f if verifica se Ek si minore della tolleranza richiesta su quell'intervallo e se il numero di valutazioni su f è maggiore di quello consentito Praticamente ogni volta che ricorre, però, non aggiorna le variabili di output sommandoci sopra i dati di tutti i sottointervalli accettati... se togliete i punti e virgola nel richiamo della funzione all'interno dell'else si capisce meglio l'errore che nn so risolvere HELPPPPPPPPPPPPPPPP |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Aug 2005
Messaggi: 2755
|
Quote:
Qf =Q2f; E =Ek;
__________________
|
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Apr 2005
Città: Napoli
Messaggi: 6817
|
Quote:
P.S. il nick dell'autore del thread è tutto un programma... ![]()
__________________
0 A.D. React OS La vita è troppo bella per rovinarsela per i piccoli problemi quotidiani... IL MIO PROFILO SOUNDCLOUD! ![]() ![]() ![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:48.