0% ont trouvé ce document utile (0 vote)
23 vues3 pages

U M R Proposal Méthode Numérique MC

Le document présente une correction d'examen sur les méthodes numériques, incluant des exercices sur l'interpolation de Lagrange, le calcul numérique d'intégrales et la résolution d'équations différentielles ordinaires (EDO) avec différentes méthodes. Chaque exercice est accompagné de code MATLAB illustrant les techniques utilisées et des graphiques pour visualiser les résultats. Une analyse de l'erreur pour la méthode de Runge-Kutta est également incluse, montrant comment l'erreur varie en fonction du pas de discrétisation.

Transféré par

Ulrich Momos
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
23 vues3 pages

U M R Proposal Méthode Numérique MC

Le document présente une correction d'examen sur les méthodes numériques, incluant des exercices sur l'interpolation de Lagrange, le calcul numérique d'intégrales et la résolution d'équations différentielles ordinaires (EDO) avec différentes méthodes. Chaque exercice est accompagné de code MATLAB illustrant les techniques utilisées et des graphiques pour visualiser les résultats. Une analyse de l'erreur pour la méthode de Runge-Kutta est également incluse, montrant comment l'erreur varie en fonction du pas de discrétisation.

Transféré par

Ulrich Momos
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Correction proposée de l’examen de Méthodes

Numériques
Proposé par : ULRICH MOMOS
March 26, 2025

Exercice 1 : Interpolation de Lagrange


1 % Interpolation de Lagrange
2 clc; clear; close all;
3 x = [0 1 2];
4 y = [1 2 5];
5 xx = linspace(-1,3,100);
6 yy = interp1(x, y, xx, 'pchip');
7

8 figure;
9 plot(x, y, 'ro', 'MarkerFaceColor', 'r'); hold on;
10 plot(xx, yy, 'b-', 'LineWidth', 1.5);
11 xlabel('x'); ylabel('P_2(x)');
12 title('Interpolation de Lagrange');
13 grid on;

Exercice 2 : Calcul numérique d’intégrale


1 % Intégration numérique avec la méthode des trapèzes
2 f = @(x) 1 + log(x);
3 a = 1; b = 3;
4 tol = 1e-3;
5 n = 1;
6 I_prev = 0;
7 err = inf;
8

9 while err > tol


10 n = n + 1;
11 x_int = linspace(a, b, n);
12 I_new = trapz(x_int, f(x_int));
13 err = abs(I_new - I_prev);
14 I_prev = I_new;
15 end
16

17 fprintf('Nombre de sous-intervalles nécessaire: %d\n', n);

1
Exercice 3 : Résolution numérique d’EDO
1 % Résolution numérique d'EDO par Euler, Heun et Runge-Kutta
2 f = @(t, y) (-y*t^2 - y^2 + 2*t) / (1 - t^3);
3 t0 = 0; y0 = 1;
4 h = 0.1;
5 t_final = 2;
6 t = t0:h:t_final;
7 n = length(t);
8

9 % Méthode d'Euler
10 y_euler = zeros(1, n);
11 y_euler(1) = y0;
12 for i = 1:n-1
13 y_euler(i+1) = y_euler(i) + h * f(t(i), y_euler(i));
14 end
15

16 % Méthode de Heun
17 y_heun = zeros(1, n);
18 y_heun(1) = y0;
19 for i = 1:n-1
20 k1 = f(t(i), y_heun(i));
21 k2 = f(t(i) + h, y_heun(i) + h*k1);
22 y_heun(i+1) = y_heun(i) + (h/2) * (k1 + k2);
23 end
24

25 % Méthode de Runge-Kutta d'ordre 4


26 y_rk4 = zeros(1, n);
27 y_rk4(1) = y0;
28 for i = 1:n-1
29 k1 = f(t(i), y_rk4(i));
30 k2 = f(t(i) + h/2, y_rk4(i) + (h/2)*k1);
31 k3 = f(t(i) + h/2, y_rk4(i) + (h/2)*k2);
32 k4 = f(t(i) + h, y_rk4(i) + h*k3);
33 y_rk4(i+1) = y_rk4(i) + (h/6)*(k1 + 2*k2 + 2*k3 + k4);
34 end
35

36 % Tracé des solutions


37 figure;
38 plot(t, y_euler, 'r--', 'LineWidth', 1.2); hold on;
39 plot(t, y_heun, 'g-.', 'LineWidth', 1.2);
40 plot(t, y_rk4, 'b-', 'LineWidth', 1.2);
41 legend('Euler', 'Heun', 'Runge-Kutta');
42 xlabel('t'); ylabel('y(t)');
43 title('Comparaison des méthodes numériques');
44 grid on;

2
1 Analyse de l’erreur pour Runge-Kutta
1 % Analyse de l'erreur en fonction du pas de discrétisation
2 h_values = [0.1, 0.05, 0.01];
3 errors = zeros(size(h_values));
4

5 for j = 1:length(h_values)
6 h = h_values(j);
7 t = t0:h:t_final;
8 n = length(t);
9 y_rk4 = zeros(1, n);
10 y_rk4(1) = y0;
11

12 for i = 1:n-1
13 k1 = f(t(i), y_rk4(i));
14 k2 = f(t(i) + h/2, y_rk4(i) + (h/2)*k1);
15 k3 = f(t(i) + h/2, y_rk4(i) + (h/2)*k2);
16 k4 = f(t(i) + h, y_rk4(i) + h*k3);
17 y_rk4(i+1) = y_rk4(i) + (h/6)*(k1 + 2*k2 + 2*k3 + k4);
18 end
19

20 errors(j) = abs(y_rk4(end) - y_rk4(end-1));


21 end
22

23 figure;
24 loglog(h_values, errors, 'o-');
25 xlabel('Pas h'); ylabel('Erreur');
26 title('Erreur en fonction du pas');
27 grid on;

Vous aimerez peut-être aussi