TP Cs
TP Cs
SEMESTRE : 2
AU : 2021-2022
Réf. : GE-085
Abdelbacet Mhamdi
Docteur-Ingénieur en Génie Électrique
“During this course, you will be working with one or more partners with whom you
may discuss any points concerning laboratory work. However, you must write your
lab report, in your own words.
Lab reports that contain identical language are not acceptable, so do not copy your
lab partner’s writing.
If there is a problem with your data, include an explanation in your report. Recog-
nition of a mistake and a well-reasoned explanation is more important than having
high-quality data, and will be rewarded accordingly by your instructor. A lab report
containing data that is inconsistent with the original data sheet will be considered
a violation of the Honor Code.
Falsification of data or plagiarism of a report will result in prosecution of the offen-
der(s) under the University Honor Code.
On your first lab report you must write out the entire honor pledge :
The work presented in this report is my own, and the data was obtained by my
lab partner and me during the lab period.
On future reports, you may simply write “Laboratory Honor Pledge” and sign your
name.”
Table des matières
1 Calcul matriciel 1
3 Intégration numérique 16
4 Interpolation polynomiale 19
i
Atelier Progiciel : Matlab/Octave
Manipulation № 1 :
Le signal échelon est défini par x(t) = 1 si t > 0 et x(t) = 0 sinon. Écrivez les instructions MATLAB
permettant de créer et d’afficher ce signal sur l’intervalle de temps [–5, 5] avec un pas de 0.01 sec.
Command Window
1 >> t = -5:0.01:5
2 >> x(t>0) = 1
3 >> plot(t, x)
§ 4 >> grid
5 >> xlabel('Temps (sec)')
6 >> ylabel('x(t)')
7 >> title('Signal échelon')
Manipulation № 2 :
Écrire les commandes MATLAB correspondantes.
a) Créer une matrice Z sachant que :
• la 1
ère ligne de Z est→
−a = [10, –20, 30, –40];
• la 2
ème ligne de Z est le double de →
−a ;
b) Trouver la taille de Z ;
c) Calculer le nombre des éléments positifs, négatifs et nuls de la matrice Z ;
d) Calculer le nombre des éléments pairs et impairs de la matrice Z ;
e) Trouver le max, min de Z.
Command Window
1 >> a = [10 -20 30 -40]
2 >> Z = [a; 2*a; a.^2]
3 >>
4 >> size(Z)
5 >>
§ 6 >> length(Z(Z<0)) % Eléments négatifs
7 >> length(Z(Z>0)) % Eléments positifs
8 >> length(Z(Z == 0)) % Eléments nuls
9 >>
10 >> length(Z(mod(Z, 2) == 0)) % Eléments pairs
1
Atelier # 1. Calcul matriciel 2
Manipulation № 3 :
Soient les deux fonctions
x2
f(x) = xe–x cos(2x) et g(x) = e– 2
2π
pour x ∈ [0, π] avec un pas p = .
100
a) Calculer f(x) et g(x);
b) Représenter leurs courbes sur la même figure.
Command Window
1 >> x = 0:2*pi/100:pi
2 >> f = x.*exp(-x).*cos(2*x)
3 >> g = exp(-x.^2/2)
§
4 >>
5 >> plot(x, f, x, g)
6 >> legend('f(t)', 'g(t)')
Manipulation № 4 :
Soit la matrice
7 5 8 8 3
© ª
7 1 8 4 7 ®
A = ®.
1 2 1 6 6 ®
« 7 4 8 1 8 ¬
Command Window
1 >> A = [7 5 8 8 3; 7 1 8 4 7; 1 2 1 6 6; 7 4 8 1 8]
§ 2 >> e = A(A>6)
3 >> f = A(A>6) + 1
Manipulation № 5 :
a) Écrire les commandes qui demandent à l’utilisateur deux entiers n ≥ 2 et m ≥ 2, et génère une matrice
M de nombres pseudo-aléatoires uniformes entre 0 et 1 de taille n × m;
b) Construire une sous matrice avec uniquement les éléments de M à un indice de ligne et de colonne
pair;
c) Construire une matrice A telle que pour tout indice i ∈ {1 · · · 3} et j ∈ {1 · · · 3}, le terme
aij = 2i – j;
A. Mhamdi
Atelier # 1. Calcul matriciel 3
d) Construire une matrice B telle que pour tout indice i ∈ {1 · · · 3} et j ∈ {1 · · · 4}, le terme
j
bij = 2i – .
3
Command Window
1 >> n = input('Donner un entier >= 2 :\n')
2 >> m = input('Donner un entier >= 2 :\n')
3 >> M = rand(n, m)
4 >>
5 >> idx_Row = 2:2:n-mod(n, 2) % Les indices pairs de lignes
6 >> idx_Col = 2:2:m-mod(m, 2) % Les indices pairs de colonnes
7 >>
8 >> M(idx_Row, idx_Col)
§
9 >>
10 >> I = 1:3
11 >> J = 1:3
12 >> A = 2*[I' I' I']-[J; J; J] % Octave : A = 2*I'-J
13 >> I = 1:3
14 >> J = 1:4
15 >>
16 >> B = 2*[I' I' I' I']-1/3*[J; J; J; J] % Octave : B = 2*I'-1/3*J
Manipulation № 6 :
Soit la matrice et les vecteurs colonnes suivants :
1/8 1/4 1/5 1 5
© –1 ª →
− © ª →
−u © ª
A = /4 0 5/8 ® , b = –1 ® , 1 = 2 ®. (1.1)
« 1/5 –5/8 1/8 ¬ « 1 ¬ « 4 ¬
→−
On définit pour n ≥ 1, la suite→
−u →
−
n+1 = A u n + b .
a) Construire une boucle qui calcule les 100 premiers termes de la suite →−u ;
n
Command Window
1 >> A = [1/8 1/4 1/5; -1/4 0 5/8; 1/5 -5/8 1/8]
2 >> b = [1 -1 1]'
3 >> U(:, 1) = [5 2 4]'
§ 4 >>
5 >> for k = 2:100
6 U(:, k) = A*U(:, k-1) + b
A. Mhamdi
Atelier # 1. Calcul matriciel 4
7 end
8 >>
9 >> Module = sqrt(sum(U.^2, 1))
10 >> plot(Module)
11 >>
12 >> U(:, 1) = [2 1 0]'
§ 13 >> for k = 2:100
14 U(:, k) = A*U(:, k-1) + b
15 end
16 >>
17 >> Module = sqrt(sum(U.^2, 1))
18 >> hold on
19 >> plot(Module)
Manipulation № 7 :
a) Construire de trois manières différentes, le vecteur ligne X de taille 100 qui comporte les 100 premiers
carrés des nombres entiers;
b) Construire sans effectuer de boucles la matrice M de dimension 10×10 donnant les résultats de la
table de multiplication;
c) Extraire la matrice formée de la table de multiplication des 4 premiers entiers impairs (en ligne) par
les 4 premiers entiers pairs (en colonnes).
Manipulation № 8 :
Écrire les instructions MATLAB permettant d’exécuter les commandes suivantes :
a) Trouver la valeur de t ∈ [0, 2π] qui maximise cos (t) + sin (t). On considère un pas de t de 0.01;
b) Créer un vecteur ligne composé de 100 nombres tirés aléatoirement suivant la loi uniforme sur l’inter-
valle [0, 5];
c) Trouver ensuite l’indice et la valeur au sein de ce vecteur qui s’approche le plus de π.
(Utiliser la commande find.)
Command Window
1 >> t = 0:0.01:2*pi
2 >> y = cos(t)+sin(t)
3 >> t(y == max(y))
4 >>
§ 5 >> u = 5*rand(1, 100)
6 >>
7 >> y = abs(u-pi)
8 >> idx = find(y == min(y))
9 >> disp(u(idx))
Manipulation № 9 :
a) Créer la variable t contenant tous les instants d’échantillonnage entre 0 et 0.1 sec, par pas de 1 msec
(soit 10–3 sec);
A. Mhamdi
Atelier # 1. Calcul matriciel 5
Command Window
1 >> t = 0:1e-3:0.1
2 >> o1 = 2*cos(2*pi*50*t+pi/3)
3 >> plot(t, o1, 'b', 'linewidth', 2, 'marker', '*')
4 >> xlabel('Temps( sec)'), ylabel('x')
5 >> title("Evolution de x(t)")
§ 6 >> o2 = 2*cos(2*pi*50*t+pi/3).*sin(2*pi*300*t+pi/4)
7 >> hold on
8 >> plot(t, o2, 'r', 'linewidth', 2, 'marker', 'o')
9 >> ylabel('x et y')
10 >> title("Evolution de x(t) et de y(t)")
11 >> legend('x(t)', 'y(t)')
Les instructions données par la suite ont été testées sous GNU OCTAVE.
Command Window
1 >> X = [0:99].^2
2 >> v = 0:9
§
3 >> M = v'.*v
4 >> M(1:2:7, 2:2:8)
Manipulation № 10 :
3 4
© ª © ª
2 ® 1 ®
Soient les vecteurs X = ® et Y = ®.
6 ® 3 ®
« 8 ¬ « 5 ¬
a) Ajouter la somme des éléments de X à Y ;
b) Élever chaque élément de X à la puissance spécifiée par l’élément correspondant de Y ;
c) Diviser chaque élément de Y par l’élément correspondant de X. Le résultat trouvé devrait être assigné
à la variable Z ;
d) Multiplier chaque élément de Z par lui même et assigner le résultat à Ω;
e) Calculer X T Y – Ω.
A. Mhamdi
Atelier # 1. Calcul matriciel 6
Command Window
1 >> X = [3 2 6 8]'
2 >> Y = [4 1 3 5]'
3 >> Y += sum(X)
§ 4 >> X.^Y
5 >> Z = Y.^X
6 >> Omega = Z.^2
7 >> X'*Y-Omega
Manipulation № 11 :
Écrivez les instructions permettant de générer un vecteur ligne contenant tous les entiers pairs entre 456
et 222 rangé du plus grand au plus petit. Combien y en a-t-il de ces entiers pairs?
Command Window
1 >> X = 456:-2:222
§
2 >> length(X)
Manipulation № 12 :
Soit le vecteur X = [0, π/10, 2π/10, · · · , 2π] :
a) Tracer sur un même graphique les trois courbes
de telle sorte que la courbe 1 soit une ligne continue rouge, la courbe 2 des cercles bleus, et la courbe 3 des
pointillés noirs;
b) Définir
Y21 = sin(X), Y22 = cos(X),
puis utiliser subplot(2,1,1) et subplot(2,1,2) pour tracer sur une même figure les deux graphes
des fonctions sinus et cosinus, l’un en dessous de l’autre.
Command Window
1 >> X = 0:pi/10:2*pi
2 >> Y11 = sin(X)
3 >> Y12 = sin(X-0.3)
4 >> Y13 = sin(X-0.5)
5 >> plot(X, Y11, 'r')
6 >> hold on
7 >> plot(X, Y12, 'ob')
§
8 >> plot(X, Y13, ':k')
9 >> Y21 = sin(X)
10 >> Y22 = cos(X)
11 >> subplot(2, 1, 1)
12 >> plot(X, Y21)
13 >> subplot(2, 1, 2)
14 >> plot(X, Y22)
Manipulation № 13 :
A. Mhamdi
Atelier # 1. Calcul matriciel 7
Pour tout t ∈ 0, 12 et par pas de 0.01, on considère le signal
π
x(t) = sin 2πf0 t + ,
7
où f0 = 6Hz. Compléter les instructions MATLAB permettant de créer et d’afficher graphiquement la
fonction x.
Command Window
1 >> T = 0:0.01:0.5
2 >> X = sin(12*pi*T+pi/7)
3 >> plot(T, X)
§ 4 >> xlabel('Temps (sec)')
5 >> ylabel('x(t)')
6 >> title('Graphe de x au cours du temps')
7 >> grid on;
Manipulation № 14 :
On définit n! comme étant le produit des entiers inférieurs à n et strictement positifs. Écrire l’instruction
MATLAB qui permet de calculer ln(123!). On rappelle que :
!
Ön
ln (n!) = ln k
k=1
Õ
n
= ln (k) . (1.2)
k=1
Command Window
§ 1 >> LnFact123 = sum(log(1:123))
Manipulation № 15 :
Écrire le code MATLAB qui permet de créer les variables suivantes :
a) Z : matrice de dimensions 4 × 5 dont les éléments pris en colonne sont les nombres allant de 0 à –1.9
par pas de –0.1;
b) F : matrice de dimensions 9 × 5 dont la partie haute est la matrice Z précédente et le reste est nul;
c) D : matrice diagonale 6 × 6 dont les éléments diagonaux valent 10–3 ;
d) U : matrice de dimensions 3 × 6 dont les éléments sont des tirages pseudo–aléatoires uniformes sur
l’intervalle [0, 1];
e) Σ1 : somme des colonnes de F ;
f) Σ2 : somme de tous les éléments de U ;
g) →
−v : vecteur ligne de longueur 1000 dont les éléments sont des tirages pseudo–aléatoires gaussiens de
moyenne nulle et d’écart–type 2;
h) µ : moyenne empirique de→ −v ;
A. Mhamdi
Atelier # 1. Calcul matriciel 8
Command Window
1 >> Z = reshape(0:-0.1:-1.9, 4, 5)
2 >> F = zeros(9, 5)
3 >> F(1:4, :) = Z
4 >> D = 1e-3*eye(6)
5 >> U = rand(3, 6)
§
6 >> Sigma1 = sum(F, 2)
7 >> Sigma2 = sum(sum(U))
8 >> v = 2*randn(1, 1000)
9 >> mu = mean(v)
10 >> sigma2 = var(v)
Manipulation № 16 :
a) Définir une matrice M aléatoire selon une loi uniforme à trois lignes et sept colonnes;
b) Combien de nombres dans cette matrice sont plus grand que 0.5? que 0.8? Où sont–ils situés?
c) Construire alors la matrice P obtenue à partir de la matrice M en remplaçant tous les nombres de M
inférieurs à 0.4 par 0, et ceux supérieurs à 0.4 par 1;
d) Construire de même la matrice Q obtenue à partir de la matrice M en remplaçant tous les nombres
de M inférieurs à 0.5 par -3 et tous les nombres supérieurs à 0.5 par 14.
Command Window
1 >> M = rand(3, 7);
2 >> length(M(M>=0.5));
3 >> [r5_idx, c5_idx] = find(M>=0.5);
§ 4 >> length(M(M>=0.8));
5 >> [r8_idx, c8_idx] = find(M>=0.8);
6 >> P = M; P(P<=0.4) = 0; P(P>=0.4) = 1;
7 >> Q = M; Q(Q<=0.5) = -3; Q(Q>=0.5) = 14;
Manipulation № 17 :
1
© ª
2 ®
a) Construire le vecteur colonne x = ® ;
3 ®
« 4 ¬
b) Calculer P définie par pij = xi xj ;
Õ
4
c) Calculer m = x2i ;
k=1
d) Créer le vecteur ligne→−a en prenant que la 1ère ligne de P ;
→
−
e) Créer le vecteur ligne b en prenant que la 2ème colonne de P ;
−a et→
f) Créer la matrice C en accolant verticalement les deux vecteurs lignes→
−
b.
Command Window
§ 1 >> X = [1; 2; 3; 4]
A. Mhamdi
Atelier # 1. Calcul matriciel 9
2 >> P = X*X'
3 >> m = sum(X.^2)
§ 4 >> a = P(1, :)
5 >> b = P(:, 2)'
6 >> C = [a; b]
Manipulation № 18 :
π
a) Définir la variable X = , et calculer Y1 = sin (X) et Y2 = cos(X), puis Z = tan(X) à partir de Y1
4
et Y2 ;
hπ π π i
b) Définir la variable X = , , , et calculer Y1 = sin(X) et Y2 = cos(X);
6 4 3
c) Calculer alors Z = tan(X) en utilisant exclusivement les vecteurs Y1 et Y2 précédents;
d) Définir la variable X = [0 : 0.1 : 2π]. Combien y a-t-il de valeurs dans ce vecteur? Afficher la courbe
du sinus.
Command Window
1 >> X = pi/4; Y1 = sin(x); Y2 = cos(X); Z = Y1/Y2;
2 >> X = [pi/6 pi/4 pi/3]; Y1 = sin(X); Y2 = cos(X);
3 >> tanX = Y1./Y2;
§ 4 >> X = 0:.1:2*pi;
5 >> length(X);
6 >> plot(X, sin(X)); grid on; xlabel('X'); ylabel('sin(X)');
7 >> title('La courbe du sinus');
A. Mhamdi
Atelier Progiciel : Matlab/Octave
Manipulation № 1 :
Déterminer toutes les matrices X ∈ M(2, 2) (Ò) telles que A = BX. On donne
4 3 2 3
© ª © ª
A = 6 5 ® et B = 3 4 ®.
« 4 3 ¬ « 2 3 ¬
Manipulation № 2 :
Trouver le point d’intersection de deux lignes droites ∆1 et ∆2 définies dans le système de coordonnées
cartésiennes par :
∆1 : 4x + 3y = 24
∆2 : 3x + 4y = 25.
Command Window
1 >> A = [4 3; 3 4]
2 >> b = [24; 25]
3 >> det(A)
§
4 >> A\b
5 >> fprintf("Les deux droites s'intersectent\
6 au point (%.1f, %.1f).\n", ans)
Manipulation № 3 :
24 crayons et 12 gommes à effacer coûtent 9.6 dinars. 20 crayons et 15 gommes à effacer coûtent 10 di-
nars. Quels sont les prix du crayon et de la gomme? Décrire le problème d’abord par un système d’équa-
10
Atelier # 2. Système d’équations linéaires 11
tions.
24c + 12g = 9.6
20c + 15g =
10
Command Window
1 >> A = [24 12; 20 15]
2 >> b = [9.6; 10]
§
3 >> det(A)
4 >> A\b
Manipulation № 4 :
Vous contre un athlète! Vous pouvez courir 0.2 km chaque minute. L’athlète peut courir 0.5 km chaque
minute. Vous débutez la course 6 minutes plus tôt. Jusqu’où pouvez-vous aller avant que l’athlète ne vous
attrape?
La distance en km, parcourue par un athlète est 0.5y. La vôtre exprimée en km, est (1.2 + 0.2x). Le système
d’équations est donné donc par :
x–y
= 0
(S)
0.2x – 0.5y = –1.2.
Command Window
1 >> A = [1 -1; 0.2 -0.5]
2 >> b = [0; -1.2]
§ 3 >> det(A)
4 >> T = A\b
5 >> (T + [6; 0]).*[.2; .5] % Distances parcourues
Manipulation № 5 :
Soit la matrice A ∈ Òn×n ayant la forme suivante :
b1 c1 0 ··· 0
© .. ª
.. .. .. ®
a1 . . . . ®
®
A = 0
.. ..
. .
..
. 0 ®
®
.. .. .. .. ®
. . . . cn–1 ®
®
« 0 · · · 0 an–1 bn ¬
On note
■ b = (bi )1≤i≤n les coefficients diagonaux;
■ a = (ai )1≤i≤n–1 les coefficients sous–diagonaux;
A. Mhamdi
Atelier # 2. Système d’équations linéaires 12
Entrée :
−a ∈ Òn–1 ,→
→ −
b ∈ Òn et→
−c ∈ Òn–1
Sortie :
→
− →
−
l ∈ Òn–1 , d ∈ Òn et→
−u ∈ Òn–1 .
Initialisation :
→
−
n ← length( b )
d1 ← b1
Pour i ← 1 à n – 1 faire
li ← dai
i
ui ← ci
di+1 ← bi+1 – li ui
Fin
2 –1 0 0 0
© ª
–1 2 –1 0 0 ®
®
A = 0 –1 2 –1 0 ® .
®
0 0 –1 2 –1 ®
« 0 0 0 –1 2 ¬
−a ,→
b) Extraire les vecteurs→
− →
b et −c à partir de la matrice A ;
→
− →− − −a ,→
− →
u à partir de vecteurs→
c) Compléter le code qui permet d’obtenir les vecteurs l , d et→ b et −c ;
d) Former par la suite les deux matrices L et U ;
e) Écrire un code qui permet de résoudre le système triangulaire inférieur L→
−y = →
−v , où
→
−v = (0, 1, 2, –1, 5)T ;
A. Mhamdi
Atelier # 2. Système d’équations linéaires 13
Command Window
1 >> A = [2 -1 0 0 0; -1 2 -1 0 0; 0 -1 2 -1 0; 0 0 -1 2 -1; 0 0 0 -1 2]
2 >>
3 >> n = length(A)
4 >> for i = 1:n
5 b(i) = A(i, i)
6 end
7 >> for i = 1:n-1
8 a(i) = A(i+1, i)
9 c(i) = A(i, i+1)
10 end
11 >>
12 >> d(1) = b(1)
13 >> for i = 1:n-1
14 l(i) = a(i)/d(i)
15 u(i) = c(i)
16 d(i+1) = b(i+1)-l(i)*u(i)
17 end
18 >> L = zeros(n, n), U = zeros(n, n)
§ 19 >> for i = 1:n
20 L(i, i) = 1
21 U(i, i) = d(i)
22 end
23 >> for i = 1:n-1
24 L(i+1, i) = l(i)
25 U(i, i+1) = u(i)
26 end
27 >>
28 >> v = [0 1 2 -1 5]'
29 >> y = zeros(n, 1)
30 >> for i = 1:n
31 y(i) = 1/L(i, i)*(v(i)-L(i, :)*y)
32 end
33 >>
34 >> x = zeros(n, 1)
35 >> for i = n:-1:1
36 x(i) = 1/U(i, i)*(y(i)-U(i, :)*x)
37 end
Manipulation № 6 :
Mettre le problème suivant sous forme de système d’équations. On se propose de déterminer le nombre
de crayons et de bocaux. La devinette est comme suit :
a) Si on met 9 crayons dans chaque bocal, il reste 2 bocaux;
b) Si on met 6 crayons dans chaque bocal, il reste 3 crayons.
Soient x et y les nombres de crayons et et de bocaux respectivement. Le système d’équations résultant est
comme suit :
A. Mhamdi
Atelier # 2. Système d’équations linéaires 14
9(y – 2) = x
6y = x – 3
Command Window
1 >> A = [1 -9; 1 -6]
2 >> b = [-18; 3]
3 >> det(A)
§
4 >> Res = A\b
5 >> fprintf('Le nombre de crayons est %i.\n', Res(1))
6 >> fprintf('Le nombre de bocaux est %i.\n', Res(2))
Manipulation № 7 :
Soit le circuit électrique ci-dessous. On se donne E1 = E2 = 10 volts, R1 = R2 = 2.2kΩ et R = 1kΩ. Le système
d’équations résultant après application des lois de Kirchoff est donné par Eq. 2.1. Calculer le courant I qui
parcourt la résistance R.
R1 I1 I2 R2
V1 I V2
E1 V R E2
E1 – R1 I1 – RI = 0
E2 – R2 I2 – RI = 0 (2.1)
I
= I1 + I2 .
Command Window
1 >> A = [2.2 0 1; 0 2.2 1; -1 -1 1];
2 >> b = [10; 10; 0];
§ 3 >> det(A)
4 >> X = A\b
5 >> I = X(end)*1e-3
Manipulation № 8 :
Résoudre le système linéaire, d’inconnues x, y et z suivant
6x + y – 5z = 10
2x + 2y + 3z = 11
4x – 9y + 7z = 12.
A. Mhamdi
Atelier # 2. Système d’équations linéaires 15
Command Window
1 >> A = [6 1 -5; 2 2 3; 4 9 7]
2 >> b = [10; 11; 12]
§
3 >> det(A)
4 >> A\b
A. Mhamdi
Atelier Progiciel : Matlab/Octave
Manipulation № 1 :
Résoudre numériquement pour t dans [–π/2.25, π/2.25] l’équation différentielle suivante :
M-File
function [ dot_y ] = Func1(t, y)
§ dot_y = -tan(t)*y+sin(2*t);
end
Command Window
§ 1 >> [t, y] = ode45(@Func1, [-pi/2.25 pi/2.25], 1);
Manipulation № 2 :
Résoudre numériquement pour tout t dans [0, 5] , l’équation différentielle suivante :
3 4 0
Ẋ = X, avec X0 = .
–4 3 1
M-File
function [ dot_X ] = Func(t, X)
§ dot_X = [3 4; -4 3]*X;
end
Command Window
§ 1 >> [t, X] = ode45(@Func, [0 5], [0; 1])
Manipulation № 3 :
On définit une équation différentielle du premier ordre par :
dy
= F (t, y), y (t = t0 ) = y0 .
dt
Pour résoudre numériquement cette équation, on peut avoir recours à l’approximation suivante :
dy
y (t + ∆) = y(t) + ∆ ,
dt
16
Atelier # 3. Intégration numérique 17
tout en fixant un pas fini de temps ∆, un instant ti est donné par ti = t0 + i∆ et on dénote par yi =
y (t = ti ). On obtient :
yi+1 = yi + ∆F (ti , yi ).
M-File
function [ dot_y ] = func1(t, y)
§ dot_y = y;
end
Command Window
1 >> delta = 0.1; y0 = 1; t1 = (0:delta:5)';
2 >> n = length(t1); y1 = [y0; zeros(n-1, 1)];
§ 3 >> for i = 1:n-1
4 y1(i+1) = y1(i) + delta*func1(t1(i), y1(i));
5 end
Command Window
1 >> [t2, y2] = ode45(@func1, t1, 2);
§ 2 >> plot(t1, y1, t2, y2);
3 >> legend('Approximation', 'ODE45');
M-File
function [ dot_y ] = func2(t, y)
§ dot_y = -y^2;
end
Command Window
1 >> delta = 0.1; t1 = (0:delta:5)';
2 >> n = length(t1);
3 >> y1 = [1; zeros(n-1, 1)];
§ 4 >>for i = 1:n-1
5 y1(i+1) = y1(i) + delta*func2(t1(i), y1(i));
6 end
7 >> [t2, y2] = ode45(@func2, t1, 1);
A. Mhamdi
Atelier # 3. Intégration numérique 18
A. Mhamdi
Atelier Progiciel : Matlab/Octave
Manipulation № 1 :
a) Calculer le polynôme d’interpolation de Lagrange Pn de la fonction sinus définie sur l’intervalle [0, 2π]
par pas de 0.1 associé à n + 1 points équidistants. On prend x0 = 0 et xn = 2π pour n = 3, 4, 5 & 6;
(Utiliser la commande linspace.)
b) Le tracer en superposant les résultats pour les différentes valeurs de n et tracer sur le même graphique
la courbe du sinus;
c) Faire de même pour la fonction 1/(1+x2 ) sur l’intervalle [–5, 5] par pas de 0.1, avec x0 = –5 et xn = 5
pour n = 3, 4, 5 & 6.
Command Window
1 >> X = 0:0.1:2*pi; Y = sin(X);
2 >>
3 >> X3 = linspace(0, 2*pi, 4); P3 = polyfit(X3, sin(X3), 3);
4 >> X4 = linspace(0, 2*pi, 5); P4 = polyfit(X4, sin(X4), 4);
§ 5 >> X5 = linspace(0, 2*pi, 6); P5 = polyfit(X5, sin(X5), 5);
6 >> X6 = linspace(0, 2*pi, 7); P6 = polyfit(X6, sin(X6), 6);
7 >>
8 >> Y3 = polyval(P3, X); Y4 = polyval(P4, X);
9 >> Y5 = polyval(P5, X); Y6 = polyval(P6, X);
Command Window
1 >> plot(X, Y, X, Y3, X, Y4, X, Y5, X, Y6)
§
2 >> legend('Sin', 'P_3', 'P_4', 'P_5', 'P_6')
Command Window
1 >> X = -5:0.1:5; Y = 1./(1+X.^2);
2 >>
3 >> X3 = linspace(-5, 5, 4); P3 = polyfit(X3, 1./(1+X3.^2), 3);
4 >> X4 = linspace(-5, 5, 5); P4 = polyfit(X4, 1./(1+X4.^2), 4);
5 >> X5 = linspace(-5, 5, 6); P5 = polyfit(X5, 1./(1+X5.^2), 5);
6 >> X6 = linspace(-5, 5, 7); P6 = polyfit(X6, 1./(1+X6.^2), 6);
§
7 >>
8 >> Y3 = polyval(P3, X); Y4 = polyval(P4, X);
9 >> Y5 = polyval(P5, X); Y6 = polyval(P6, X);
10 >>
11 >> plot(X, Y, X, Y3, X, Y4, X, Y5, X, Y6)
12 >> legend('1/(1+x^2)', 'P_3', 'P_4', 'P_5', 'P_6')
19
Nous proposons dans ce document quelques ateliers corrigés
sur les méthodes et outils du calcul scientifique et d’analyse
numérique. Ils portent essentiellement sur :