L' esercizio assegnato è
Ho provato a svolgerlo in questo modo, ma non avendo molta esperienza con matlab ho paura di aver commesso diversi errori, vi chiedo quindi un piccolo aiuto
Io ho provato a svolgerlo così :
Codice: Seleziona tutto
%% ***********************************************************************
%% PROGRAMMA simpson_comp_itera
%
% programma per il calcolo della formula dei simpson
% composita su 'N' intervalli per approssimare l'integrale
% di 'f' nell'intervallo [a,b],
% Con ciclo FOR ino ad N_max
% flag == 0 --> precisione non raggiunta ( aumentare n_max numero massimo
% iterazioni consentite)
% == 1 --> precisione raggiunta
% Si esegue confronto con integrale ottenuto da matlab
%% ***********************************************************************
clear
% tolleranze
n_max = 50;
disp('Numero massimo iterazioni consentite: '),disp( n_max)
toll=10^(-6);
disp('Precisione prefissata:'), disp(toll)
% assegnazione dati
ab=input('Inserisci intervallo di integrazione ([a,b]): ');
a=ab(1);
b=ab(2);
% valutazioni negli estremi di integrazione
fa = f(a);
fb = f(b);
% Ampiezza intervallo
h = b-a;
% Approssimazione dell'integrale in un intervallo (N=1)
I(1) = (b-a)*(fa+fb)/6
N=1;
% Variabile di controllo
flag=0;
for iter = 1: n_max
% Raddopio gli intervalli
N=2*N;
% Ampiezza degli intervalli
h= (b-a)/N ; %%% Si dimezza h = h/2;
% Somma valutazioni di f
somma=0;
for i =1:N-1
somma = somma + f(a+i*h);
end
%%% somma=sum(f(a+[1:N-1]));
% Formula simpson composita
I(iter+1) = (b-a)*( fa + 2* somma + 4* somma + fb )/6;
if abs( I(iter+1) - I(iter))< toll * abs(I(iter+1))
flag=1;
disp('Precisione prefissata raggiunta con iterazioni:')
disp(iter)
break
end
end
if flag==0
disp('==========================================================')
disp('ATTENZIONE: PRECISIONE NON RAGGIUNTA')
disp('==========================================================')
end
format long
disp('==========================================================')
disp(' Approssimazioni calcolate')
disp(' Iterazione Integrale approssimato')
disp('==========================================================')
disp([[0:iter]' I' ])
Iesatto = quad('f',a,b);
disp('==========================================================')
disp('Integrale esatto: '); disp(Iesatto)
disp('==========================================================')
format short
Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)