Uni.AN-Matlab-Trapezi History
Show minor edits - Show changes to output
Changed line 53 from:
effe1 = fcnchk('-cos(x)');
to:
effe1 = fcnchk('cos(x)');
Changed line 53 from:
effe1 = fcnchk('cos(x)');
to:
effe1 = fcnchk('-cos(x)');
Added lines 1-62:
(:title Matlab - Formula dei trapezi composita:) [[Torna alla pagina di Analisi Numerica->Analisi numerica]] ----
%titolo%''':: Matlab - Formula dei trapezi composita ::'''
[@% Formula dei trapezi composita % ----------------------------- % considero l'intervallo [a,b] % ed m sottointervalli di ampiezza h
% assumiamo che la funzione integranda sia la effe % e che in questo esercizio sia: effe = sin(x) % utilizzo il comando fcnchk così da trattare effe come una funzione % a tutti gli effetti effe = fcnchk('sin(x)'); % consideriamo l'intervallo [a,b] = [0,pi] a = 0; b = pi;
% l'integrale esatto di effe nell'intervallo definito vale 2 intEs = 2;
% chiedo ora di inserire il valore da attribuire ad m % (vale la pena poi ripetere l'esecuzione dell'esercizio % per diversi valori, come: 4,8,16,32 o 10,100,1000 m = input('m='); % ora ho tutte le informazioni necessarie per calcolarmi h h = (b-a)/m;
% utilizzo la funzione linspace per generare un vettore x % con 'm+1' elementi compresi tra 'a' e 'b' x = linspace(a,b,m+1); % calcolo la funzione nei punti appena individuati y = effe(x);
% adesso applichiamo la formula dei trapezi composita % per vedere quanto buona risulta l'approssimazione % A B C % ---- ------ -------------- z = (y(1) + y(m+1) + 2*sum(y(2:m))) * h/2; % spieghiamo a cosa corrispondono le varie parti: % A = f(a) % B = f(b) % C = 2 * sommatoria (per le i che vanno da 2 ad m) di f(a_i)
% confronto ora la soluzione esatta con quella approssimata % trovo prima l'errore esatto err = abs(intEs - z);
% poi la stima dell'errore usando la formula asintotica % per il calcolo dell'errore dei trapezi compositi % devo trovare prima la derivata di effe effe1 = fcnchk('cos(x)'); % quindi applico la formula asintotica stima = abs(h*h / 12*(effe1(a)-effe1(b)));
% printo tutti i risultati fprintf('m=%3d\t z=%8.5f \t err=%12.6e \t stima=%12.6e \n',m,z,err,stima); @]
---- [[Torna alla pagina di Analisi Numerica->Analisi numerica]]
|