PDA

View Full Version : [MATLAB] Rettangolare Adattatiiva


paolo1_1_1
30-06-2006, 09:18
Ho un problemino con un programma, trattasi appunto della rettangolare adattativa che interpola all'estremo destro dell'intervallo

Il problema stà nel fatto che dovrei costruire una variante che interpoli all'estremo sinistra mentre quella di base interpola all'estremo destra.

Il problema è che non ho capito come faccio a cambiare "lato di interpolazione"!

Questo è il codice:

function [Qf,Errore,ind_errore,n_val_f]=Rettangol are_Adattativa(f_int,a,b,acc_rich,nmax)
Qf=0; Errore=0;ind_errore=0;
f_int_a=feval(f_int,a);
f_int_b=feval(f_int,b);
n_val_f=2;
pila=pila_crea(0);
elem=struct('estr_sin',a,'estr_des',b,'f _estr_sin',f_int_a,'f_estr_des',f_int_b, 'val_appr_integ',(b-a)*(f_int_a));
pila=pila_push(pila,elem);
while ~pila_vuota(pila) & n_val_f<nmax
[pila,elem]=pila_pop(pila);
ak=elem.estr_sin; bk=elem.estr_des;
mk=(ak+bk)/2;
hk2=abs(bk-ak)/2;
f_int_mk=feval(f_int,mk);
n_val_f=n_val_f+1;
f_int_ak=elem.f_estr_sin;
f_int_bk=elem.f_estr_des;
Qfk1=hk2*(f_int_ak+f_int_mk)/2;
Qfk2=hk2*(f_int_mk+f_int_bk)/2;
Qf2k=Qfk1+Qfk2;
Ek=abs(Qf2k-elem.val_appr_integ)/3;
if Ek<=abs(bk-ak)*acc_rich/(b-a);
Qf=Qf+Qf2k;
Errore=Errore+Ek;
else
elem1=struct('estr_sin',ak,'estr_des',mk ,'f_estr_sin',f_int_ak,'f_estr_des',f_in t_mk,'val_appr_integ',Qfk1);
elem2=struct('estr_sin',mk,'estr_des',bk ,'f_estr_sin',f_int_mk,'f_estr_des',f_in t_bk,'val_appr_integ',Qfk2);
pila=pila_push(pila,elem1);
pila=pila_push(pila,elem2);
end
end
if n_val_f >= nmax
ind_errore=-1;
end


Mi basta anche una indicazione su cosa dovrei cambiare o quali stringhe di codice decidono l'interpolazione su di un lato o un'altro...

Grazie Milla

paolo1_1_1
30-06-2006, 16:06
Aiuto! Questo è un proggetto per un esame...ho solo pochi giorni di tempo.... :mc:


:cry: :cry: :cry: