Vous êtes sur la page 1sur 5

TP 4 : Intégration numérique

Exercice 1 :
Soit l’intégrale suivante :
𝜋/2
𝐼=∫ sin(𝑥) cos(𝑥) 𝑑𝑥
0

1- Calculez une estimation de 𝐼 par les trois méthodes de quadrature ; Point milieu, Trapèzes,
Simpson. Utilisez les formules simples.
2- Recalculez ladite intégrale par les méthodes citées avant en utilisant cette fois les versions
composées. Considérez 𝑚 = 3.

%%%%%===============================================================
% Formules de quadrature simples
%%%%%===============================================================
clear
clc
% Donnees initiales
a=0; b=pi/2;
f=@(x) sin(x)*cos(x);

% 2- Calcul
% Point milieu
I1 = (b-a)*f((a+b)/2);

% Trapezes
I2 = (b-a)/2*(f(a)+f(b));

% Simpson
I3 = (b-a)/6*(f(a)+f(b)+4*f((a+b)/2));

% 3- Resultats

fprintf("Valeur par methode du Point Milieu: I1 = %6.4f\n",I1)


fprintf("Valeur par methode des Trapezes: I2 = %6.4f\n",I2)
fprintf("Valeur par methode de Simpson: I3 = %6.4f\n",I3)

1 2022/2023 Pr O. Bourihane
%%%%%===============================================================
% Formules de quadrature composees
%%%%%===============================================================
clear
clc
% Donnees initiales
a=0; b=pi/2;
f=@(x) sin(x)*cos(x);
m = 3; h = (b-a)/m;
% 2- Calcul
% Point milieu
x1 = a + h/2; x2 = a + 3*h/2; x3 = a + 5*h/2;
I1 = h*(f(x1)+f(x2)+f(x3));

% Trapezes
x1 = a; x2 = a + h; x3 = a + 2*h; x4 = b;
I2 = h/2*(f(x1)+2*(f(x2)+f(x3))+f(x4));

% Simpson
x1 = a; x2 = a + h/2; x3 = a + 2*h/2;
x4 = a + 3*h/2; x5 = a + 4*h/2; x6 = a + 5*h/2; x7 = b;
I3 = h/6*(f(x1)+f(x7) + 2*(f(x3)+f(x5)) + 4*(f(x2)+f(x4)+f(x6)));

% 3- Resultats

fprintf("Valeur par methode du Point Milieu: I1 = %6.4f\n",I1)


fprintf("Valeur par methode des Trapezes: I2 = %6.4f\n",I2)
fprintf("Valeur par methode de Simpson: I3 = %6.4f\n",I3)

Exercice 2 :
Considérons l’intégrale de l’exercice 1 :
1- écrire trois programmes de fonctions qui permettent l’approximation d’une intégrale
quelconque par les méthodes ci-dessus, en considérant un nombre variable de sous-
intervalles 𝑚.
2- Comparez les résultats des fonctions avec les résultats de l’exercice 1.
3- En utilisant ces trois fonctions estimez la valeur de l’intégrale 𝐼 pour un nombre 𝑚 ∈ [1 40]
et tracez l’erreur absolue en fonction de 𝑚. Commentez les figures !

%%%%%======================================================================
function I = pMilieu(a,b,m,f)
% Integrale par methode du point milieu
h = (b-a)/m;
% Milieux des intervalles [ak bk]
I = 0;
for i = 1:m
xk = a + h*(i-1/2);
I = I + f(xk);
end
I = h*I;

2 2022/2023 Pr O. Bourihane
%%%%%======================================================================
function I = trapeze(a,b,m,f)
% Integrale par methode des trapezes
h = (b-a)/m;
% Extremites des intervalles [ak bk]
som = 0;
for i=2:m
xk = a + (i-1)*h;
som = som+f(xk);
end
I = h/2 * (f(a)+f(b)+ 2*som);

%%%%%======================================================================
function I = simpson(a,b,m,f)
% Integrale par methode de Simpson
h = (b-a)/m;
% Extremites de l intervalle [a b]
som1 = f(a)+f(b);
% Milieux des intervalles [ak bk]
som2 = 0;
for i = 1:m
xk = a + h*(i-1/2);
som2 = som2+f(xk);
end
% Extremites des intervalles [ak bk]
som3 = 0;
for i=2:m
xk = a + (i-1)*h;
som3 = som3+f(xk);
end
I = h/6 * (som1 + 4*som2 + 2*som3);

%%%%%===============================================================
% Verification des resultats des "functions"
%%%%%===============================================================
clear
clc

% Donnees initiales
a=0; b=pi/2;
f=@(x) sin(x)*cos(x);

% Un seul intervalle
m = 1;
IpMilieu = pMilieu(a,b,m,f);
Itrapeze = trapeze(a,b,m,f);
ISimpson = simpson(a,b,m,f);

fprintf("Valeur par pMilieu avec m=1: IpMilieu = %6.4f\n",IpMilieu)


fprintf("Valeur par trapeze avec m=1: Itrapeze = %6.4f\n",Itrapeze)
fprintf("Valeur par simpson avec m=1: I3 = %6.4f\n",ISimpson)

3 2022/2023 Pr O. Bourihane
% Trois sous-intervalle
m = 3;
IpMilieu = pMilieu(a,b,m,f);
Itrapeze = trapeze(a,b,m,f);
ISimpson = simpson(a,b,m,f);

fprintf("\nValeur par pMilieu avec m=3: IpMilieu = %6.4f\n",IpMilieu)


fprintf("Valeur par trapeze avec m=3: Itrapeze = %6.4f\n",Itrapeze)
fprintf("Valeur par simpson avec m=3: I3 = %6.4f\n",ISimpson)

%%%%%===============================================================
% Erreurs de quadrature
%%%%%===============================================================
clear
clc
close all

% Donnees initiales
a=0; b=pi/2;
f=@(x) sin(x)*cos(x);
IExact = 0.5;

% Boucle sur m
for m = 1:40
IpMilieu(m) = pMilieu(a,b,m,f);
Itrapeze(m) = trapeze(a,b,m,f);
ISimpson(m) = simpson(a,b,m,f);
end

% Traçage
m = 1:40;
figure(1)
subplot(2,2,1)
EpMilieu = abs(0.5-IpMilieu);
semilogy(m,EpMilieu)
xlabel("m"); ylabel("Erreur Point Milieu (m)")

subplot(2,2,2)
Etrapeze = abs(0.5-Itrapeze);
semilogy(m,Etrapeze)
xlabel("m"); ylabel("Erreur Trapezes (m)")

subplot(2,1,2)
ESimpson = abs(0.5-ISimpson);
semilogy(m,ESimpson)
xlabel("m"); ylabel("Erreur Simpson (m)")

4 2022/2023 Pr O. Bourihane
Exercice 3 : Homework
Refaire les exercices 1 et 2 en prenant en considération les résultats de la méthode de Gauss
Legendre.

5 2022/2023 Pr O. Bourihane

Vous aimerez peut-être aussi