tp_matlab
tp_matlab
tp_matlab
2019-2020
TP1 – Matlab
Exercice 1
2+5∗3
1) Utiliser l’éditeur de commandes de Matlab pour calculer :
= 25 + 17 ; = ; = 5 +3∗4 ; =
4
= ln 5 + √3 ; = sin −1 ; = tan
2 4
2) Afficher et calculer :
# = 1 + 4$ ; = 3 + 6$ ; # + ; # ∗ ; # ;
− # ; | − #| ; arg − # ; ) − # ; *+ − #
Exercice 2
− Affecter la chaîne de caractères ‘geo’ à une variable a.
− Affecter la chaîne de caractères ‘technique’ à une variable b.
− Concaténer les chaînes de caractères a et b et mettre le résultat dans une variable
c.
− Accéder au 3ème et 5ème caractère de la chaîne c.
Exercice 3
− Afficher les nombres entre 3 et 15 par pas de 1.
− Afficher les nombres entre 3 et 15 par pas de 4.
− Afficher les nombres entre 45 et 10 par pas de -5.
− Afficher les nombres entre 0 et 4π par pas de π.
− Afficher les nombres entre 0 et 4π par pas de π/2.
Exercice 4
− Créer le vecteur ligne , = 2 7 − 4 3 .
−1
3
Créer le vecteur colonne - = . 0.
6
−
0
− Donner le vecteur w transposé du vecteur u.
− Calculer la somme des vecteur v et w et leur produit scalaire.
− Donne les dimensions des vecteurs u et v.
1
Exercice 5
− Créer les vecteurs u = 15 3 7 − 4 et v = 1 − 2 4 20 .
− Donner la taille de ces vecteurs.
− Calculer la somme et le produit scalaire de ces vecteurs.
− Créer un vecteur w qui contient les éléments du vecteur u classés en ordre
croissant.
− Calculer la somme des éléments de chacun des vecteurs u et v.
− Calculer le minimum et le maximum des éléments des vecteurs u et v.
Exercice 6
1 5 −4 7 −2 5
− Créer les deux matrices 3 = 4 7 10 36 et 7 = 4−9 8 36 .
15 6 8 12 9 1
− Donner la taille de ces matrices.
− Effectuer la somme et le produit de ces matrices.
Exercice 7
5 1 4 0
1) Construire la matrice bloc
: = ; 3 8 1 7<
1 5 3 1
8 −2 0 −9
en utilisant deux vecteurs lignes et deux matrices carrées d’ordre 2 chacune.
2) En utilisant les fonctions eye, ones et zeros, construire les matrices suivantes :
1 0 0 1 0 0
2 0 −3 0 0 1 0 0 1 0
A D
A = ;0 2 0 −3 < ; B= @
@1
0 0 1 0 0 1
C
0 0 1 1 1 1 0 0 0C
0 0 1 1 1 1 1 0 0 0
?1 1 1 0 0 0B
Exercice 8
A l’aide de son écriture matricielle, résoudre le système linéaire suivant :
FG + HI + JK = H
E G−I−K = LN
−G + JI + K = M
2
CPI - 1ère Année
2019-2020
TP2
Graphisme en Matlab
Exercice 1
1) Tracer la fonction = ∗ sin x sur l’intervalle [−10, 10] en utilisant des traits
coupés ‘- - ‘ en couleur verte.
2) Tracer la fonction = √ + log +3 + sur l’intervalle [0, 20] en utilisant
des diamants en couleur rouge.
Exercice 2
1) Tracer les fonctions suivantes sur la même figure :
"#
y = x − 20x − x + 2 ; z = 2e − x + 20x − 5 x ∈ [−5,5]
Donner le titre ‘Temps’ à l’axe x, le titre ‘Concentration’ à l’axe y et le titre
‘Concentration en fonction du temps’ à la figure, puis une légende à chaque courbe.
Modifier les couleurs, les marques et les limites des axes x et y.
2) Tracer les fonctions = sin x , y = cos x , y = x , y = x sur 2x2 figures
séparées sur la même feuille.
3) Créer un fichier que vous nommez ‘nomfic.txt’ contenant des données sur trois
colonnes, puis tracer sur deux figures séparées, la deuxième et la troisième colonne
en fonction de la première.
Exercice 3
Sur la même fenêtre, tracer les 6 courbes suivantes, en 3x2 figures, en mettant du
quadrillage et en donnant le titre indiqué :
Courbe 1 : = cos ∈ [0, 4π] , titre : ‘Cosinus’
Courbe 2 : = sin ∈ [0, 4π] , titre : ‘Sinus’
π π
Courbe 3 : = tan ∈ [− * , *] , titre : ‘Tangente’
1
Exercice 4
# 5#
• Tracer la fonction 4 = pour , ∈ [−4, 4] .
• Donner un titre à chaque axe et un titre à la figure.
• Tracer les courbes de niveau de z dans le plan (x, y), tracer 20 lignes iso-valeurs.
Exercice 5
Sur la même fenêtre, en 2x2 figures, tracer sur la première ligne les courbes 3D des
fonctions suivantes et sur la deuxième ligne leurs courbes de niveaux :
4 = + 4 ; 4 = 2 − 5
2
CPI - 1ère Année
2019-2020
TP3
Programmer sous Matlab
Exercice 1
1) Ecrire une fonction nommée ’ f ’ qui prend en entrée une variable x et retourne
f(x) = x − 4x − x + 3
2) Ecrire une fonction nommée ’ g ’ qui prend en entrée deux variables x et y et
retourne
g(x, y) = x y + xy − x + 2y
Exercice 2
1) Ecrire une fonction nommée ’matdata’ qui prend en entrée une matrice A et
retourne son déterminant, sa transposée et son inverse.
2) Ecrire une fonction nommée ’vectdata’ qui prend un vecteur u et retourne sa
taille, le minimum de ses éléments et un vecteur contenant ses éléments classés par
ordre croissant.
Exercice 3
1) Ecrire une fonction nommée ’somme’ qui prend un entier n et retourne la somme:
= 1 + 2 + 3 + ⋯+
2) Ecrire une fonction nommée ’sommegeo’ qui prend un réel x et un entier n et
retourne la somme :
= 1+ + + ⋯+
Exercice 4
1) Ecrire une fonction nommée ’fact’ qui utilise la boucle for pour calculer le
factoriel d’un entier n.
On rappelle que ! = 1× 2 ×…×
2) Reprendre la même fonction en utilisant cette fois-ci la boucle while.
Exercice 5
Ecrire une fonction nommée ’equation.m’ qui prend comme entrée les coefficients a,
b et c de l’équation + + = 0 et retourne les racines de cette équation.
1
CPI - 1ère Année
2019-2020
Exercice 1
2+5∗3
1) Utiliser l’éditeur de commandes de Matlab pour calculer :
= 25 + 17 ; = ; = 5 +3∗4 ; =
4
= ln 5 + √3 ; = sin −1 ; = tan
2 4
>> a=25+17
a =
42
>> b=(2+5*3)/4
b =
4.2500
>> c=5^2+3*4^3
c =
217
>> d=exp(2)
d =
7.3891
>> x=log(5)+sqrt(3)
x =
3.3415
>> y=sin(pi/2)-1
y =
0
>> z=tan(pi/4)
z =
1.0000
2) Afficher et calculer :
# = 1 + 4$ ; = 3 + 6$ ; # + ; # ∗ ; # ;
− # ; | − #| ; arg − # ; ) − # ; *+ − #
>> z1=1+4i
z1 =
1.0000 + 4.0000i
1
>> z2=3+6i
z2 =
3.0000 + 6.0000i
>> z1+z2
ans =
4.0000 +10.0000i
>> z1*z2
ans =
-21.0000 +18.0000i
>> conj(z1)
ans =
1.0000 - 4.0000i
>> conj(z2)
ans =
3.0000 - 6.0000i
>> z2-z1
ans =
2.0000 + 2.0000i
>> abs(z2-z1)
ans =
2.8284
>> angle(z2-z1)
ans =
0.7854
>> real(z2-z1)
ans =
2
>> imag(z2-z1)
ans =
2
Exercice 2
− Affecter la chaîne de caractères ‘geo’ à une variable a.
− Affecter la chaîne de caractères ‘technique’ à une variable b.
− Concaténer les chaînes de caractères a et b et mettre le résultat dans une variable
c.
− Accéder au 3ème et 5ème caractère de la chaîne c.
>> a='geo'
a =
geo
2
>> b='technique'
b =
technique
>> c=[a b]
c =
geotechnique
>> c(3)
ans =
o
>> c(5)
ans =
e
Exercice 3
− Afficher les nombres entre 3 et 15 par pas de 1.
− Afficher les nombres entre 3 et 15 par pas de 4.
− Afficher les nombres entre 45 et 10 par pas de -5.
− Afficher les nombres entre 0 et 4π par pas de π.
− Afficher les nombres entre 0 et 4π par pas de π/2.
>> 3:15
ans =
3 4 5 6 7 8 9 10 11 12 13
14 15
>> 3:4:15
ans =
3 7 11 15
>> 45:-5:10
ans =
45 40 35 30 25 20 15 10
>> 0:pi:4*pi
ans =
0 3.1416 6.2832 9.4248 12.5664
>> 0:pi/2:4*pi
ans =
0 1.5708 3.1416 4.7124 6.2832 7.8540 9.4248
10.9956 12.5664
Exercice 4
− Créer le vecteur ligne , = 2 7 − 4 3 .
3
−1
3
Créer le vecteur colonne - = . 0.
6
−
0
− Donner le vecteur w transposé du vecteur u.
− Calculer la somme des vecteur v et w et leur produit scalaire.
− Donne les dimensions des vecteurs u et v.
>> u=[2 7 -4 3]
u =
2 7 -4 3
>> v=[-1;3;6;0]
v =
-1
3
6
0
>> w=u'
w =
2
7
-4
3
>> v+w
ans =
1
10
2
3
>> dot(v,w)
ans =
-5
>> size(u)
ans =
1 4
>> size(v)
ans =
4 1
Exercice 5
− Créer les vecteurs u = 15 3 7 − 4 et v = 1 − 2 4 20 .
4
− Donner la taille de ces vecteurs.
− Calculer la somme et le produit scalaire de ces vecteurs.
− Créer un vecteur w qui contient les éléments du vecteur u classés en ordre
croissant.
− Calculer la somme des éléments de chacun des vecteurs u et v.
− Calculer le minimum et le maximum des éléments des vecteurs u et v.
>> u=[15 3 7 -4]
u =
15 3 7 -4
>> v=[1 -2 4 20]
v =
1 -2 4 20
>> size(u)
ans =
1 4
>> size(v)
ans =
1 4
>> u+v
ans =
16 1 11 16
>> dot(u,v)
ans =
-43
>> w=sort(u)
w =
-4 3 7 15
>> sum(u)
ans =
21
>> sum(v)
ans =
23
>> min(u)
ans =
-4
>> max(u)
ans =
15
5
>> min(v)
ans =
-2
>> max(v)
ans =
20
Exercice 6
1 5 −4 7 −2 5
− Créer les deux matrices 3 = 4 7 10 36 et 7 = 4−9 8 36 .
15 6 8 12 9 1
− Donner la taille de ces matrices.
− Effectuer la somme et le produit de ces matrices.
6
8 3 1
2 18 6
27 15 9
>> A*B
ans =
-86 2 16
-5 93 68
147 90 101
>> det(A)
ans =
439
>> det(B)
ans =
-1108
>> inv(A)
ans =
0.1412 -0.1458 0.1253
-0.0251 0.1549 -0.0706
-0.2460 0.1572 -0.0569
>> inv(B)
ans =
0.0171 -0.0424 0.0415
-0.0406 0.0478 0.0596
0.1597 0.0785 -0.0343
>> inv(B)*inv(A)
ans =
-0.0067 -0.0025 0.0028
-0.0216 0.0227 -0.0119
0.0290 -0.0165 0.0164
>> inv(A*B)
ans =
-0.0067 -0.0025 0.0028
-0.0216 0.0227 -0.0119
0.0290 -0.0165 0.0164
>> eye(4)
ans =
1 0 0 0
7
0 1 0 0
0 0 1 0
0 0 0 1
>> zeros(4)
ans =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
>> ones(4)
ans =
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
>> rand(5)
ans =
0.7577 0.7060 0.8235 0.4387 0.4898
0.7431 0.0318 0.6948 0.3816 0.4456
0.3922 0.2769 0.3171 0.7655 0.6463
0.6555 0.0462 0.9502 0.7952 0.7094
0.1712 0.0971 0.0344 0.1869 0.7547
Exercice 7
5 1 4 0
1) Construire la matrice bloc
= = > 3 8 1 7?
1 5 3 1
8 −2 0 −9
en utilisant deux vecteurs lignes et deux matrices carrées d’ordre 2 chacune.
>> u=[5 1 4 0];
>> v=[3 8 1 7];
>> A=[1 5 ; 8 -2];
>> B=[3 1 ; 0 -9];
>> E=[u ; v ; A B]
E =
5 1 4 0
3 8 1 7
1 5 3 1
8 -2 0 -9
8
2) En utilisant les fonctions eye, ones et zeros, construire les matrices suivantes :
1 0 0 1 0 0
2 0 −3 0 0 1 0 0 1 0
D G
A = >0 2 0 −3 ? ; B= C 0 0 1 0 0 1
0 0 1 1 C1 1 1 0 0 0F
F
0 0 1 1 1 1 1 0 0 0
B1 1 1 0 0 0E
>> A=[2*eye(2) -3*eye(2) ; zeros(2) ones(2)]
A =
2 0 -3 0
0 2 0 -3
0 0 1 1
0 0 1 1
On peut aussi construire la matrice A en partant des colonnes par :
>> A=[[2*eye(2);zeros(2)] [-3*eye(2);ones(2)]]
A =
2 0 -3 0
0 2 0 -3
0 0 1 1
0 0 1 1
Exercice 8
A l’aide de son écriture matricielle, résoudre le système linéaire suivant :
9
IJ + KL + MN = K
H J−L−N = OQ
−J + ML + N = P
Le système linéaire s’écrit sous la forme matricielle : R∗S= T
On définit la matrice A et le second membre b
>> A=[2 3 4 ; 1 -1 -1 ; -1 4 1]
A =
2 3 4
1 -1 -1
-1 4 1
>> b=[3 0 5]'
b =
3
0
5
La solution du système linéaire est donnée par : J = :9< ∗ U
>> x=inv(A)*b
x =
0.7778
1.6667
>> A*x
ans =
3.0000
0.0000
5.0000
10
CPI - 1ère Année
2019-2020
Corrigé du TP2
Graphisme en Matlab
Exercice 1
1) Tracer la fonction = ∗ sin x sur l’intervalle [−10, 10] en utilisant des traits
coupés ‘- - ‘ en couleur verte.
>> x=-10:0.1:10;
>> y=x.*sin(x);
>> plot(x,y,'--g')
1
Exercice 2
1) Tracer les fonctions suivantes sur la même figure :
"#
y = x − 20x − x + 2 ; z = 2e − x + 20x − 5 x ∈ [−5 ,5]
Donner le titre ‘Temps’ à l’axe x, le titre ‘Concentration’ à l’axe y et le titre
‘Concentration en fonction du temps’ à la figure, puis une légende à chaque courbe.
Modifier les couleurs, les marques et les limites des axes x et y.
>> x=-5:0.1:5;
>> y=x.^4-20*x.^2-x+2;
>> plot(x,y)
>> hold on
>> z=2*exp(-x.^2)-x.^2+20*x-5;
>> plot(x,z)
>> xlabel('Temps')
>> ylabel('Concentration')
>> title('Concentration en fonction du temps')
>> legend('courbe 1','courbe 2')
2
3) Créer un fichier que vous nommez ‘nomfic.txt’ contenant des données sur trois
colonnes, puis tracer sur deux figures séparées, la deuxième et la troisième colonne
en fonction de la première.
Voir cours pour le traçage de courbes à partir de données lus dans
un fichier.
Exercice 3
Sur la même fenêtre, tracer les 6 courbes suivantes, en 3x2 figures, en mettant du
quadrillage et en donnant le titre indiqué :
Courbe 1 : = cos ∈ [0, 4π] , titre : ‘Cosinus’
Courbe 2 : = sin ∈ [0, 4π] , titre : ‘Sinus’
π π
Courbe 3 : = tan ∈ [− * , *] , titre : ‘Tangente’
>> subplot(3,2,1)
>> x=0:0.1:4*pi;
>> plot(x,cos(x)), title('Cosinus'), grid
>> subplot(3,2,2)
>> plot(x,sin(x)), title('Sinus'), grid
>> subplot(3,2,3)
>> x=-pi/3:0.1:pi/3;
>> plot(x,tan(x)), title('Tangente'), grid
>> subplot(3,2,4)
>> x=-1:0.1:1;
3
>> plot(x,acos(x)), title('Arccosinus'), grid
>> subplot(3,2,5)
>> plot(x,asin(x)), title('Arcsinus'), grid
>> subplot(3,2,6)
>> x=-sqrt(3):0.1:sqrt(3);
>> plot(x,atan(x)), title('Arctangente'), grid
Exercice 4
# 5#
• Tracer la fonction 4 = pour , ∈ [−4, 4] .
• Donner un titre à chaque axe et un titre à la figure.
>> x=-4:0.2:4;
>> y=-4:0.2:4;
>> [X,Y]=meshgrid(x,y);
>> Z=exp(-X.^2-Y.^2);
>> surf(X,Y,Z) ou bien >> mesh(X,Y,Z)
>> xlabel('Abscisses')
>> ylabel('Ordonnées')
>> zlabel('Hauteur')
4
• Tracer les courbes de niveau de z dans le plan (x, y), tracer 20 lignes iso-valeurs.
>> contour(X,Y,Z,20)
>> contourf(X,Y,Z,20)
>> colorbar
5
Exercice 5
Sur la même fenêtre, en 2x2 figures, tracer sur la première ligne les courbes 3D des
fonctions suivantes et sur la deuxième ligne leurs courbes de niveaux :
4 = + 4 ; 4 = 2 − 5
>> x=-10:0.5:10;
>> y=-10:0.5:10;
>> [X,Y]=meshgrid(x,y);
>> Z=X.^2+4*Y.^2;
>> T=2*X.^2-5*Y.^2;
>> subplot(2,2,1)
>> surf(X,Y,Z) ou bien >> mesh(X,Y,Z)
>> subplot(2,2,2)
>> surf(X,Y,T) ou bien >> mesh(X,Y,T)
>> subplot(2,2,3)
>> contourf(X,Y,Z,20)
>> colorbar
>> subplot(2,2,4)
>> contourf(X,Y,T,20)
>> colorbar
6
CPI - 1ère Année
2019-2020
Corrigé du TP3
Programmer sous Matlab
Exercice 1
1) Ecrire une fonction nommée ’ f ’ qui prend en entrée une variable x et retourne
f(x) = x − 4x − x + 3
Exemple d’exécution :
>> g(1,2)
ans =
13
>> g(0,-3)
ans =
-6
1
Exercice 2
1) Ecrire une fonction nommée ’matdata’ qui prend en entrée une matrice A et
retourne son déterminant, sa transposée et son inverse.
Exemple d’exécution :
>> A=[4 6 ; 3 5]
A =
4 6
3 5
>> [d,B,C]=matdata(A)
d =
2
B =
4 3
6 5
C =
2.5000 -3.0000
-1.5000 2.0000
Exemple d’exécution :
>> u = [5 -2 7 8.3 2 15];
>> [n,x,v]=vectdata(u)
2
n =
6
x =
-2
v =
-2.0000 2.0000 5.0000 7.0000 8.3000 15.0000
Exercice 3
1) Ecrire une fonction nommée ’somme’ qui prend un entier n et retourne la somme:
= 1 + 2 + 3 + ⋯+
Exemple d’exécution :
>> S=somme(3)
S =
14
>> S=somme(5)
S =
55
3
= 1+ + + ⋯+
Exemple d’exécution :
>> S=sommegeo(1,10)
S =
11
>> S=sommegeo(2,4)
S =
31
N.B : Avec l’instruction while, le code s’écrit :
function S = sommegeo(x,n)
S = 0;
i = 0;
while (i <= n)
S = S + x^i;
i = i + 1;
end
end
Exercice 4
1) Ecrire une fonction nommée ’fact’ qui utilise la boucle for pour calculer le
factoriel d’un entier n.
On rappelle que ! = 1× 2 ×…×
4
>> F=fact(5)
F =
120
Exercice 5
Ecrire une fonction nommée ’equation.m’ qui prend comme entrée les
coefficients a, b et c de l’équation + + = 0 et retourne les racines de cette
équation.
Nom du programme « equation.m »
function equation(a,b,c)
% Résolution de l'équation a*x^2+b*x+c=0
delta = b^2 - 4*a*c
if (delta < 0)
disp('Pas de racines reelles')
elseif (delta == 0)
disp('Racine double')
x = -b/(2*a)
elseif (delta > 0)
disp('Deux racines distinctes :')
x1 = (-b-sqrt(delta))/(2*a)
x2 = (-b+sqrt(delta))/(2*a)
end
end
Exemple d’exécution :
>> equation(5,2,3)
delta =
-56
Pas de racines reelles
5
>> equation(1,2,1)
delta =
0
Racine double
x =
-1
>> equation(1,2,-3)
delta =
16
Deux racines distinctes :
x1 =
-3
x2 =
1