Programma per il calcolo approssimato di un integrale

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

Avatar utente
Foto Utentepeppe30
0 2
Messaggi: 3
Iscritto il: 18 mag 2013, 17:52
0
voti

[1] Programma per il calcolo approssimato di un integrale

Messaggioda Foto Utentepeppe30 » 31 lug 2013, 14:26

Ciao a tutti :D , devo svolgere un esercizio utilizzando matlab.
L' esercizio assegnato è
esercizio matlab.pdf
(82.22 KiB) Scaricato 115 volte

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

Torna a “Programmi applicativi: simulatori, CAD ed altro”