TRAVAUX PRATIQUE 1 :
Soit le vecteur Temp contenant les valeurs de températures considérées pour
mesurer les conductivités correspondantes :
Temp= [32 115 212 363] ;
Les conductivités mesurées sont stockées dans le vecteur conduct :
Conduct= [0.0057 0.0074 0.0099 0.0147] ;
I. Écriture d’un programme d’interpolation de Lagrange pour estimer la conductivité
thermique entre 32°C et 363°C avec représentation graphique :
Temp=[32 115 212 363];
Conduct=[0.0057 0.0074 0.0099 0.0147];
n=length(Temp);
T=linspace(32,363,50); M=length(T);
for i=1:M
S=0;
for k=1:4
prod=1;
for j=1:4
if j~=k
prod=prod * (T(i)-Temp(j)) / (Temp(k)-Temp(j));
end
end
S=S+Conduct(k) * prod;
end
P(i)=S;
end
disp(P)
plot(T,P,'r')
0
II. La conductivité qui correspond à une température égal 80 :
Temp = [32 115 212 363];
Conduct = [0.0057 0.0074 0.0099 0.0147];
n = length(Temp);
T_val = 80;
S_val = 0;
for k = 1:n
prod = 1;
for j = 1:n
if j ~= k
prod = prod * (T_val - Temp(j)) / (Temp(k) - Temp(j));
end
end
S_val = S_val + Conduct(k) * prod;
end
disp(S_val)
III. les coefficients du polynôme d’interpolation en utilisant la fonction de Matlab
polyfit avec représentation graphique :
Temp = [32 115 212 363];
Conduct = [0.0057 0.0074 0.0099 0.0147];
P = polyfit(Temp, Conduct, 3);
T = linspace(32, 363, 200);
val= polyval(P , T);
1
figure;
plot(T, val , 'r-', 'LineWidth', 2);
hold on;
plot(Temp, Conduct, 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b');
xlabel('Température (°C)');
ylabel('Conductivité');
title('Interpolation polynomiale (polyfit) ');
legend('Polynôme interpolé', 'Points expérimentaux');
grid on;
disp('Coefficients du polynôme d''interpolation :');
disp(P)
TRAVAUX PRATIQUE 2 :
Soit la fonction 𝑓(𝑥) à intégrer numériquement sur l’intervalle [a b] par différentes
méthodes :
𝑎 = 0, 𝑏 = 𝜋 , 𝑓(𝑥) = sin(2𝑘𝜋𝑥) , 𝑘 = 10,
L’intégration analytique de la fonction 𝑓(𝑥) donne :
𝑏
−1
∫ 𝑓(𝑥)𝑑𝑥 =
𝑎 2𝑘𝜋
2
I. Détermination de 𝐿ℎ(𝑓) par :
a. La méthode de trapèze : 𝑀 = 2; 𝑡1 = −1, 𝑡2 = 1
a=0; b=pi; N=3;
t=[-1 1]; w=[1 1]; M=length(t); f=@(x)sin(x);
for i=1:N+1 h=(b-a)/N;
x(i)=a+(i-1)*h;
end
for i=1:N
for j=1:M
y(i,j)=x(i)+h*(t(j)+1)/2;
end
end
lh1=0;
for i=1:N
for j=1:M
lh1=lh1+w(j)*f(y(i,j));
end
end
lh=(h/2)*lh1;
disp(lh)
Vérification le résultat en utilisant la fonction de MTLAB trapz
x=0:pi/3:pi;
y=sin(x);
trapz(x,y)
b. La méthode de simpson : 𝑀 = 3 ; 𝑡1 = −1, 𝑡2 = 1, 𝑡3 = 1
a=0;b=pi;N=3;
t=[-1 0 1]; w=[1/3 4/3 1/3]; M=length(t) ;f=@(x)sin(x);
for i=1:N+1 h=(b-a)/N;
x(i)=a+(i-1)*h;
end
for i=1:N
for j=1:M
y(i,j)=x(i)+h*(t(j)+1)/2;
3
end
end
lh1=0;
for i=1:N
for j=1:M
lh1=lh1+w(j)*f(y(i,j));
end
end
lh=(h/2)*lh1;
disp(lh)
Vérification le résultat en utilisant la fonction de MTLAB quad
y = @(x)sin(x);
approche = quad(y, 0, pi);
disp(approche)
−𝟏 𝟏
c. La méthode de Gauss 2pts : 𝑡1 = , 𝑡2 =
√𝟑 √𝟑
a=0;b=pi;N=3;
t=[-1/sqrt(3) 1/sqrt(3)]; w=[1 1]; M=length(t) ;f=@(x)sin(x);
for i=1:N+1 h=(b-a)/N;
x(i)=a+(i-1)*h;
end
for i=1:N
for j=1:M
y(i,j)=x(i)+h*(t(j)+1)/2;
end
end
lh1=0;
for i=1:N
for j=1:M
lh1=lh1+w(j)*f(y(i,j));
end
end
lh=(h/2)*lh1;
disp(lh)
4
Vérification le résultat en utilisant la fonction de MTLAB qudl
f = @(x) sin(x);
I = quadl(f, 0, pi);
disp(I)
d. Évolution de l’erreur en fonction de h pour N∈[1,100] :
La méthode de trapèze
a=0; b=pi; N=3;
t=[-1 1]; w=[1 1]; M=length(t); f=@(x)sin(x);
for N = 1:100
h=(b-a)/N;
for i=1:N+1
x(i)=a+(i-1)*h;
end
for i=1:N
for j=1:M
y(i,j) = x(i) + h * (t(j) + 1) / 2;
end
end
lh1=0;
for i=1:N
for j=1:M
lh1=lh1+w(j)*f(y(i,j));
end
end
lh=(h/2)*lh1;
H(N) = h;
erreur(N)=abs(2-lh)
end
loglog(H, erreur, 'b.-');
xlabel('h');
ylabel('Erreur');
title('Erreur de quadrature en fonction de h');
grid on;
5
La méthode de simpson
a=0; b=pi; N=3;
t=[-1 0 1]; w=[1/3 4/3 1/3]; M=length(t); f=@(x)sin(x);
for N = 1:100
h=(b-a)/N;
for i=1:N+1
x(i)=a+(i-1)*h;
end
for i=1:N
for j=1:M
y(i,j) = x(i) + h * (t(j) + 1) / 2;
end
end
lh1=0;
for i=1:N
for j=1:M
lh1=lh1+w(j)*f(y(i,j));
end
end
lh=(h/2)*lh1;
H(N) = h;
erreur(N)=abs(2-lh)
end
loglog(H, erreur, 'b.-');
xlabel('h');
ylabel('Erreur');
title('Erreur de quadrature en fonction de h');
grid on;
6
La méthode de Gauss
a=0; b=pi; N=3;
t=[-1/sqrt(3) 1/sqrt(3)]; w=[1 1]; M=length(t); f=@(x)sin(x);
for N = 1:100
h=(b-a)/N;
for i=1:N+1
x(i)=a+(i-1)*h;
end
for i=1:N
for j=1:M
y(i,j) = x(i) + h * (t(j) + 1) / 2;
end
end
lh1=0;
for i=1:N
for j=1:M
lh1=lh1+w(j)*f(y(i,j));
end
end
lh=(h/2)*lh1;
H(N) = h;
erreur(N)=abs(2-lh)
end
loglog(H, erreur, 'b.-');
xlabel('h');
ylabel('Erreur');
title('Erreur de quadrature en fonction de h');
grid on;
7
CONCLUSION GENERALE SUR L’INTERPOLATION ET L’INTEGRATION NUMERIQUE
TP1:
• L’interpolation de Lagrange permet d’obtenir une approximation précise des valeurs
entre les points expérimentaux, mais elle devient instable pour un grand nombre de
points (phénomène de Runge).
• L’utilisation de la fonction polyfit de MATLAB permet une approximation plus compacte
sous forme de polynôme, pratique pour l’évaluation rapide, mais peut aussi générer des
erreurs si le degré du polynôme est mal choisi.
• La comparaison graphique montre que les deux approches sont cohérentes pour les 4
points donnés, mais l’évaluation hors de ces points doit être faite avec prudence.
TP2:
Toutes les méthodes utilisées pour le calcul de l'intégrale numérique ont donné des
résultats précis et très proches de la valeur analytique de l'intégrale. Parmi ces méthodes, la
méthode de Gauss s’est révélée être la plus précise, et ce malgré un nombre de subdivisions
limité, grâce à l'utilisation de points de pondération optimisés qui améliorent l’exactitude de
l’approximation. L’étude de l’évolution de l’erreur en fonction de h (la longueur des sous-
intervalles) a montré que l’erreur diminue clairement lorsque h devient plus petit, c’est-à-dire
lorsque le nombre de subdivisions N augmente. Les résultats ont également montré que les
méthodes de Simpson et de Gauss convergent plus rapidement vers la valeur exacte que la
méthode des trapèzes. Ces résultats ont été confirmés à l’aide des fonctions MATLAB intégrées
telles que trapz, quad et quadl, qui ont fourni des valeurs très proches de l’intégrale exacte.