Petit problème de récursivité

Fermé
azerty27 Messages postés 6 Date d'inscription mercredi 14 août 2013 Statut Membre Dernière intervention 22 juin 2014 - 22 juin 2014 à 10:31
Bonjour,
j'ai un petit de problème de récursivité (dans la fonction simpsonadapt) avec le programme suivant qui calcule une approximation de l'intégrale de a à b d'une fonction f par la méthode de quadrature adaptative de Simpson.
Merci par avance de votre aide.


% simpsonestim calcule l'estimation grossière res de f par une approche de type Monte-Carlo.
% la valeur de sortie est l'estimation grossière de I(f)

function [res]=simpsonestim(f, a, b)
L=b-a;
m=(a+b)*0.5;
s=0;
for i =1:5
ui=rand(1,1);
xi=a+L*ui ;
fx=feval(f,xi);
s=s+fx;
end
res = (1/8)*L*(f(a)+f(m)+f(b)+fx);
if res ==0 then
res = b-a;
end
return
end

% la fonction simpson calcule l'approximation de f sur l'intervalle [a, b] obtenue par la méthode de Simpson

function [is]=simpson(f, a, b)
L=b-a;
fa=feval(f, a);
fm= feval(f,(a+b)*0.5);
fb=feval(f,b);
is = (L/6)*(fa+4*fm+fb);
return
end

% la fonction simpsonadapt tente d'approcher l'intégrale de la fonction f sur l'intervalle [a, b ] en utilisant une quadrature de Simpson adaptative récursive

function [i1]=simpsonadapt(f, a, b)
m=(a+b)*0.5;
gauche = simpson(f,a,m);
droite = simpson (f,m,b);
tmp = gauche + droite;
i1 = (16*tmp-i2)*(1/15);
i2=tmp ;
if (abs(simpsonestim(f, a,b))+(i1-i2)== abs(simpsonestim(f,a,b))) | (m <= a) | (b<= m) then
return;
else
i1 = simpsonadapt(f,a,m) + simpsonadapt(f,m,b);
return;
end
endfunction