|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jun 2006
Messaggi: 3
|
[MATLAB] Rettangolare Adattatiiva
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 |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Jun 2006
Messaggi: 3
|
Aiuto! Questo è un proggetto per un esame...ho solo pochi giorni di tempo....
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:28.



















