PDA

View Full Version : MATLAB....AIUTO VI PREGO!!!


ilBacone
05-12-2006, 15:54
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

wisher
05-12-2006, 19:29
Qf =+ Q2f;
E =+ Ek;

con queste linee non sommi ma sono equivalenti
Qf =Q2f;
E =Ek;

bjt2
06-12-2006, 09:45
con queste linee non sommi ma sono equivalenti
Qf =Q2f;
E =Ek;

Concordo. Gli operatori C-Like non sono supportati.

P.S. il nick dell'autore del thread è tutto un programma... :stordita: