Vous êtes sur la page 1sur 34



TPN 1-4 avec solution

TP N1 : introduction à MATLAB

1 But :

Familiariser l'étudiant à l'environnement MATLAB :

 Démarrage de MATLAB
 Description des fenêtres (workspace)
 Utilisation de la ligne de commandes ()
 Les commandes usuelles (help, lookfor,who, whos ,clear,. . .)
 Manipulations des variables, opérations élémentaires

2 Solution Exercice 1

1. Dans l'espace de travail, réalisez quelques opérations arithmétiques simples


entre scalaires à l'aide des opérateurs addition (+), soustraction (-), division (/),
multiplication (*), élévation à la puissance (^).
1 >> 5 ∗ 6
2
3 ans =
4
5 30

Page 1/34
6
7 >> 3+5 ∗ 2^5
8
9 ans =
10
11 163
12
13 >> y=(2+9)/3 %priorite au parenthese
14
15 y =
16
17 3.6667
18
19 >> z=2+9/3
20
21 z =
22
23 5
24
25 >> x=3+9^7
26
27 x =
28
29 4782972
30
31 >> p =(4 ∗ x^2 2∗ x +3)/( x^3+1)
32
33 p =
34
35 8 . 3 6 3 0 e 007
36
37 >>

2. Calculer sous MATLAB la valeur de t et u en fonction de x.


1 >> x=3
2
3 x =
4
5 3
6
7 >> t =(4 ∗ x^2 2∗ x +3)/( x^2+1)
8
9 t =
10
11 3.3000
12
13 >> x=2
14
15 x =

Page 2/34
16
17 2
18
19 >> u = ( x^2+3∗ x +8)/(3 ∗ x^3+5∗ x^2  6)
20
21 u =
22
23 0.4737
24
25 >>

3. La constante pi est prédénie dans MATLAB .Tapez pi ainsi calculer le


volume d'une sphère.
1 >> R=4
2
3 R =
4
5 4
6
7 >> V=4∗ pi ∗R^3/3
8
9 V =
10
11 268.0826
12
13 >>

4. Si aucune valeur n'est aectée à la variable i elle sera considérée comme


étant l'imaginaire pur.
1 >> x=2+5 i
2
3 x =
4
5  2.0000 + 5.0000 i
6
7 >> a=r e a l ( x )
8
9 a =
10
11 2
12
13 >> b=imag ( x )
14
15 b =
16
17 5
18
19 >> X=abs ( x )

Page 3/34
20
21 X =
22
23 5.3852
24
25 >> i =2
26
27 i =
28
29 2
30
31 >> i ^2 % vaut 4
32 ans =
33
34 4
35
36 >> c l e a r i % supprimer la variable i de la memoire
37 >> i ^2 % donc i est consideree comme nombre imaginaire
38
39 ans =
40
41 1
42
43 >>

5. Si vous n'aectez pas le résultat de vos calculs à une variable, il est auto-
matiquement aecté (stocké) dans la variable ans. Vous pouvez vous servir de
cette variable dans le calcul suivant.
1 >> 2+3/(4 ∗ 5)
2
3 ans =
4
5 2.1500
6
7 >> y=ans +20
8
9 y =
10
11 22.1500
12
13 >>

Page 4/34
6. Tapez la ligne d'instructions suivante. Que remarquez vous ?
1 >> (3+5 ∗ 2^5)/5 ; % cacher le resultat avec le pointvirgule
2 >> ans % afficher la valeur de ans
3
4 ans =
5
6 32.6000
7
8 >>

7. Qu'obtient t'on avec les lignes de commandes suivantes


1 >> 1/0 %infini
2
3 ans =
4
5 Inf
6
7 >> 1/0 % moins infini
8
9 ans =
10
11 I n f
12
13 >> 0/0 % non determine (NotANumber)
14
15 ans =
16
17 NaN
18
19 >>

Page 5/34
TP N2 : CALCUL MATRICIEL

3 But :

Savoir eectuer à l'aide de MATLAB des opérations matricielles de façon


compacte, sans programmer de boucles sur les indices.

4 Solution Exercice 1

1. Créer un vecteur ligne de coordonnées contenant les nombres de -5,-4,...,4,5


et déterminer sa taille.
1 >> vec =[  5:5] % debut:fin avec pas par defaut 1
2
3 vec =
4
5 5 4 3 2 1 0 1 2 3 4
5
6
7 >> length ( vec ) % la taille du vecteur est: 11
8
9 ans =
10
11 11
12
13 >>

2. Créer un vecteur colonne de coordonnées contenant les nombres -500,-


499,-498...,499,500 et déterminer sa taille.
1
2 >> c o l = [  5 0 0 : 5 0 0 ] ' ; % on utilise le prime (’) pour
3 >> % avoir un vecteur colonne
4 >> % on a utilise le pointvirgule car le vecteur est long
5 >> length ( c o l ) % sa taille est:1001
6
7 ans =
8
9 1001
10
11 >>

Page 6/34
3. Que fait l'instruction suivante : V = [0 :0.2 :1]
1
2 >>
3 >> V = [ 0 : 0 . 2 : 1 ] % genere un vecteur V de 0 a 1 par pas de 0.2
4
5 V =
6
7 0 0.2000 0.4000 0.6000 0.8000 1.0000
8 >> % on remarque la precision de Matlab par defaut
9 >> % pour les nombres reelles est de 4 chiffres
10 >> % apres la virgule
11 >>

4. Que fait l'instruction suivante : x = [ -1.3, sqrt(3), (1+2+3)*4/5 ] .quelle


est la valeur de x(2)
1 >>
2 >> x = [  1.3 , sqrt ( 3 ) , (1+2+3) ∗ 4/5 ] % affiche le vecteur
3 >> % x en evaluant les expressions dont il contient
4
5 x =
6
7  1.3000 1.7321 4.8000
8
9 >> x ( 2 ) % represente le deuxieme element du vecteur x
10
11 ans =
12
13 1.7321
14
15 >>

5. Créer le vecteur suivant en précisant l'incrément 10.0000


9.5000
9.0000
8.5000
8.0000

1 >>
2 >> Y= [ 1 0 :  0 . 5 : 8 ] ' % debut=10; fin=8; pas=0.5
3
4 Y =
5
6 10.0000
7 9.5000
8 9.0000
9 8.5000
10 8.0000

Page 7/34
5 Solution Exercice 2

Complétez les opérations suivantes en indiquant ce qu'elles réalisent :


1 >>
2 >> V = [ 8 , 1, 13 , 4, 7 , 6 ] % affiche le vecteur ligne V
3
4 V =
5
6 8 1 13 4 7 6
7
8 >> V( 2 ) % affiche la deuxieme valeur de V
9
10 ans =
11
12 1
13
14 >> V( 2 : 4 ) % affiche les valeurs de V entre le 2 et 4 positions.
15
16 ans =
17
18 1 13 4
19
20 >> V( 5 :  2 : 1 ) % commence l’affichage depuis la 5 valeur
21 % avec un decrement de 2 vers la 1 valeur
22 ans = % donc la 5,3 et 1 valeur
23
24 7 13 8
25
26 >> V( 3 : end ) % afficher tous les valeurs du 3 a la fin
27
28 ans =
29
30 13 4 7 6
31
32 >> V( 1 ) = 1 % remplace la premiere valeur par 1
33
34 V =
35
36 1 1 13 4 7 6
37
38 >> V( 7 ) = 3 % du fait que V contient 6 valeur
39 % on va donc ajouter une 7 valeur =3
40 V =
41
42 1 1 13 4 7 6 3
43
44 >>

Page 8/34
6 Solution Exercice 3

Complétez les opérations suivantes en indiquant ce qu'elles réalisent :


1 >>
2 >> x=[1 ; 2 ; 3 ] % vecteur colonne x
3
4 x =
5
6 1
7 2
8 3
9
10 >> y=[4 ; 5 ; 6 ] % vecteur colonne y
11
12 y =
13
14 4
15 5
16 6
17
18 >> x+3 % ajouter 3 aux vecteur x
19
20 ans =
21
22 4
23 5
24 6
25
26 >> x5 % soustraire la valeur 5 du vecteur x
27
28 ans =
29
30 4
31 3
32 2
33
34 >> xy % soustraire y de x
35
36 ans =
37
38 3
39 3
40 3
41
42 >> x+y % somme de x et y
43
44 ans =
45
46 5

Page 9/34
47 7
48 9
49
50 >> z1=x . ∗ y % multiplication element par element de x et y
51
52 z1 =
53
54 4 % 1∗4
55 10 % 2∗5
56 18 % 3∗6
57
58 >> z2 =x . \ y % division element par element de y sur x
59
60 z2 =
61
62 4.0000 % 4/1
63 2.5000 % 5/2
64 2.0000 % 6/3
65
66 >> z3 =x . / y % division element par element de x sur y
67
68 z3 =
69
70 0.2500 % 1/4
71 0.4000 % 2/5
72 0.5000 % 3/6
73
74 >> z4 =x . ^ y % relever valeur par valeur, x au puissance de y
75
76 z4 =
77
78 1 % 1^4
79 32 % 2^5
80 729 % 3^6
81
82 >> length ( z1 ) % taille de z1
83
84 ans =
85
86 3
87
88 >> norm ( z1 ) % norme euclidienne de z1
89
90 ans =
91
92 20.9762
93
94 >> U = l i n s p a c e ( 1 , 2 0 , 5 ) % generer un vecteur contenant
95 % 5 valeur compris entre 1 et 20 avec un pas fixe
96 U =

Page 10/34
97
98 1.0000 5.7500 10.5000 15.2500 20.0000
99
100 >>

7 Solution Exercice 4

1. Créer la matrice A
1234
5678
6082

1 >> % on definit une matrice ligne par ligne


2 >> A=[1 2 3 4 ; 5 6 7 8 ; 6 0 8 2 ]
3 % on separe les colonnes avec ecpace ou virgule
4 % on separe les lignes avec pointvirgule
5 A =
6
7 1 2 3 4
8 5 6 7 8
9 6 0 8 2

2. Créer avec la ligne de commande la plus courte possible la matrice B va-


lant :
123456789
246801234
222222222

1 >> B= [ 1 : 9 ; 2 : 2 : 8 0 : 4 ; 2 ∗ o n e s ( 1 , 9 ) ]
2 % 2:2:8 de 2 vers 8 avec pas de 2
3 B =
4
5 1 2 3 4 5 6 7 8 9
6 2 4 6 8 0 1 2 3 4
7 2 2 2 2 2 2 2 2 2
8
9 >> o n e s ( 1 , 9 ) % commande generant une matrice de 1 ligne et
10 % 9 colonne ne contenant que des 1
11 ans =
12
13 1 1 1 1 1 1 1 1 1

Page 11/34
3. Donnez la ligne de commande permettant de créer la matrice suivante en
utilisant les opérations usuelles sur les matrices :
  
31 31 31 1 0 0 5 8 1
 31 31 31  2  0 1 0 5 0 6 9
31 31 31 0 0 1 7 3 3

1 >> C=31∗ o n e s ( 3 ) % matrice de 3x3 remplit de 1


2 % qu’on multiplie avec 31 donc:
3 C =
4
5 31 31 31
6 31 31 31
7 31 31 31
8
9 >> D=2∗ eye ( 3 ) % commande permettant de generer une matrice
10 % 3x3 identite qu’on multiplie avec 2
11 D =
12
13 2 0 0
14 0 2 0
15 0 0 2
16
17 >> E=[5 8 1 % on peut separer les lignes d’une matrice par
18 0 6 9 % des sauts de lignes
19 7 3 3]
20
21 E =
22
23 5 8 1
24 0 6 9
25 7 3 3
26
27 >> F=C∗D+5∗E % calculer F
28
29 F =
30
31 87 102 67
32 62 92 107
33 97 77 77
34
35 >>

Page 12/34
8 Solution Exercice 5

Complétez les opérations suivantes en indiquant ce qu'elles réalisent :


1 >>
2 >> A=[1 2 3 ; 4 5 6 ] % creation d’une matrice 2 ligne,
3 % 3 colonne A(2x3)
4 A =
5
6 1 2 3
7 4 5 6
8
9 >> A( 2 , 3 ) % afficher la valeur qui se trouve dans la
10 % deuxieme ligne, troixieme colonne
11 ans =
12
13 6
14
15 >> A( 2 , 3)=5 % remplacer la valeur par 5
16
17 A =
18
19 1 2 3
20 4 5 5
21
22 >> A( 3 , 1)=7 % puisque la matrice A contient 2 lignes,
23 % donc on va ajouter une troisieme ligne avec seulement
24 % la premiere valeur definit=7 alors les autres
25 % seront misazeros
26 A =
27
28 1 2 3
29 4 5 5
30 7 0 0
31
32 >> A( 1 , : ) % afficher la premiere ligne de A
33
34 ans =
35
36 1 2 3
37
38 >> A( : , 2 ) % afficher la deuxieme colonne
39
40 ans =
41
42 2
43 5
44 0
45
46 >>

Page 13/34
9 Solution Exercice 6

Opérations sur les matrices :


Soit la matrice A=[1 2 3 ; 4 5 6 ;7 8 9]
1. Dénir la matrice B transposée de A

1 >>
2 >> A=[1 2 3 ; 4 5 6 ; 7 8 9 ]
3
4 A =
5
6 1 2 3
7 4 5 6
8 7 8 9
9
10 >> B=A' % le prime (’) sert a creer une matrice
11 % transposee, les lignes deviendront les colonnes
12 B =
13
14 1 4 7
15 2 5 8
16 3 6 9
17
18 >>

2. Dénir la matrice C comme produit de A par B

1 >> C=A∗B % produit matricielle ligne par colonne


2
3 C =
4
5 14 32 50
6 32 77 122
7 50 122 194
8
9 >>

3. Dénir la matrice D par : D= A.* B ; Comparer C et D

1 >>
2 >> D= A. ∗ B
3
4 D =
5
6 1 8 21
7 8 25 48
8 21 48 81

Page 14/34
9
10 >> % C n’egale pas D car:
11 >> % La matrice C est le resultat d’une multiplication
12 >> % matricielle alors que D d’une multiplication element
13 >> % par element et cela en utilisant le point (.)
14 >> % avant l’operation souhaite multiplication (∗),
15 >> % division (/) ou puissance(^) seulement

10 Solution Exercice 7

1. Soit le vecteur v=[-1 -3 -5 -7],générer la matrice A=[v ;2*v ;3*v ;4*v] Com-
plétez :

1 >>
2 >> v=[1 3 5  7]
3
4 v =
5
6 1 3 5 7
7
8 >> A=[v ; 2 ∗ v ; 3 ∗ v ; 4 ∗ v ]
9
10 A =
11
12 1 3 5 7
13 2 6 10 14
14 3 9 15 21
15 4 12 20 28
16
17 >> % on a declarer une matrice en utilisant un variable qui est
18 >> % le vecteur v
19 >> diag (A)
20
21 ans =
22
23 1
24 6
25 15
26 28
27
28 >> % diagonale d’une matrice est extraite par la commande diag
29 >> % le resultat sera affiche comme vecteur colonne
30 >> A( 2 : 3 , 2 : 4 )
31
32 ans =
33
34 6 10 14

Page 15/34
35 9 15 21
36
37 >> % extraire une sous matrice de la 2 ver la 3 ligne
38 >> % et de la 2 vers 3 colonne aussi
39 >> t r i l (A) % affiche la partie inferieur a la diagonale
40
41 ans =
42
43 1 0 0 0
44 2 6 0 0
45 3 9 15 0
46 4 12 20 28
47
48 >> t r i u (A) % affiche la partie superieur a la diagonale
49
50 ans =
51
52 1 3 5 7
53 0 6 10 14
54 0 0 15 21
55 0 0 0 28
56
57 >> det (A) % calcule le determinant de A
58
59 ans =
60
61 0
62
63 >> inv (A) %calcule la matrice inverse de A
64 Warning : Matrix i s s i n g u l a r t o working p r e c i s i o n .
65
66 ans =
67
68 Inf Inf Inf Inf
69 Inf Inf Inf Inf
70 Inf Inf Inf Inf
71 Inf Inf Inf Inf
72
73 >> % infinie car determinant nulle
74 >>

Page 16/34
2. Générer la matrice M=[ones(5,1) 3.4*eye(5,5) 5*ones(5,2)]
1 >>
2 >> o n e s ( 5 , 1 )
3
4 ans =
5
6 1
7 1
8 1
9 1
10 1
11
12 >> % vecteur colonne de 5 ligne remplit de 1
13 >> eye ( 5 , 5 ) % matrice identite 5x5
14
15 ans =
16
17 1 0 0 0 0
18 0 1 0 0 0
19 0 0 1 0 0
20 0 0 0 1 0
21 0 0 0 0 1
22
23 >> M=[ o n e s ( 5 , 1 ) 3 . 4 ∗ eye ( 5 , 5 ) 5∗ o n e s ( 5 , 2 ) ]
24
25 M=
26
27 Columns 1 through 6
28
29 1.0000 3.4000 0 0 0 0
30 1.0000 0 3.4000 0 0 0
31 1.0000 0 0 3.4000 0 0
32 1.0000 0 0 0 3.4000 0
33 1.0000 0 0 0 0 3.4000
34
35 Column 7 through 8
36
37 5.0000 5.0000
38 5.0000 5.0000
39 5.0000 5.0000
40 5.0000 5.0000
41 5.0000 5.0000
42
43 >>

Page 17/34
11 Solution Exercice Supplémentaire 1


1.Ecrire la commande qui ache la matrice A suivante :
1 2 3
A 0 5 4
7 2 9

1 >>
2 >> A=[1 2 3 ; 0 5 4 ; 7 0 9 ]
3
4 A =
5
6 1 2 3
7 0 5 4
8 7 0 9

2. Complétez et commentez :

1 >> v=diag (A) % affiche la diagonale de la matrice A


2
3 v =
4
5 1
6 5
7 9
8
9 >> b=diag ( v ) % cree une matrice dont la diagonale est v
10 % et le reste zero
11 b =
12
13 1 0 0
14 0 5 0
15 0 0 9
16
17 >> c=diag ( diag (A) ) % equivalent a v suivie par v
18
19 c =
20
21 1 0 0
22 0 5 0
23 0 0 9
24
25 >> A ( 1 : 2 , : ) % sous matrice allant de la 1 ligne vers la 2.
26
27 ans =
28
29 1 2 3
30 0 5 4
31

Page 18/34
32 >> A ( : , 2 : 3 ) % sous matrice allant de la 2 colonne vers la 3.
33
34 ans =
35
36 2 3
37 5 4
38 0 9
39
40 >> A( 1 : 2 , 2 : 3 ) % sous matrice contenant l’intersection des
41 % lignes 1 et 2 avec les colonnes 2 et 3.
42 ans =
43
44 2 3
45 5 4

3. Donnez la commande qui extrait les sous matrices suivantes de la matrice



A.

5 4
0 9

1 >> % on doit extraire l’intersection des lignes 2 et 3


2 >> A( 2 : 3 , 2 : 3 ) % avec les colonnes 2 et 3
3
4 ans =
5
6 5 4
7 0 9


1 3
0 4

1 >> % on doit extraire l’intersection des lignes


2 >> % 1 et 2 avec les colonnes 1 et 3 (la 2 colonne est omis)
3 >> A( 1 : 2 , 1 : 2 : 3 ) % on fait un saut de 2 pour les colonnes
4
5 ans =
6
7 1 3
8 0 4


1 3
7 9

1 >> A ( 1 : 2 : 3 , 1 : 2 : 3 ) % on fait un saut de 2 pour les colonnes


2 ans = % et les colonnes
3
4 1 3
5 7 9

Page 19/34
12 Solution Exercice Supplémentaire 2

Soit le systéme dénit par :



3x 2y  z  1
 2y 4z  2  0
x 2z  5

1. Représenter ce systéme sou forme matricielle (Ax=b), et dénit à l'aide


de Matlab la matrice A et le vecteur b.
  
3 2 1 x 1
 0 2 4   y   2
1 0 2 z 5
1 >>
2 >> A=[3 2  1;0 2 4; 1 0 2]
3
4 A =
5
6 3 2 1
7 0 2 4
8 1 0 2
9
10 >> b = [ 1 ; 2 ;  5 ] % ou b=[1 2 5]’
11
12 b =
13
14 1
15 2
16 5
17
18 >> b=[1 2  5] '
19
20 b =
21
22 1
23 2
24 5
25
26 >>

Page 20/34
2. Quelle est la condition pour que ce systéme admet une solution unique ?
detpAq  ¡ 0
1 >>
2 >> i f ( det (A)~=0) % different de zero
3 f p r i n t f ( 'A admet une solution unique \n ' )
4 else
5 f p r i n t f ( 'A n" admet pas une solution unique \n ' )
6 end
7 % A admet une solution unique
8 >>

3. Résoudre ce systéme à l'aide de Matlab.

1 >> det (A)


2
3 ans =
4
5  6.0000
6
7 >> X=A\b % X contient les valeurs de x,y,z
8
9 X =
10
11 7.0000
12  13.0000
13  6.0000
14
15 >>

Page 21/34
TP N3 : Lecture et Achage de données

13 But :

An de mieux interpréter les résultats, une certain présentation est néces-
saire. Pour cela on va considérer l'utilisation des commandes d'achage de Mat-
lab comme disp, error, fprintf,...

14 Exemple d'introduction

1. An de lire une variable dans Matlab, on utilise la commande input


comme suit :
1
2 >> n=input ( ' donner un nombre entier : ' )
3 donner un nombre e n t i e r : 2
4 % on va stoquer la valeur entree dans n
5 n =
6
7 2
8
9 >>

2. An d'acher une valeur, vecteur, chaine de caractére, on utilise la com-


mande disp comme suit :
1 >> x=2;
2 >> disp ( x ) % afficher la valeur de x
3 2
4
5 >> v=[x 2 ∗ x 4 ] ;
6 >> disp ( v ) % afficher le vecteur v
7 2 4 4
8
9 >> message='C" est bientot fini ' ;
10 >> disp ( message ) % afficher un certain message
11 C" e s t b i e n t o t f i n i
12 >>

3. On peut acher un message d'erreur à l'utilisateur en utilisant la com-


mande error comme suit :

Page 22/34
1 >> n=input ( ' entrer un nombre positive : ' )
2 e n t r e r un nombre p o s i t i v e : 2
3
4 n =
5
6 2
7
8 >> i f ( n<0) error ( 'n doit etre positive ' )
9 end
10 ??? n d o i t e t r e p o s i t i v e
11
12 >> % on a affiche un message d’erreur
13 >>

4. On peut acher un message suivie par une valeur avec la commande


fprintfcomme suit :
1 >> Nom=input ( ' entrer votre nom : ' , 's ' ) ; % pour entrer un message
2 e n t r e r v o t r e nom : M. LICHOURI % on ajoute ’s’ a input
3 >> Tel=input ( ' entrer votre telephone : ' ) ;
4 e n t r e r v o t r e t e l e p h o n e : 12345
5 >> f p r i n t f ( ' votre nom est %s , votre numero est %d\n ' ,Nom, Tel )
6 v o t r e nom e s t M. LICHOURI , v o t r e numero e s t 12345
7 >>

15 Solution Exercice 1 : paramètres d'un cercle

Ecrire un script MATLAB qui aecte à une variable R la valeur 20 puis


aecte à 3 variables D, P et S respectivement les valeurs du diamètre, du péri-
mètre et de la surface d'un cercle dont le rayon est R. On achera à l'écran le
contenu de ces diérentes variables selon le format suivant :
Un cercle de rayon WW a pour diamètre XX, pour circonférence YY
et pour surface ZZ.

1 % Solution Exercice 1 TP3 :Parametre d’un cercle


2 R=input ( ' donner la valeur du rayon R: ' ) ; % lecture de R
3 D=2∗R; % diametre =2∗rayon
4 P=2∗ pi ∗R; % perimetre d’un cercle
5 S=pi ∗R^ 2 ; % surface d’un cercle
6 f p r i n t f ( 'Un cercle de rayon %f a pour diametre %f ,
7 pour circonference %f et pour surface %f .\ n ' ,R, D, P , S )
8 % apres execution
9 % donner la valeur du rayon R: 20
10 % Un cercle de rayon 20.000000 a pour diametre 40.000000,...
11 % pour circonference 125.663706 et pour surface 1256.637061.

Page 23/34
16 Solution Exercice 2

Ecrire un script MATLAB qui étant donnée une valeur réelle x, Calcule la
valeur de Y dénie par :

3 x10 x   1
a 3
x 1 1   x   1
px 3
10q x ¡ 1

1 % Solution Exercie 2 TP3


2 x=input ( ' donner la valeur de x: ' ) ; % lire x
3 i f x<=1
4 y=3+x ^ 1 0 ;
5 e l s e i f x<1
6 y=3/(x +1);
7 else
8 y=sqrt ( x ^3+10);
9 end
10 disp ( y )
11 % execution 3 cas possible
12 % donner la valeur de x: 1
13 % 4
14 %
15 % donner la valeur de x: 0
16 % 3
17 %
18 % donner la valeur de x: 1
19 % 3.3166

17 Solution Exercice 3 : échelle de température

La formule de conversion des températures exprimées en degré Celsius en


degré Fahrenheit est : C  5{9F  32 Ecrire un script MATLAB permettant de
calculer une liste d'équivalence pour des températures comprises entre 0 F et
300 F avec un incrément de 10 F (sous la forme d'un tableau à 2 colonnes , la
première colonne donnera les degrés Celsius, la seconde les degrés Fahrenheit).
1 % solution ex3 TP3
2 fprintf ( ' degre celcius degre Fahreinheit \n ' )
3 f p r i n t f ( ' --------------------------------------------\n ' )
4 for f =0:10:300
5 c=5∗ f /9  32;
6 f p r i n t f ( '%f || %f\n ' , c , f )
7 end
8 % execution
9 % degre celcius degre Fahreinheit
10 % 

Page 24/34
11 % 32.000000 || 0.000000
12 % 26.444444 || 10.000000
13 % 20.888889 || 20.000000
14 % 15.333333 || 30.000000
15 % 9.777778 || 40.000000
16 % ......... || ........

18 Solution Exercice 4 : à faire en devoir

Soit M, la matrice dénie par :



12 24 36 58
 2 6 8 10
7 9 11 13
Ecrire un script MATLAB qui permet d'extraire :
1. L'élément situé dans la troisième ligne et la quatrième colonne.
2. Le vecteur L3 contenant tous les éléments de la troisième ligne.
3. Le vecteur C4 contenant tous les éléments de la quatrième colonne.
4. La sous matrice M1du matrice M, constitué à partir de l'intersection de la
deuxième et la troisième colonne avec la deuxième et la troisième ligne.
5. La matrice M2 dont les lignes sont celles de la matrice M mais achées en
sens inverse.

7 9 11 13
 2 6 8 10
12 24 36 58

1 >> M=[12 24 36 58 ; 2 6 8 1 0 ; 7 : 2 : 1 3 ]
2
3 M=
4
5 12 24 36 58
6 2 6 8 10
7 7 9 11 13
8
9 >> M( 3 , 4 )
10
11 ans =
12
13 13
14
15 >> L3=M( 3 , : ) % 3 eme ligne
16
17 L3 =
18
19 7 9 11 13

Page 25/34
20
21 >> C4=M( : , 4 ) % 4 eme colonne
22
23 C4 =
24
25 58
26 10
27 13
28
29 >> M1=M( 2 : 3 , 2 : 3 )
30
31 M1 =
32
33 6 8
34 9 11
35
36 >> M2=M( end :  1 : 1 , : )
37
38 M2 =
39
40 7 9 11 13
41 2 6 8 10
42 12 24 36 58
43
44 >> M2=[M( 3 , : ) ; M( 2 , : ) ; M( 1 , : ) ]
45
46 M2 =
47
48 7 9 11 13
49 2 6 8 10
50 12 24 36 58
51
52 >>

Page 26/34
TP N4 : Méthodes Numériques

19 But :

1. Tracé des courbes


2. Manipulation des de polynômes
3. Calcul de la valeur approchée d'une racine d'une fonction réelle d'une variable
réelle par les méthodes de Dichotomie de Newton et de la sécante,

20 Solution Exercice 1

Il existe diérentes manières d'évaluer un polynôme et on souhaite program-


mer l'algorithme d'HORNER qui permet de calculer rapidement la valeur d'un
polynôme P en un point x.
Dans un script intitulé  polynome.m  :
1. Créer un polynôme P pxq  2x5 3x4 4x3 8x2 2x 1
2. Créer un vecteur V dont les composantes sont les valeurs de -10 à 10 par pas
de 0.5
3. Calculer les valeurs de P(x) aux points contenus dans le vecteur V
4. Calculer la dérivée dP du polynome P(x) avec la commande polyder
5. Créer une fenêtre graphique pouvant contenir deux sous fenêtres
6. Tracer la courbe de P(x)sur la première sous fenêtre et celle de dP dans la
seconde sous fenêtre sur l'intervalle [-10 , 10] en ajoutant le titre et les légendes
des axes.
7. Trouver les racines de P(x) avec la commande roots et acher les.
8. A l'aide de l'algorithme d'HORNER évaluer P(x) pour x=3 ( la valeur de x
doit être donnée en entrée)
9. Vérier la valeur obtenue à l'aide de la commande de MATLAB polyval
10. Soit le polynôme S pxq  7x4  2x3 x2  5x 3,
11. Calculer la somme de S(x) et P(x) et à l'aide des commandes conv et deconv,
calculer respectivement le produit de S(x) et P(x) et la division de S(x) et P(x)

1 % declaration du polynome P
2 P=[2 3 4 8 2 1 ] ;
3 % Declaration du vecteur V
4 V= [  1 0 : 0 . 5 : 1 0 ] ;
5 % Evaluation du polynome P aux valeurs de V
6 polyval (P ,V ) ;

Page 27/34
7 % Calculer la derivee du polynome P
8 dP=polyder (P ) ;
9 % Creer une figure numerotee 1
10 figure (1)
11 % La subdiviser en deux sousfenetre horizontale
12 subplot ( 1 , 2 , 1 ) % 1 ligne, 2 colonne , 1 sousfenetre
13 % Tracer P(v) en fonction de V
14 plot ( polyval (P ,V) ,V)
15 % ajouter un titre a P
16 t i t l e ( ' graphe de la fonction P ' )
17 % ajouter une etiquete a l’axe des x
18 x l a b e l ( 'axes des x ' )
19 % ajouter une etiquete a l’axe des y
20 y l a b e l ( ' fonction polynome p(x) ' )
21 % selectionner la deuxieme sousfenetre
22 subplot ( 1 , 2 , 2 )
23 % Tracer la derivee dP(v) en fonction de v
24 plot ( polyval (dP ,V) ,V)
25 % ajouter un titre a dP
26 t i t l e ( ' graphe de la fonction derivee P ' )
27 % ajouter une etiquete a l’axe des x
28 x l a b e l ( 'axes des x ' )
29 % ajouter une etiquete a l’axe des y
30 y l a b e l ( ' fonction polynome dp (x) ' )
31 % Calculer les racines du polynome P
32 roots (P)
33 % Representation de HORNER d’un polynome
34 % y =2∗x^5+3∗x^4+4∗x^3+8∗x^2+2∗x+1
35 % y =
36 % x∗(x∗(x∗(x∗(x∗(x∗0+2) + 3) + 4) + 8) + 2) + 1
37
38 % implementation de l’algorithme de horner
39 % son but est de minimiser le nombre de
40 % multiplication en evaluant un polynome P
41 % avec une valeur x
42 x=3;
43 r e s =0;
44 f o r i = 1 : length (P)
45 r e s = r e s ∗ x + P( i ) ;
46 end
47
48 res
49
50 % en utilisant polyval
51 z=polyval (P , x )
52 % declaration du polynome S
53 S=[0 7 2 1 5 3 ]
54 % Calculer la somme de deux polynomes
55 % S et P doivent avoir la meme taille
56 % c’est pourquoi on ajouter un zero

Page 28/34
57 % au debut du polynome S
58 som=S+P
59 % multiplier deux polynomes
60 % leur taille puisse etre different
61 m u l t i=conv ( S , P)
62 % diviser deux polynomes
63 % le polynome en denominateur ne doit pas
64 % commencer par la valeur zero
65 [ Q,R]= deconv ( S , P) % l’ordre est important
66 % Q represente le quotiant
67 % R represente le reste

21 Solution Exerice 2

Soit la fonction f pxq  p5  xqex  3 dénie sur R .


1. Ecrire une fonction sous matlab, qui reçoit comme argument l'abscisse x et
qui retourne la valeur f pxq. (inline)
2. Utilisez la commande fplot de Matlab pour tracer le graphe de la fonction
f pxq dans l'intervalle [-2, 6]. Donner, à l'aide de ce graphe, une première ap-
proximation des racines.
3. Utiliser la commande matlab fzero pour trouver la racine positive de cette
fonction.

1 % ∗∗∗∗∗ ∗∗∗∗∗∗∗∗ ∗∗∗∗∗∗∗∗∗ ∗∗∗∗∗∗∗∗ ∗∗∗∗∗∗∗∗∗ ∗


2 % declaration de la fonction f avec inline
3 f=i n l i n e ( '(5 -x )* exp (x) -3 ' )
4 % appelation d’une figure
5 figure (2)
6 % tracer la fonction f dans l’intervalle [2 6]
7 % avec la commande fplot
8 fplot ( f ,[ 2 ,6])
9 % calculer la racine positive de f a l’aide de fzero
10 % fzero a besoin d’une fonction f et un point initial x0
11 X = f z e r o (@( x )((5  x ) ∗ exp ( x )  3) ,3) %fzero(f,3)

4. Ecrire un programme script Matlab permettant de calculer la racine po-


sitive approchée de f pxq  0 en utilisant la méthode de dichotomie. On donne :
l'intervalle initial [a0,b0] = [4, 6].
Indications :
Utiliser les deux tests d'arrêt suivants :
a) Imposer le nombre d'itérations maximum nitermax =50.
b) En dénissant la valeur de l'erreur absolue ek  |xk  xp k  1q| où xk est la
solution approchée à l'itération k , arrêtez les calculs lorsque ek     10  6 .

1 % Methode de DICHOTOMIE

Page 29/34
2 f=i n l i n e ( '(5 -x )* exp (x) -3 ' ) % declaration de la fonction f avec
3 a0 =4; % inline
4 b0 =6;
5 e r r =1; % une faux valeur pour declencher la boucle
6 xt =4; % pour calculer l’erreur on suppose que la racine
7 % est a0=4
8 i f f ( a0 ) ∗ f ( b0)<0 % condition necessaire pour que f admet une
9 % racine dans [a,b]
10 nitermax =0; % initialiser la valeur du nombre
11 % d’iteration a zero.
12 while ( nitermax <=50 & e r r >10^ 6) % deux condition d’arret
13 % si nombre maximum d’iteration est atteint ou l’erreur
14 % est inferieur a epsilon 0.000001
15 x=(a0+b0 ) / 2 ; % dviviser l’intervalle [a0 b0] sur 2
16 e r r=abs ( xt x ) ; % calculer l’erreur entre deux valeurs
17 % successives
18 xt=x ; % recursivite du calcul
19 nitermax=nitermax +1; % incrementer le nombre d’iteration
20 % par un
21 i f f ( a0 ) ∗ f ( x)<0 % test si l’intervalle [a0 x] contient
22 % la racine
23 b0=x ; % si oui la valeur de b0 est change par x
24 else
25 a0=x ; % si non la valeur de a0 est change par x
26 end
27 end
28 f p r i n t f ( 'la racine approchee est %f\n ' , x ) % afficher
29 % la racine
30 e l s e % changer l’intervalle
31 f p r i n t f ( 'pas de racine trouve dans l" intervalle \n ' )
32 end

22 Solution Exerice 3

En utilisant les fonctionnalités graphiques de MATLAB, localiser la racine


positive de l'équation f pxq  2sinpxq  x.
1 % Solution Exercice 3 TP3
2 % Partie 1: Resolution graphique de f(x)=0
3 % Pour cela on recherche soit la solution
4 % en reperant le point % d’intersection avec
5 % y=0 ou bien utiliser la methode de separation
6 % de racine.
7 % Methode 1:
8 f=i n l i n e ( '2* sin (x)-x ' )
9 figure (1)
10 f p l o t ( f ,[  pi pi ] )
11 t i t l e ( ' methode graphique ' )

Page 30/34
12 grid on
13
14 % Methode 2:
15 x=l i n s p a c e ( pi , pi , 5 0 ) ; % ou x=pi:0.01pi;
16 y1=2∗ s i n ( x ) ;
17 y2=x ;
18 figure (2)
19 plot ( x , y1 )
20 hold on
21 plot ( x , y2 , 'r ' )
22 t i t l e ( ' separation graphique ' )
23 grid on
24 legend ( 'y1 ' , 'y2 ' )
25 hold o f f

Figure 1  Resolution graphique

Page 31/34
Figure 2  Methode de separation de racine

Appliquer la méthode de Newton, pour trouver la valeur approchée de la


racine de f pxq dénie dans l'exercice 1.
Indications : On prendra un test d'arrêt de la forme |xn 1  xn |     10
6
et on prendra soin de prévoir un compteur d'itérations
1 % Solution Exercice 3 TP3
2 % Partie 2: Resolution numerique de f(x)=0
3 % Methode Newton
4 f=i n l i n e ( '(5 -x ).* exp (x) -3 ' ) % declarer la fonction f
5 d f=i n l i n e ( '(4 -x ).* exp (x) ' ) % declarer la fonction derivee df
6 a =4;
7 b=6;
8 eps =10^  6; % la valeur toleree de l’erreur
9 x0=(a+b ) / 2 ; % point initial
10 e r r =1; % pour lancer la boucle
11 nb=0; % initialiser le nombre d’iteration
12 i f f ( a ) ∗ f ( b)<0
13 f p r i n t f ( 'nb x f(x )\ n ' )
14 f p r i n t f ( ' ---------------------------------------\n ' )
15 while ( e r r >eps )
16 nb=nb+1; % incrementer la compteur nb par 1
17 xt=x0 f ( x0 ) / d f ( x0 ) ; % equation de la tangeante
18 e r r=abs ( x0xt ) ; % calcule de l’erreur
19 x0=xt ; % car une methode resursive
20 f p r i n t f ( '%3 d %3.8 f %3.8 f\n ' , nb , xt , f ( xt ) )
21 end
22 else
23 f p r i n t f ( ' changer d '' intervalle ' )

Page 32/34
24 end
25
26 % resultat execution:
27 % f =
28 %
29 % Inline function:
30 % f(x) = (5x).∗exp(x)3
31 %
32 %
33 % df =
34 %
35 % Inline function:
36 % df(x) = (4x).∗exp(x)
37 %
38 % nb x f(x)
39 % 
40 % 1 4.97978616 0.06003273
41 % 2 4.97936489 0.00002555
42 % 3 4.97936471 0.00000000

23 Solution Exerice 4

Soit la fonction f pxq  ex  x4 {2  x2  1 écrire un script ( programme) Mat-


lab permettant de trouver la racine approchée de cette équation par la méthode
de la sécante si elle existe dans l'intervalle[-1 1], en utilisant l'algorithme suivant :

% algorithme de la sécante
a=-1;
b= 1;
eps=0.00001 ;
ecart =|a-b| ;
iter=0;
si f(a).f(b)<0
alors tant que iter<=50 et ecart>eps
faire iter=iter+1 ;
xb=b-(b-a).f(b)/(f(b)-f(a));
ecart=|a-xb|
si f(a).f(xb)<0
alors b=xb ;f(b)=f(xb) ;
sinon a=xb ;f(a)=f(xb) ;
fsi ;
fait ;
ecrire (`la racine approchee est',xb,'le nombre d'iterations est=',iter) ;
sinon ecrire ('pas de racine dans cet intervalle')
fsi;

Page 33/34
1 % Solution Exerice 4 TP3
2 % Resolution Numerique de f(x)=0
3 % Methode de la secante
4 clear all
5 clc
6 f=i n l i n e ( 'exp (x)-x ^4/2 - x ^2 -1 ' )
7 a=1;
8 b= 1 ;
9 eps =0.00001 ;
10 e c a r t =abs ( ab ) ;
11 i t e r =0;
12 i f f ( a ) . f ( b)<0
13 while ( i t e r <=50 & e c a r t >eps )
14 i t e r=i t e r +1 ;
15 xb=b (ba ) ∗ f ( b ) / ( f ( b) f ( a ) ) ;
16 e c a r t=abs ( axb ) ;
17 i f f ( a ) ∗ f ( xb)<0
18 b=xb ;
19 e l s e a=xb ;
20 end
21 end
22 f p r i n t f ( 'la racine approchee est %f , le nombre d ' i t e r a t i o n s
23 e s t=%d\n’,xb,iter) ;
24 e l s e f p r i n t f ( 'pas de racine dans cet intervalle ' )
25 end
26
27 % resultat d’execution:
28 %
29 % Inline function:
30 % f(x) = exp(x)x^4/2x^21
31 %
32 % la racine approchee est 0.000000,le nombre d’iterations est=51

Page 34/34

Vous aimerez peut-être aussi