Vous êtes sur la page 1sur 60

UNIVERSITÉ de NGAOUNDÉRÉ

École de Géologie et d'Exploitation Minière

Cours d'Algorithme et Programmation:

Application sur Matlab

Licence 2

Année Académique 2020/2021

Filières: toutes les spécialités

Enseignant: Mr. MFENJOU Martin Luther


Table des matières

1 Les bases de l'algorithmique 5


1.1 Introduction générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2 Les Algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2.1 Élaboration d'un algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.2.2 Les caractéristiques d'un algorithme . . . . . . . . . . . . . . . . . . . . . . 7

1.2.3 Les types d'algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.3 Structures de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.3.1 Variables et constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

1.3.2 Types de données simples et types de données standards . . . . . . . . . . 9

1.3.3 Types en sous-domaines . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

1.3.4 Types de données structurées . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.4 Opérateurs et fonctions prédénis . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.5 Instructions de contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.5.1 Sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.5.2 Itération . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.6 Procédures et fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.6.1 Procédures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.6.2 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

1.7 Exercices d'entraînements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

2 Programmation 25

1
TABLE DES MATIÈRES 2

2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.2 Vocabulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.3 Les langages de programmation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2.3.1 Les niveaux des langages de programmation . . . . . . . . . . . . . . . . . 27

2.3.2 Les familles des langages de programmation . . . . . . . . . . . . . . . . . 27

2.4 programmation procédurale : intérêt pour les ingénieurs . . . . . . . . . . . . . . . 28

2.4.1 Dénition et avantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

3 MATLAB : Présentations et Généralités 29


3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.1.1 Matlab : choix, atout et domaines cibles . . . . . . . . . . . . . . . . . . . 29

3.2 Installation et présentation de l'environnement de travail . . . . . . . . . . . . . . 30

3.2.1 Installation sous Windows et Présentation de l'environnement de travail . . 30

3.2.2 Aide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

3.2.3 Variables scalaires, workspace . . . . . . . . . . . . . . . . . . . . . . . . . 31

3.2.4 Variables spéciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.2.5 Caractères spéciaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.2.6 Nombres complexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.2.7 Données logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.2.8 Mots clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

3.3 Opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.3.1 Les opérateurs élémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . 34

3.3.2 Les opérateurs logiques et de relation . . . . . . . . . . . . . . . . . . . . . 34

3.4 Quelques fonctions mathématiques usuelles . . . . . . . . . . . . . . . . . . . . . . 34

3.4.1 Fonctions mathématiques usuelles . . . . . . . . . . . . . . . . . . . . . . . 34

3.4.2 Fonctions matricielles usuelles . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.5 Domaines d'applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

4 Vecteurs et Matrices 36
4.1 Vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
TABLE DES MATIÈRES 3

4.1.1 Création d'un vecteur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

4.1.2 Addressages et indexages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

4.1.3 Opérations sur les vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

4.2 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.2.1 Création d'une matrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.2.2 Addressages et indexages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

4.2.3 Matrices particulières . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.2.4 Caractéristiques d'une matrice . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.2.5 Opérations sur les matrices . . . . . . . . . . . . . . . . . . . . . . . . . . 39

4.3 Applications des matrices et des vecteurs aux calculs polynômiaux . . . . . . . . . 39

4.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

5 Programmation MATLAB 44
5.1 Entrées-Sorties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

5.2 M-les . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

5.3 Structures de branchements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

5.3.1 If . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

5.3.2 Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

5.4 Boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

5.4.1 While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

5.4.2 For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

5.5 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

6 Graphismes 54
6.1 Graphiques à 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

6.2 Graphiques à 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Table des gures

1.1 Notation graphique de si . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.2 Notation graphique de si sinon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3 Notation graphique de la boucle tantque . . . . . . . . . . . . . . . . . . . . . . . 16

1.4 Notation graphique de la boucle repeter . . . . . . . . . . . . . . . . . . . . . . . 16

3.1 Environnement Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4
Chapitre 1

Les bases de l'algorithmique

1.1 Introduction générale


L'une des raisons de l'emergence et de l'utilisation de l'informatique dans tous les domaines

d'activités est sa capacité à proposer un ensemble de concepts permettant la formalisation et la

mathématisation des domaines d'applications ainsi que la construction des modèles.

En eet, Pour qu'un problème soit modélisé et exécuté sur un ordinateur, il faudrait qu'il soit

formalisé dans les détails les plus ns. C'est ainsi que les méthodes formelles (sont des techniques

permettant de raisonner rigoureusement, à l'aide de la logique mathématique, sur des programmes

informatiques ou des matériels électroniques, an de démontrer leur validité par rapport à une

certaine spécication) sont utilisées pour faciliter la transformation de la solution à un problème

selon des règles formelles en un algorithme qui par la suite pourra être traduit dans un langage

de programmation an d'être exécuté par un ordinateur de manière automatique.

L'algorithmique est une discipline qui permet de construire un traitement informatique en ana-
lysant ses diérentes tâches élémentaires et ce dans un langage proche du langage naturel. C'est

la branche de l'informatique qui étudie les algorithmes. Elle se penche sur leur conception, leur

complexité (La complexité algorithmique permet de mesurer les performances d'un algorithme et

5
CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 6

de le comparer avec d'autres algorithmes réalisant les mêmes fonctionnalités), leur ecacité,...etc.

L'algorithmique cherche la manière la plus optimale pour calculer des solutions pratiques à un

problème de calcul.

1.2 Les Algorithmes


Un algorithme est une suite d'actions ou d'instructions qui doivent être exécutées dans un
ordre bien déterminé pour résoudre une ou un ensemble de tâches précis. C'est un jeu de règles ou

de procédures bien déni qu'il faut suivre pour obtenir la solution d'un problème dans un nombre

ni d'étapes.

1.2.1 Élaboration d'un algorithme


L'élaboration d'un bon algorithme passe par un certain nombre d'étapes.

1. Lire et bien comprendre l'énoncé du problème à résoudre : il est question ici de faire

une analyse détaillée du problème à resoudre. On doit être capable à la n de cette étape

de savoir si notre problème peut être traité via un programme informatique ; s'il existe un

algorithme permettant de formaliser le problème et de le resoudre.

2. Décrire les résultats à obtenir : puisque notre objectif est d'escompter un résultat ou

un ensemble de résultats précis, il importe que celui-ci soit bien décrit et il ne faudrait

pas oublier le moindre détail. Ceci an d'avoir un idée sur les éléments mathématiques et

logiques qui pourront être utilisés pour y arriver et surtout savoir à quel ensemble appartient

ce résultat.

3. Décrire les données nécessaires pour obtenir ces résultats : il s'agit de préciser

l'ensemble de données d'entrées (les arguments) pour exécuter le programme qui naîtra de

l'écriture de notre algorithme.


CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 7

4. Écrire l'algorithme proprement dit : C'est l'étape où on utilise un langage proche du

langage naturel (pseudo-code) pour écrire l'algorithme.

La structure globale d'un algorithme est la suivante : son nom, la déclaration des variables et des

constantes, les suites d'opérations à exécuter.

Algorithme sonnom
Constante : k=10 ;

Variable : variable1 : type1 ; variable2 : type2.

Début
Instruction(1) ;

Instruction(2) ;

.... ;

.... ;

Instruction(n-1) ;

Instruction(n) ;

Fin.

1.2.2 Les caractéristiques d'un algorithme


L'algorithme est un moyen pour le programmeur de présenter son approche du problème à

d'autres personnes. En eet, un algorithme est l'énoncé dans un langage bien déni d'une suite

d'opérations permettant de répondre au problème. Un algorithme doit donc être :

1. Lisible : l'algorithme doit être compréhensible même par un non-informaticien

2. De haut niveau : l'algorithme doit pouvoir être traduit en n'importe quel langage de

programmation, il ne doit donc pas faire appel à des notions techniques relatives à un

programme particulier ou bien à un système d'exploitation donné.

3. Précis et concis : chaque élément de l'algorithme ne doit pas porter à confusion, il est

donc important de lever toute ambiguïté. Et surtout, un algorithme ne doit pas dépasser
CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 8

une page. Si c'est le cas, il faut décomposer le problème en plusieurs sous-problèmes.

4. Structuré : un algorithme doit être composé de diérentes parties facilement identiables.

5. Rapide : La rapidité d'un algorithme est un élément d'un tout dénissant les qualités de

celui-ci.

6. En mesure de se terminer : Un bon algorithme doit se terminer après un nombre ni

d'opérations.

1.2.3 Les types d'algorithme


Les algorithmes séquentiels : il s'agit d'un algorithme où les étapes d'exécution se suivent

Les algorithmes parallèles : ici certaines étapes sont exécutées l'une à côté de l'autre

Les algorithmes récursifs : ce sont des algorithmes qui s'appellent eux-mêmes

1.3 Structures de données

1.3.1 Variables et constantes


Variables

Une variable est un objet dont le contenu peut être modié par une action durant l'exécution

d'un algorithme. Il s'agit une zone mémoire dans laquelle on peut mémoriser de façon temporaire

une valeur pour une exploitation ultérieure. Son contenu peut varier durant le déroulement de

l'algorithme. Chaque variable est caractérisée par :

 un nom : Encore appelé identicateur, le nom d'une variable permet de la distinguer

d'une autre. Ce nom est composé de lettres non accentuées, de chires et du caractère _

dans un ordre quelconque sauf pour le premier caractère qui ne peut pas être un chire.

Les lettres peuvent être en minuscule ou en majuscule. Mais lorsqu'on nomme une variable
CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 9

ab, on ne peut pas y faire référence dans la suite du programme en utilisant Ab.

Exemple : nb_élèves, note.

 un type : il s'agit de l'ensemble au quel appartiennent les valeurs que pourront prendre

une variable au long du déroulement de l'algorithme

Constantes

Une constante est une donnée xe qui ne varie pas ou encore qui n'est pas modié durant

l'exécution d'un algorithme. Il s'agit d'une zone mémoire dans laquelle on peut mémoriser une

valeur qui ne varie pas durant le déroulement de l'algorithme. Une constante est caractérisée par

son nom et sa valeur (xe).

1.3.2 Types de données simples et types de données standards


Types de données simples

1. Les énumérations : Ils s'agit des types généralement dénis par le programmeur où il

énumère un certains nombre de valeurs ni (généralement des données qui ne peuvent pas

être déni grâce aux types standards) que pourront avoir certaines variables lors du dérou-

lement de l'algorithme ou lors de l'exécution de son programme.

Exemple : TYPE Minerai= {Diamant, Or, Argent, Fer}

Types de données standards

Quant aux types de données standards, il s'agit des types de données dénis sur la plupart

des langages de programmation ; qui généralement, sont les plus sollicités par les programmeurs

(débutants et programmeurs ayant un niveau moyen).

1. Les entiers : c'est le sous-ensemble des entiers et la cardinalité dépend de la réalisation


CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 10

concrète de chaque ordinateur. Par ailleurs certains langages de programmation orent en

fonction de la cardinalité et des nombres à exploiter par le programmeur, plusieurs sous-

ensembles d'entiers. Nous apporterons des éclaicissements dans les chapitres qui suivront.

2. Les booléens : c'est le type dont les valeurs sont vrai ou faux. Les comparaisons sont des
opérations qui donnent un type booléen. Le résultat d'une variable peut être assignée à une

variable, ou bien elle peut être utilisée dans une expression booléenne.

3. Les nombres réels : c'est le sous-ensemble des nombres réels. Si l'on imagine que pour

les nombres entiers, le résultat de la division est exacte, il est accepté que dans la division

des nombres réels des erreurs par arrondi sont possibles. Les erreurs apparaissent à cause

d'un calcul avec un nombre limité de réels.

4. L'ensemble des caractères : c'est le type de données pour les caractères. Il couvre les

lettres (les majuscules, les minuscules et les caractères accentués), les chires et quelques

signes graphiques. Les sous-ensembles des lettres et des chires sont ordonnés et continus.

1.3.3 Types en sous-domaines


Dans plusieurs cas, une variable ne prend que des valeurs d'un sous-domaine dans un intervalle

bien déni. Ceci est présenté par la dénition d'un sous domaine avec la présentation des bornes

min et max.

Exemple : TYPE année=1900 .. 2012

TYPE lettre='A' .. 'Z'


CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 11

1.3.4 Types de données structurées


Tableaux

Encore appelée variable indicée, un tableau est "une variable" qui permet aux programmeurs

de regrouper des variables de même types.

C'est l'exemple d'un tableau de réels que l'on peut dénir pour manipuler par exemple des données

liées aux densités des minerais dans programme.

Exemple : d[25] : reels

Le programme allouera 25 emplacements mémoire pour les réels de la variable d. Ainsi, en fonction
de ses besoins, on peut dénir un tableau multidimensionnel.

Enregistrements

Un enregistrement est un type de données structurées qui sert à rassembler dans un même type,

une structure de données de types diérents se rapportent à un même sujet. Les enregistrements

sont déclarés de la manière suivante :

TYPE nom_enregistrement : ENREGISTREMENT

donnée1 : type1

donnée2 : type2

...

donnéen : typen

FIN ENREGISTREMENT

Exemple : Prenons par exemple la cas où nous voulons écrire un algorithme qui doit manipuler

les opérations sur les minérais. On peut dénir un enregistrement pour ceux-ci :
CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 12

TYPE densité : ENREGISTREMENT


nom : caractère

couleur : Color

densité : réel

dureté : réel

éclat : Eclat

FIN ENREGISTREMENT

L'utilisation d'un enregistrement passe par la déclaration d'une variable de ce type.

variable s : densité.

Ensembles

Les mathématiques dénissent un ensemble comme une collection d'objets sans répétition. Il

n'existe pas à priori de relation entre les éléments si ce n'est leur appartenance commune à l'en-

semble. En programmation, il permet de dénir un ensemble de valeurs nis qu'on peut réaliser les

opérations d'union, d'intersection, de dierence et d'appartenance sur les variables appartenant à

un même ensemble.

Exemple : TYPE ensJour= ensemble allant de 0 à 31.

1.4 Opérateurs et fonctions prédénis


En algorithmique, les opérateurs les plus utilisés, c'est à dire ceux qu'on rencontre dans tous

les langages sont dénis. Ainsi, avons-nous :

 les opérateurs arithmétiques :


 + : addition

 - : soustraction
CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 13

 * : multiplication
 / : division

 les opérateurs logiques : et, ou, non


 L'aectation par ←−.
 Les opérateurs de comparaisons, nous avons : >, <, =, ≤, ≥, 6=
Par ailleurs, il en est de même pour les fonctions élémentaires :

 les fonctions trigonométriques : sin(), cos(), tan(), cotan(), arctan(), arcsin(), arccos()

 les fonctions mathématiques : modulo, factorielle(), carrée(), racine(), puissance()

 la fonction de lecture : lire()

 la fonction d'écriture : ecrire()

1.5 Instructions de contrôle

1.5.1 Sélection
Elle ore le choix sur les opérations à exécuter.

si ... alors ...

Elle ne présente pas d'alternative. sa notation graphique La notation graphique correspondante

est celle de la gure 1.1.

Figure 1.1  Notation graphique de si


CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 14

si ... alors ...sinon

Elle représente une alternative. Sa notation graphique correspondante est celle de la gure 1.2

Figure 1.2  Notation graphique de si sinon

Les choix multiples

4 les choix multiples : Ils permettent de proposer un certains nombre d'actions selon le

contenu d'une variable donnée. Elle a la structure suivante :


CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 15

Suivant variables faire


valeur1 : action 1
valeur2 : action 2
...

valeurn : action n
sinon : action
Finsuivant
Une action ici est soit une expression, soit une instruction ou suite d'instructions, soit un algo-

rithme.

1.5.2 Itération
Elle permet de repéter un traitement tant qu'une condition est vériée.

tant que ...faire

Elle place le test avant le traitement. Sa structure est la suivante :

Tant que condition faire


Action 1 ;

Action 2 ;

... ;

Action n ;

Fintantque
Cette structure est utilisée lorsque l'action peut être exécutée de zéro en n fois (instructions

permettant la sortie de la boucle). La notation graphique de cette boucle est celle la gure 1.3
CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 16

Figure 1.3  Notation graphique de la boucle tantque

repeter ...jusqu'à

Elle place le test après le traitement ; La condition est testée après l'exécution de l'action

dénie. Sa structure peut être utilisée lorsque l'action peut être exécutée 1 à n fois. La notation

graphique de cette boucle est celle la gure 1.4

Figure 1.4  Notation graphique de la boucle repeter

'pour'

Elle permet de faire une itération selon un pas (incrémenter le contenu d'une variable au ni-

veau de l'en-tête de la boucle) bien déni jusqu'à une certaine condition d'arrêt. Elle se présente

généralement sous la forme suivante :

Pour identiant De valeur-initiale A valeur-nale (PAS DE incrément) Faire


Action ;

Finpour
CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 17

Cette structure permet de répéter une action un nombre connu de fois. Identicateur est de type

entier Valeur-initiale et valeur-nale sont des constantes ou des variables. L'incrément est la valeur

d'augmentation ou de diminution progressive de l'identiant (entier positif ou négatif ) par défaut 1.

1.6 Procédures et fonctions


L'une des techniques utilisées de nos jours en programmation est la division du programme

en sous programme ou module ceci dans le but de faciliter sa maintenance, de réduire les lignes

de code dans le programme (dans le cas où la certaines sont utilisées à plusieurs niveaux dans le

programme) et surtout d' assurer la lisibilité de celui-ci. Ainsi, rencontre-t-on les procédures et les

fonctions. La diérence fondamentale entre les deux est que la derniere renvoie une valeur.

1.6.1 Procédures
Structure d'une procédure dans un algorithme :
Algorithme : Test.
Variable : Var1 : type1 ; Var2 :type2.
Procédure p (var1 : type3, var2 : type4) ;
Débutprocedure
instructions ;

Finprocedure
Début /* Programme proprement dit*/
instructions ;

p (Var1, Var2) ;

Fin
CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 18

1.6.2 Fonctions
Structure d'une fonction dans un algorithme :
Algorithme : Test.
Variable : Var1 : type1 ; Var2 :type2.
fonction f (var1 : type3, var2 : type4) :type1 ;
Débutfonction
instructions ;

f←−expression ;

Finfonction
Début /* Programme proprement dit*/
instructions ;

Var1←− f(Var1, Var2) ;

Fin

1.7 Exercices d'entraînements


1. Écrire un algorithme qui permute le contenu de deux variables entières

2. Écrire un algorithme qui recherche un élément dans un tableau d'entiers

3. Écrire un algorithme qui recherche le plus petit élément d'un tableau d'entiers

4. Écrire un algorithme qui recherche l'élément maximum dans tableau d'entiers

5. Écrire un algorithme qui calcule la formule structurale d'un minéral

6. Écrire un algorithme qui permet de lire 3 réels a, b et c puis les acher dans l'ordre croissant

7. Écrire un programme qui lit deux réels a et b comme étant les deux cotés droits d'un

triangle rectangle puis d'acher la longueur de l'hypoténuse correspondante


CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 19

8. Écrire un algorithme qui resoud une équation du type ax2 +bx+c=0 où x est l'inconnu.
Il faudra au préalable lire les coecients a,b,c.

9. Écrire un algorithme qui détermine si une année est bissextile

10. Écrire un algorithme qui permet de lire une lettre puis ache s'il s'agit d'une voyelle ou

d'une consonne

11. On sait que les minéraux sont le plus souvent des combinaisons d'un nombre plus ou moins

important d'éléments et parfois n'en comporte qu'un seul.

Écrire un algorithme qui permet d'identier une roche grâce aux minéraux qui le compose.

12. Écrire un algorithme qui calcule le prix d'un certain nombre de photocopies en appliquant

le tarif suivant :

 Les 10 premières coûtent 100 francs

 Les 20 suivantes 30 francs

 Et toutes les autres 15 francs

13. Écrire un algorithme qui détermine la catégorie sportive d'un enfant selon son âge :

 poussin de 6 à 7 ans

 pupille de 8 à 9 ans

 minime de 10 à 11 ans

 cadet de 12 à 14 ans

1 1
14. Écrire un algorithme qui calcule l'énergie selon la loi se Stareld : E=K(
x2
− x1
). où x1
représente la taille initiale des particules et x2 représente la taille nale des particules

15. Écrire un algorithme qui détermine l'énergie par calcul thermodynamique : S = ( 65 ∗ QQr ) +
( 65 ∗ V
Vr
) avec :
* Qr = 1152Cal/gr
* Vr = 863L/kg
Q : La quantité de chaleur dégagée par la détonation

V : Le volume de Gaz
CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 20

16. Écrire un algorithme qui calcule le PGCD et le PPCM de deux nombres entiers positifs

non nuls.

17. Écrire un algorithme qui ache la table de multiplication d'un nombre n quelconque.

18. Écrire un algorithme qui calcule les n premiers termes d'une suite arithmétique

19. Écrire un algorithme qui calcule les n premiers termes d'une suite géométrique

20. Pour réaliser un essai mécanique, un élément de volume representatif du matériau doit être

utilisé an que les hypothèses des milieux continus soient satisfaites : Écrire un algorithme

Type de matériau Type et taille des hétérogénéités Élément du volume


caractéristique
Métaux et alliages grain : 0,001 à 0,1 mm 0,5 x 0,5 x 0,5 mm

Polymères molécule : 0,01 à 0,05 mm 1 x 1 x 1 mm

Bois bres :0,1 à 1 mm 10 x 10 x 10 mm

Béton granulats≈ 10mm 100 x 100 x 100 mm

qui prend en entrée le type de matériau et qui ache le type et la taille des hétérogénéités

puis l'élément du volume caractéristique.

21. Écrire une fonction qui prend en entrée un entier a et retourne cet entier à l'envers.

22. Deux nombres sont opposés si leur somme est égale à 0. Deux nombres sont inverses si leur

produit est égal à 1. Écrire un algorithme où a et b sont deux nombres qui retourne vrai si

a et b sont inverses ou opposés. Faux sinon.

23. Soit f(n), déni par :



n − 10 si n > 10

(1.1)
f (f (n + 11)) sinon

 Que vaut f(96) ?

 Donner une forme recursive de cette fonction.


CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 21

24. Écrire un algorithme qui calcule le plus grand écart dans un tableau de 1000 entiers (l'écart

est la valeur absolue de la diérence de deux éléments)

25. Écrire un algorithme qui demande un nombre de départ et qui ensuite écrit la table de

multiplication de ce nombre.

26. Les tarifs d'aranchissement d'une lettre sont les suivants :

 20 g à 280 FCFA

 à part 20 g, mais en dessous de 50 g à 440 FCFA

 à partir de 50 g à 670 FCFA

Écrire un algorithme qui prend le poids d'une lettre et ache le montant d'aranchissement

de la lettre

Pn 1
27. Écrire un algorithme qui calcule Hn = k=1 k
Pn
28. Écrire un algorithme qui calcule : i=1 u(i) ∗ v(i) où u et v sont deux tableaux d'entiers

de même taille.

xk
Pn Pn
29. Écrire un algorithme qui calcule : y=exp(x)= k=0 Uk = k=0 k!

k x2k+1
Pn
30. Écrire un algorithme qui calcule : y=sin(x)= k=0 (−1) (2k+1)!

k x2k
Pn
31. Écrire un algorithme qui calcule : y=cos(x)= k=0 (−1) (2k)!

32. Écrire un algorithme qui interroge un étranger sur son âge et son sexe et lui annonce s'il

doit payer l'impôt, sachant que :

 Les habitants de 20 ans et plus paient l'impôt

 Les habitantes de plus de 18 ans et de moins de 35 ans paient l'impôt

 Les autres sont dispensés d'impôt

33. Écrire un algorithme qui demande un nombre entier positif N, puis qui calcule et ache :

 S1=1+2+3+ ...+ N

 S2 = 12 + 22 + 32 + ... + N 2
 S3=1x2x3x...xN

1 1 1
 S4 = 1 + sqrt(2)
+ sqrt(3)
+ .... + sqrt(N )
CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 22

34. Écrire un algorithme qui prend un tableau de N entier qui :

 Calcule leur somme

 Calcule leur moyenne

 Calcule leur variance

 Compte ses éléments non nuls

 Compte ses éléments nuls

 Compte ses éléments pairs et ses éléments impairs

35. Écrire un algorithme qui prend en entrée 15 teneurs et qui ache la teneur la plus grande.

(Les teneurs sont de type réel)

36. Écrire un algorithme qui prend en entrée 15 teneurs et qui ache la teneur la plus petite.

(Les teneurs sont de type réel)

37. Écrire un algorithme qui détermine le ph selon sa nature (si elle est basique ou acide) et

en fonction de la quantité de matière (soit de ions H3 O+ etOH − ) et de son volume.

38. Écrire un algorithme qui calcul la masse volumique (en fonction de sa masse et de son

volume ) d'un mineral et en fonction de sa densité vous pourrez faire des supposition sur

la nature du mineral (la densité des cristaux est généralement autour de deux valeurs :2, 7

et autour de 6).

(a) Dans un premier temps écrire l'algorithme sans utiliser les fonctions et les procédures

(b) Ensuite, écrire un algorithme où sont dénies deux fonctions : une pour calculer la masse

volumique et l'autre pour calculer la densité.

(c) Enn, écrire un algorithme où sont dénies deux procédures : une pour calculer la masse

volumique et l'autre pour calculer la densité

39. Écrire un algorithme qui met à zéro les éléments de la diagonale d'une matrice carrée

d'ordre 5.

40. Écrire un algorithme qui multiple une matrice carrée d'ordre 5 par un réel non nul.

41. Écrire un algorithme qui réalise l'addition de deux matrices carrées d'ordre 5.
CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 23

42. Écrire un algorithme qui réalise la multiplication de deux matrices carrées d'ordre 5.

43. Écrire un algorithme qui reçoit deux entiers strictement positifs x et y puis calcule xy

44. Une salle de classe dans un établissement est identiée par le numéro de l'étage (0,1,

...), son numéro d'identication dans l'étage (1,2,...), sa capacité et son nom, sa date de

construction et sa position géographique. Une date est déterminée par un jour (entier), un

mois (chaîne de caractères), une année (entier). Une position géographique est caractérisée

par sa latitude et sa longitude (qui s'exprime en dégré,minute, seconde), et sa direction

(nord,sud,ouest,est).

 Dénir les types Date, posgeographique,bâtiment et classe

 Dénir un type tableau à une dimension permettant de stocker les informations sur les

classes d'un établissement

45. Écrire un algorithme qui lit un entier strictement positif n≤50 puis initialialise les n pre-

mières cases d'un tableau par des réels saisi par l'utilisateur. L'algorithme ache ensuite

le carré des nombres positifs du tableau.

46. Le couple de résistance au roulement Cf permet d'évaluer la résistance générale à l'avance-

ment (ou rotation) d'un roulement. Sa valeur est :

Cf= f.Fr.Rm
avec : Rm est le rayon moyen =(d+D)/2. Fr est la charge radicale exercée. f, le frottement

interne du roulement est déni par :

 pour les billes, f ≈ 0, 0015


 pour les rouleaux,f ≈ 0, 002
 pour les aiguilles, f ≈ 0, 004
Écrire un algorithme qui calcule Cf.

47. Écrire un algorithme qui prend entrée la masse volumique d'un uide ρ et sa viscosité

dynamique µ puis qui calcule le coecient de viscosité cinématique v : v=µ/ρ


48. Écrire un algorithme qui détermine le nom d'une roche en fonction de sa composition

minéralogique, de sa texture et de son mode de formation


CHAPITRE 1. LES BASES DE L'ALGORITHMIQUE 24

49. Écrire un algorithme qui calcule la porosité d'une roche en de son volume à vide Vv et de

Vv
son volume total Vt (la porosité n= ).
Vt

50. Écrire un algorithme qui calcule la masse volumique d'un matériau en fonction de sa masse

solide Ms et de son volume Vs

51. Écrire un algorithme qui calcule la teneur en eau W en fonction de sa masse en eau Mw et

Mw
la masse du solide à seconde (W= ).
Ms

52. Écrire un algorithme qui calcule la diusion thermique a dans un solide en fonction de la
λ
conductivité λ, la masse volumique ρ et de la chaleur spécique C. a=
ρC
Chapitre 2

Programmation

2.1 Introduction
Comme nous le savons, les applications de l'ordinateur sont nombreuses. Nous pouvons citer :

l'accès à l'internet, l'envoie de courrier électronique, la création des sites web, l'archivage et la

retouche des photos, la bureautique, la conception assistée par ordinateur (CAO), le dessin assisté

par ordinateur (DAO), l'analyse numérique et bien d'autres. Si tous ces services sont rendus par un

ordinateur, c'est bien grâce à la programmation. La programmation est une activité qui consiste

à écrire ou à réaliser des programmes. Un programme quant à lui est un algorithme écrit dans un

langage de programmation et qui resoud un problème(ou un ensemble de problèmes) donné(s).

L'objectif de ce chapitre est de présenter :

 le vocabulaire rencontré en programmation

 les concepts utilisés dans la programmation

 la programmation procédurale et son importance dans la vie professionnelle d'un ingénieur

25
CHAPITRE 2. PROGRAMMATION 26

2.2 Vocabulaire
Il est question ici d'habituer les étudiants aux termes utilisés en programmation.

+langage de programmation : C'est l'intermédiaire entre l'humain et la machine, il permet

d'écrire dans un langage proche de la machine mais intelligible par l'humain les opérations que

l'ordinateur doit eectuer. Ainsi, étant donné que le langage de programmation est destiné à l'or-

dinateur, il doit donc respecter une syntaxe stricte.

La façon d'écrire un programme est intimément liée au langage de programmation que l'on a

choisi, car il en existe énormément. Les langages de programmation les plus connus sont : Pascal,

C, Fortran, C++, Java, Scilab, Matlab, Haskell, C#, Python.

+Environnement de programmation : Encore appelé environnement de développement in-

tégré, il s'agit d'un logiciel qui facilite l'écriture et la mise au point d'un programme grâce à des

outils plus ou moins sophistiqués :

 éditeur syntaxique : pour permettre de saisir le texte du programme


 débogueur : pour suivre pas à pas le déroulement du programme

+code source : On appelle code source l'ensemble d'instructions écrits dans un langage de pro-
grammation

+chiersource : il s'agit du chier qui contient le code source d'un programme


+compilateur : c'est un programme qui transforme le code source en code binaire, qui peut alors
être exécuté par le processeur.

+compiler un programme : il s'agit d'une opération qui consiste pour le compilateur à vérier
si le programme est syntaxiquement correct.

+exécuter un programme : elle consiste à lancer le chier exécutable créé après la compilation.
CHAPITRE 2. PROGRAMMATION 27

2.3 Les langages de programmation

2.3.1 Les niveaux des langages de programmation


On rencontre deux niveaux de langages de programmation : les langages de niveau élévé,
et les langages de bas niveau. Les langages de niveau élevé sont des langages plus facilement
compris par l'usager, par exemple pour prendre le contenu d'une zone de mémoire A et le mettre

dans une zone de mémoire B nous n'avons qu'à écrire : B = A. Il existe des milliers de langages

de niveau élevé, pour tous goûts et toutes applications dont plus connus : C, C++, Pascal, Java,

python.

Les langages de bas niveau sont ceux-là qui sont proches de la machine, les instructions sont

élémentaires. Le langage assembleur est le plus connu des langages bas niveau.

2.3.2 Les familles des langages de programmation


On distingue habituellement deux grandes familles de langages de programmation, selon la

manière avec laquelle les instructions sont traitées : les langages impératifs, les langages fonction-

nels.

Un langage impératif organise le programme sous forme d'une série d'instructions, regroupées par

blocs et comprenant des sauts conditionnels permettant de revenir à un bloc d'instructions si la

condition est réalisée. Il s'agit historiquement des premiers langages, même si de nombreux lan-

gages modernes utilisent toujours ce principe de fonctionnement.Les langages impératifs structurés

sourent néanmoins d'un manque de souplesse étant donné le caractère séquentiel des instructions.

Un langage fonctionnel (parfois appelé langage procédural) est un langage dans lequel le pro-

gramme est construit par fonctions, retournant un nouvel état en sortie et prenant en entrée la

sortie d'autres fonctions. Lorsque la fonction s'appelle elle-même, on parle alors de récursivité.
CHAPITRE 2. PROGRAMMATION 28

2.4 programmation procédurale : intérêt pour les ingénieurs

2.4.1 Dénition et avantages


La programmation procédurale est un paradigme de programmation basé sur le concept d'appel

procédural (appel des procédures). Elle présente plusieurs avantages :

 Elle ore la possibilité de réutiliser le même code à diérents emplacements dans le pro-

gramme sans avoir à le retaper

 Elle permet de réduire la taille du code source

 Elle permet aussi de suivre de façon plus simple l'exécution du programme

Pourquoi opter pour la programmation procédurale ? En eet, dans le domaine minier, on réalise

beaucoup de simulation (mathématiques, mécanique, hydrologie, géologie, chimie, informatique).

Il importe d'apprendre aux étudiants une méthode de programmation où les environnements

et les langages qui sont utilisés disposent déjà d'un ensemble de fonctions liées à leur domaine

d'activité (fonctions matricielles, fonctions vectorielles, fonctions trigonométriques, fonctions liées

aux graphiques en 2D et 3D). Plusieurs logiciels sont utilisés pour la programmation procédurale.

Pour ce cours nous nous interessons à Matlab.


Chapitre 3

MATLAB : Présentations et Généralités

3.1 Introduction

3.1.1 Matlab : choix, atout et domaines cibles


Matlab est le logiciel de calcul numérique le plus utilisé. Il est disponible sur plusieurs plate-

formes à l'instar de : http ://www.mathsworks.com/. Il présente plusieurs avantages :

 Il ore un langage simple, très ecace et optimisé pour le traitement des matrices

 Pour entrer les éléments d'une matrice ou d'un vecteur, on n'a plus besoin d'écrire des

boucles (il en est de même pour les opérations associées aux matrices, car existant déjà

dans une bibliothèque qu'on appelle ici toolbox)

 Il ore une série de fonctions très utiles et un module d'aide contenant la description de

toutes les fonctions disponibles

 Matlab propose son propre langage de programmation avec un ensemble de syntaxe ; des

opérateurs (logiques et relationnels), les itérations et les structures de contrôle incluant

toutes les structures de programmation d'un langage de programmation classique (tel que

le C)

29
CHAPITRE 3. MATLAB : PRÉSENTATIONS ET GÉNÉRALITÉS 30

 Matlab ore également les possibilités d'écrires des fonctions

 Gestion des chiers : utilisation des commandes Linux/Unix pour la gestion des reper-
toires

exemple :

 pwd : Permet de connaître le repertoire courant


 cd .. : remonte au repertoire parent

 cd cours selectionne le repertoire ls nommé cours

 ls donne la liste des chiers dans un repertoire courant.

 M-les ou script : Ce sont des chiers contenant des instructions Matlab. Matlab ore
un editeur pour créer et manipuler les chiers matlab (M-les). Pour exécuter un M-le,

on utilise le nom du script comme commande

 Graphisme : Matlab permet la réalisation des graphiques 2D et 3D.

3.2 Installation et présentation de l'environnement de travail

3.2.1 Installation sous Windows et Présentation de l'environnement de


travail
Matlab 7.11.0 (R2010b) est la version de Matlab qui sera utilisée dans le cadre de ce cours. Son

installation sera réalisée lors des travaux pratiques. La gure qui suit présente l'environnement de

travail

3.2.2 Aide
Cette partie présente quelques commandes permettant d'avoir l'aide sur les fonctions Matlab

 help : donne de l'aide sur une fonction ou un toolkit


 helpdesk : documentation en hypertexte
CHAPITRE 3. MATLAB : PRÉSENTATIONS ET GÉNÉRALITÉS 31

Figure 3.1  Environnement Matlab


 helpwin : aide en ligne dans une fenêtre séparée
 lookfor : recherche d'un mot clé
 which : localise fonctions et chiers
 what : liste des chiers matlab dans le répertoire courant
 exist : check si une fonction ou une variable existe dans le workspace
 who, whos :liste des variables dans le workspace

3.2.3 Variables scalaires, workspace


 représente le caractère prompt sous Matlab. C'est un caractère (ou un ensemble de caractères)
qui permettent à l'utilisateur de saisir les fonctions (ou commandes) et de réaliser des opérations

sur une console (terminal). Pour débuter l'initiation à Matlab, voici ce que vous devez réaliser :

 Saisir x=10 puis valider


CHAPITRE 3. MATLAB : PRÉSENTATIONS ET GÉNÉRALITÉS 32

 Saisir y=15 puis valider

 Saisir la commande que who ; après avoir validé, dites ce fait que cette commande.

 Saisir la commande whos, après avoir validé, dites également ce fait cette commande

Donnez la diérence entre ces deux commandes.

3.2.4 Variables spéciales


Il s'agit des variables qui sont déjà utilisées sous Matlab à d'autres ns. Ces variables sont :

 pi : Elle renvoie la valeur de pi

 inf : Elle renvoie la valeur de plus l'innie

 realmin : Elle renvoie la valeur minimale du nombre réel reconnu par Matlab

 realmax : Elle renvoie la valeur maximale du nombre réel reconnu par Matlab

 eps : elle renvoie la valeur de l'inniment petit

 ans : elle contient la valeur de la réponse à toutes les opérations que vous aurez à réaliser

à partir de la console

3.2.5 Caractères spéciaux


Il s'agit d'un ensemble de caractères qui ont un rôle important dans la syntaxe de Matlab

 [ ] Les crochets pour concaténer des tableaux


 ; Lorsqu'il est mis à la n d'un commande, le résultat obtenu à partir de la dite commande
n'est pas aché à l'écran. Il est aussi utilisé pour concaténer les tableaux.

 . Le point est utilisé pour écrire les nombres réels. Exemple : 2012.06
 : Les deux points sont utilisés pour dénir la progression géométrique
 ' ' Les guillemets permettent de dénir les chaînes de caractères
 % est utilisé pour écrire les commentaires
CHAPITRE 3. MATLAB : PRÉSENTATIONS ET GÉNÉRALITÉS 33

3.2.6 Nombres complexes


Les nombres complexes sont composés d'une partie réelle et d'une partie imaginaire (qui est

un réel multiplié par i). Il sont déclarés de deux façons :

  a= 3+2i

  a=complex(4,5)
Les commandes real(a) et imag(a) permettent respectivement d'extraire les composantes réelle

et imaginaire de a.

3.2.7 Données logiques


Une donnée logique représente un état, "vrai" ou "faux", d'une variable ou d'une expression,

par les nombres 1 et 0 respectivement true=1 et false=0

3.2.8 Mots clés


Matlab réserve un certain nombre de mots clés (des opérateurs) qui ne peuvent pas être utilisés

comme variables dans un programme :

1. break, case, catch, continue, else, elseif

2. end, for, function, global, if, otherwise

3. persistent, return, switch, try, while


CHAPITRE 3. MATLAB : PRÉSENTATIONS ET GÉNÉRALITÉS 34

Opération Forme algébrique Matlab


Addition x + y x + y

Soustraction x - y x - y

Multiplication a x b a * b

Division x / y x / y

Puissance xy x^y

Opération Signication Opération Signication


< Inférieur à & et

> Supérieur à | ou

<= Inférieur ou égal à not

>= Supérieur ou égal à xor(x,y) ou exclusif

== Égal à any(x) renvoie 1 si l'un des éléments de x est non nul

= Diérent de

3.3 Opérateurs

3.3.1 Les opérateurs élémentaires

3.3.2 Les opérateurs logiques et de relation

3.4 Quelques fonctions mathématiques usuelles

3.4.1 Fonctions mathématiques usuelles


sin(x),cos(x),tan(x),exp(x),asin(x),acos(x),atan(x),log(x),abs(x),sqrt(x),power(a,b),sinh(x), oor(x).

_Exercice : En utilisant la function help, trouvez ce fait les fonctions mathématiques qui viennent

d'être énumérées.
CHAPITRE 3. MATLAB : PRÉSENTATIONS ET GÉNÉRALITÉS 35

3.4.2 Fonctions matricielles usuelles


det(A), inv(A),max(A),sum(A),eig(A),trace(A),rank(A),poly(A),min(A),svd(A).

Exercice : En utilisant la function help, trouvez ce fait les fonctions matricielles qui viennent

d'être énumérées.

3.5 Domaines d'applications


1. Calculs mathématiques (Algèbre linéaire,équations diérentielles, optimisation)

2. Filtrage de signaux

3. Modélisation

4. Simulations

5. Analyse de données

6. Visualisation graphiques
Chapitre 4

Vecteurs et Matrices

4.1 Vecteurs

4.1.1 Création d'un vecteur


Par dénition, un vecteur est une ligne à plusieurs colonnes. Il peut être déni de plusieurs

façons :

1. vecteur ligne par énumération des composantes :il s'agit de la dénition par défaut.
Exemple :  v = [2 -1 6 9 12 15 19 13]
2. vecteur ligne par description : ici, il est question de dénir un pas qui permet d'in-

crémenter et dénir les valeurs des éléments du vecteur en fonction des valeurs initiale et

nale du vecteur :

Exemple :  x= [0 : 0.5 : 5]
3. vecteur colonne : dans ce cas, elle correspond à le représentation du vecteur sur une

colonne (on ache la transposée du vecteur).

Exemple : Si nous prenons précédent, on aura : x'


4. génération de vecteurs métriques :On dénit le vecteur ici en fonction sur un espace

36
CHAPITRE 4. VECTEURS ET MATRICES 37

précis en utilisant la fonction linspace().


Exemple :  x = linspace(0, pi, 11) ;
Génère x avec 11 valeurs. Réparties de 0 à pi

4.1.2 Addressages et indexages


Ici, nous présentons les éléments qui permettent de manipuler les éléments d'un vecteur.

 Position d'un élément du vecteur : Chaque élément d'un vecteur peut être repéré à

partir de sa position.

Exemple : Soit le vecteur v précédemment déni, v(3) va correspondre à l'élément qui se


trouve à la troisième position.

Pour ressortir un bloc d'élément, il sura d'utiliser les ` :' de la manière suivante : v(3 :6)
pour par exemple que pour le vecteur v, acher les éléments compris entre la troisième et

la sixième position.

4.1.3 Opérations sur les vecteurs


1. Multiplication d'un vecteur par un scalaire : La multiplication d'un vecteur A par

un scalaire k donne k*A.

Exemple : C=5*B
2. Maximum, minimum, taille et trie d'un vecteur :
(a) max(v) : est la fonction qui renvoie l'élément maximal d'un vecteur v
(b) min(v) : est la fonction qui renvoie l'élément minimal d'un vecteur v
(c) length(v) : est la fonction renvoie la taille d'un vecteur v
(d) sort(v) : est la fonction qui prend un vecteur v et le classe par ordre croissant
3. Addition, soustraction, concaténation, multiplication, division des vecteurs
(a) L'addition de deux vecteurs de même taille se fait via l'opérateur + (A+B)
CHAPITRE 4. VECTEURS ET MATRICES 38

(b) La soustraction de deux vecteurs de même taille se fait via l'opérateur  (A-B)

(c) La multiplication de deux vecteurs de même taille se fait via l'opérateur .*

(d) La division de deux vecteurs de même taille se fait via l'opérateur ./

(e) La concaténation de deux vecteurs se fait avec l'opérateur []

Exemple : C=[A B] où C est la concaténation de A et B

4.2 Matrices
Une matrice est un ensemble de lignes comportant toutes le même nombre de colonnes.

4.2.1 Création d'une matrice


La création d'une matrice se fait de plusieurs façons mais la meilleure approche reste l'énumé-

ration.

Exemple : m1 = [1 2 3 ; 4 5 6 ; 7 8 9] ;

4.2.2 Addressages et indexages


Dans cette partie, nous présentons les éléments qui permettent de manipuler les éléments d'une

matrice

 Position d'un élément d'une matrice : Comme les vecteurs, chaque élément d'une

matrice peut être retrouvée à partir de sa position. Une matrice M(n,m) étant caractérisée

par n lignes et m colonnes, M(i,j) va permettre de repérer l'élément qui est à la i ème ligne

et à la j ème colonne.

Exemple : m1(2,3) va renvoyer 6.


CHAPITRE 4. VECTEURS ET MATRICES 39

4.2.3 Matrices particulières


 ones(n) : il s'agit de la matrice identité d'ordre n
 zeros(n ,m) : il s'agit de la matrice zéro de dimension (n,m)
 eye(n) : il s'agit de matrice identité
 diag([k :m]) : c'est la matrice diagonale

4.2.4 Caractéristiques d'une matrice


 size(m) donne la dimension de la matrice m
 rank(m) donne le rang de la matrice m

4.2.5 Opérations sur les matrices


 Transposée d'une matrice : Elle se fait avec l'opérateur `
 L'addition de deux matrices de même taille se fait via l'opérateur + (A+B)

 La soustraction de deux matrices de même taille se fait via l'opérateur  (A-B)

 La multiplication de deux matrices de même taille se fait via l'opérateur .* (multiplication

point par point)

 La division de deux matrices de même taille se fait via l'opérateur ./ (division point par

point)

4.3 Applications des matrices et des vecteurs aux calculs po-


lynômiaux
Sur Matlab, la plupart des données liées aux domaines intégrés dans cette application sont

entrées sous forme de matrices et de vecteurs


CHAPITRE 4. VECTEURS ET MATRICES 40

 Représentation d'un polynôme : Soit le polynôme f(x)=ax2 + bx + c, ce polynôme sera


représenté par : le vecteur : f=[a b c]

 Racine d'un polynôme :la fonction roots(f) permet de déterminer les racines de l'équa-
tion f(x)=0.

Exemple : f(x)= x2 − 2x + 1
f(x)=0 revient à faire roots([1 -2 1]).

 Détermination des coecients du polynôme à partir de ses racines : la fonction


poly() permet également de déterminer les coecients d'un polynôme à partir de ses
racines

 Produit polynômial de plusieurs polynômes : la fonction conv(p1,p2) permet de

faire le produit polynômial de plusieurs polynômes à l'intermédiaire de leur vecteur carac-

téristique. En eet, conv(p1,p2) réalise le produit polynômial des polynômes associés à p1

et p2.

 Décomposition éléments simple : Si nous avons


n(x) r1 r2
= + + ... + k(x) (4.1)
d(x) x − p1 x − p2

où p1 , p2, ..., désignent les pôles. Il reste alors à déterminer les ri , lespi etk(x). Ainsi,

[r, p, k]=residue(n,d) va déterminer ri , lespi etk(x) sous forme de vecteurs.


 Résolution des systèmes d'équations linéaires : Soient le système linéaire suivant :

a11 x1 + a12 x2 + a13 x3 + ... + a1n xn = k1






a21 x1 + a22 x2 + a23 x3 + ... + a2n xn = k2

(4.2)
...








a x + a x + a x + ... + a x = k
n1 1 n2 2 n3 3 nn n 1

Ce système peut s'écrire sous la forme AX=K avec :


CHAPITRE 4. VECTEURS ET MATRICES 41

     
a a a ... a1n x k
 11 12 13   1  1
     
 a21 a22 a23 ... a2n   x2   k2 
A=   X=  et K= 
     
 ... ... ... ... ...  .... ....
     
an1 an2 an3 ... ann xn kn
Trouver les solutions à ce système revient à resoudre : X=A\K.

4.4 Exercices
1. En utilisant Matlab, resoudre les équations suivantes :

(a) 2x2 − 4x + 1 = 0

(b) 9x3 − 5x2 − 2x + 1 = 0

(c) x3 − 1 = 0

(d) 6x2 − 2x + 1 = 0

(e) x2 − 4x + 4 = 0

(f ) x5 + 2x4 − 2x3 + 4x2 + 3x + 5 = 0

(g) (1 + i)x2 + (2 − 5i)x + 3, 5 = 0

2. Pour les racines suivantes, déterminer les polynômes correspondants :

(a) a=[2 3]

(b) b=[2 2 3 -5]

(c) c=[-1 -1]

(d) d=[2 -1 1+i 1-i]

3. Trouver à partir des vecteurs résultants des fonctions suivantes, calculer les produits poly-

nômiaux correspondants

(a) (x-1)(x-2)

(b) (x2 − 2x − 5)(x3 − 4x2 − 6x − 1)


CHAPITRE 4. VECTEURS ET MATRICES 42

(c) (3x2 − 5x + 2)(x2 + 3x + 8)

4. Décomposer en éléments simples les fonctions suivantes :

(a)
6
(4.3)
x4 + 6x3 + 11x2 + 6x
(b)
2x2 − 5x + 3
(4.4)
x3 − 1
(c)
x5 − 4x4 − 3x2 − 1
(4.5)
x4 − 2x3 − x2
5. Resoudre les systèmes d'équations linéaires suivants

(a)




 3x1 + 2x2 + x3 = 4


−x1 + 5x2 + 2x3 = −1 (4.6)




4x1 − 2x2 + 3x3 = 3

(b)




 3x1 + 2x2 + x3 − 3x4 = 4



−x1 + 5x2 + 2x3 + 2x4 = −1

(4.7)
4x1 − 2x2 + 3x3 − 6x4 = 3







4x − 2x + x − x = −3

1 2 3 4

(c)

3x1 + 2x2 + x3 − 3x4 − x5 = 4







−x1 + 5x2 + 2x3 + 2x4 − 3x5 = −1






4x1 − 2x2 + 3x3 − 6x4 + x5 = 3 (4.8)




4x1 − 2x2 + x3 − x4 + 2x5 = −3







4x1 − 2x2 + x3 − x4 − x5 = −6

CHAPITRE 4. VECTEURS ET MATRICES 43

   
3 4 4 4 5 8
   
6. Soient les matrices suivantes : A= 6 et B= 3
   
5 3 11 12
   
10 8 2 −1 5 2
(a) Pour chacune de ces matrices, déterminer :

i. leur valeur propre

ii. leur polynôme caractéristique

iii. leur trace

(b) Vérier que A*B - B*A 6= 0.

(c) Vérier également que : (A + B)T = AT + B T


Chapitre 5

Programmation MATLAB

Le but de ce chapitre est d'introduire la syntaxe de Matlab.

5.1 Entrées-Sorties
Sous Matlab, on utilise deux fonctions d'entrées sorties :

1. La fonction disp : elle permet d'acher des valeurs à l'écran et est alors utilisée de deux
manières :

(a) disp(a) permet d'acher le contenu de la variable a


(b) disp('a') permet d'acher le caractère a
2. La fonction input : Elle est utilisée pour rendre un programme interactif.
x=input('entrer la valeur d'un nombre') ;

Dans le cas où, on veut imprimer un résultat avec un descriptif, qui comprend du texte et des

valeurs de variables, on utilise l'opérateur de concaténation [].


Exemple
r=2 ;

44
CHAPITRE 5. PROGRAMMATION MATLAB 45

aire=pi*r*r ;

message=['l"aire d"un cercle de rayon=' num2str(r),'est égale à ' num2str(aire)] ;


disp(message)
Au lieu d'utiliser l'opérateur de concaténation, on peut utiliser les fonctions sprintf,fprintf

sprintf

On peut obtenir le même résultat avec la fonction sprintf qui remplace l'opérateur de conca-

ténation pour construire la variable caractère message. On procède en déclarant une chaîne de

caractères compris entre ' ' suivie de la liste des variables à imprimer, variable1, variable2, ...

sprintf ('message',variable1,variable2,...)
 r=2 ;

 aire=pi*r*r ;

 message=sprintf('Laire dun cercle de rayon = %f est égale à %f ', r, aire) ;

 disp(message) ;

L'aire d'un cercle de rayon = 2.000000 est égale à 12.566371.

À l'intérieur de la chaîne de caractères message, on insère des caractères de contrôle "%" qui seront

remplacés par les valeurs des variables données en arguments. Dans l'exemple précédent, chaque

%f sera substitué par la valeur de la variable correspon- dante dans la liste. Dans cet exemple, %f

indique que la variable à imprimer est de type réel. D'autres possibilités sont les suivantes :

 %s : format pour une chaîne de caractères

 %c : un seul caractère

 %d : format pour un entier

 %u : format pour un entier positif

 %f : format en virgule ottante

 %e : format en exponentiel, 0.12345e+01

 %g : format en virgule ottante


CHAPITRE 5. PROGRAMMATION MATLAB 46

inputdlg

Elle est interactive avec plusieurs valeurs à saisir. Lorsqu'il y a plusieurs valeurs à saisir, on

inputdlg plutôt que input. Sa structure est la suivante :


utilise la fonction

inputdlg(message,titre,nblignes,valdefaut,options) où les arguments sont dénis ci-dessous :


 message : un appel qui apparait dans la fenêtre et sollicite une saisie pour chaque valeur.

C'est une chaîne de caractères par laquelle le programmeur informe l'usager des variables

à saisir. Associée à chaque valeur, il y a une case dans laquelle sera tapée la valeur corres-

pondante

 titre : un titre qui sera aché sur la fenêtre


 nblignes : nombre de lignes pour chaque variable (utile si la variable est un vecteur)
 valdefaut : valeurs par défaut des variables qui seront achés dans les cases
 options : elles permettent de contrôler les propriétés de la fenêtre :
1. options.Resize='on'. permet de redimensionner la fenêtre

2. options.WindowStyle='normal' place le programme en attente d'une reponse

3. options.Interpreter='tex'. Utilise latex pour formater le message (utile pour des sym-

boles spéciaux pour les variables, comme des formules utilisant l'alphabet grec)

Elle propose une boîte de dialogue pour la saisie de plusieurs valeurs.

Exemple :
message={'coecient a', 'coecient b', 'coecient c' } ;
titre='calcul des racines de : ax2 + bx + c' ;
nblignes=1 ;
options.Resize='on' ;
options.WindowStyle='normal' ;
options.Interpreter='tex'. ;
valDefaut={'0','0','0' } ;
N=inputdlg(message,titre,nblignes,valdefaut,options) ;
CHAPITRE 5. PROGRAMMATION MATLAB 47

a=str2double(N{1}) ;
b=str2double(N{2}) ;

c=str2double(N{3}) ;

roots([a, b, c]).

ginput

Un dispositif de saisie les plus intéressant est le mode graphique par le biais d'un curseur

à l'écran. On ouvreune fenêtre graphique qui devient l'entrée standard, et la fonction ginput
présente le curseur que l'usager positionne avec la souris sur le point de l'écran à saisir. Sa syntaxe

est la suivante : [x,y,bouton]= ginput(n) où :


 n : indique le nombre de points à saisir, et retourne leurs coordonnées dans les vecteurs

colonne x et y.

 L'option " bouton" sert à indiquercomment se termine l'action. Après chaque clique, la

fonction retourne la valeur du bouton de la souris qui a été cliqué, avec la convention

suivante :

1. pour le bouton gauche

2. pour le bouton du centre

3. pour le bouton de droite


CHAPITRE 5. PROGRAMMATION MATLAB 48

 Sans l'option " bouton" : l'action se termine après que n points soient indiqués, mais avant
de faire la saisie.

Exemple d'application
clc ; clear all ; close all ;

gure(1)

axis ([0 10 0 10])

hold on

but=1 ;

while but==1[xi,yi,but]=ginput(1) ;

plot (xi,yi,'ko') ;

end

hold o

pause

gure(2)

nbPLN=0 ;

but=1 ;

axis([0 10 0 10])

hold on

while but==1

nbPLN=nbPLN+1 ;[xi,yi,but]=ginput(1) ;

PLN(nbPLN, 1 :2)=[xi yi] ;

plot (xi,yi,'ko') ;

end

hold o
CHAPITRE 5. PROGRAMMATION MATLAB 49

5.2 M-les
Un script (ou M-le) est un chier (d'extension .m) contenant des instructions Matlab. Matlab

ore un éditeur pour écrire les scripts via la commande edit.


Exemple : edit essai.m
Cette opération va ouvrir le chier essai.m s'il existe et le crée dans le cas contraire.

5.3 Structures de branchements

5.3.1 If
Sa syntaxe est la suivante :

if expression

Action

else if expression

Action

end
Exercice d'Application : Écrire un programme Matlab qui prend un nombre et dit s'il est pair
ou impair.

Solution :
x=input('entrez le nombre dont on veut vérier la parité') ;

if mod(x,2)==0
disp(x) ;disp(' est un nombre pair') ;
else
disp(x) ;disp(' est un nombre impair') ;
end
CHAPITRE 5. PROGRAMMATION MATLAB 50

5.3.2 Switch
Elle équivaut au branchement à choix multiple. Sa syntaxe :

switch (valeur)
case valeur1
Action1

case valeur2
Action2

...
case valeurn
Actionn

otherwise
Action

end.
Exercice d'Application : Écrire un programme Matlab qui prend un nombre et dit s'il est pair
ou impair.

Solution :
x=input('entrez le nombre dont on veut vérier la parité') ;

y=mod(x,2) ;

switch y
case 0
disp(x) ;disp(' est un nombre pair') ;
otherwise
disp(x) ;disp(' est un nombre impair') ;
end.
CHAPITRE 5. PROGRAMMATION MATLAB 51

5.4 Boucles

5.4.1 While
Elle correspond à la boucle tantque présentée en algorithmique. Sa syntaxe est la suivante :
while expression
Action end

Exercice d'Application : Écrire un programme qui permet d'entrer 15 entiers dans un tableau.
Solution :
i=1 ;
while i<=15
m(i)=input('entrez le i eme élément du tableau') ;

i=i+1 ;

end

disp(m) ;

5.4.2 For
Elle correspond à la boucle pour en algorithmique. Sa syntaxe est se présente de deux façons :
Exercice d'Application1 : Écrire un programme qui permet d'entrer 15 entiers dans un tableau.
Solution :
for i=1 :15
m(i)=input('entrez le i eme élément du tableau') ;

end
disp(m) ; Exercice d'Application2 : Modier l'exercice d'application1 en achant uniquement
les éléments qui sont à positions impaires.

Solution :
for i=1 :15
CHAPITRE 5. PROGRAMMATION MATLAB 52

m(i)= input('entrez le i eme élément du tableau') ;


end
for i=1 :2 :15
disp(m(i)) ; end

5.5 Fonctions
Créer une fonction sous Matlab revient à deux choses :

1. Créer un M-File dont le nom est exactement celui de la fonction

2. Dans ce chier, faire :

function y=nomdelafonction(paramètre1, paramètre2,.., paramètren) ;


Action ;

return
Il à remarquer ici ce qui est dit en commentaire, apparaitra comme l'aide de la fonction.

Exercice d'Application : Créer la fonction carre qui prend un réel et qui renvoie son carré.
Solution :
Nous allons d'abord créer le carre.m :

edit carre.m
Dans ce chier nous, nous mettons :

function y=carre(x) ;
% cette fonction prend un réel et renvoie son carré.

y=x*x ;

return
CHAPITRE 5. PROGRAMMATION MATLAB 53

5.6 Exercices
1. Tous les algorithmes proposés en exercice au chapitre 1 doivent être traduit en programmes

Matlab.

x x2 x3
2. Écrire un programme Matlab qui calcule ex = 1 + 1!
+ 2!
+ 3!
+ ...
Chapitre 6

Graphismes

6.1 Graphiques à 2D
Avant de présenter le processus de réalisation des graphes en 2D, voici les fonctions qui seront

utilisées ici :

1. plot : trace point point par point un graphe 2D


2. semilogx : elle est identique à plot mais avec échelle logarithmique pour l'axe des abscisses
3. semology : elle est identique à plot mais avec échelle logarithmique pour l'axe des ordon-
nées

4. loglog : elle est identique à plot mais avec échelle logarithmique pour les deux axes
5. grid : ajoute une grille
6. xlabel : ajoute une légende pour l'axe des abcisses
7. ylabel : ajoute une légende pour l'axe des ordonnées
8. title : ajoute un titre
9. axis :modie les echelles
10. zoom :eectue un zoom

54
CHAPITRE 6. GRAPHISMES 55

11. gtext : place une légende avec la souris


12. hold : ajoute un graphe dans la fenêtre courante
13. gure : Crée une nouvelle gure
14. legend : Elle place la légende à côté de la courbe
Exercice d'Application 1 On souhaite représenter une courbe qui exprime la température (◦ C)
en fonction du temps. Solution :

Temps(heure) 0 2 4 6 8 10 12 14 16


Température ( C) 20 23 30 33 32 37 34 39 36

x=[0 2 4 6 8 10 12 14 16] ;

y=[20 23 30 33 32 37 34 39 36] ;

plot(x,y)
grid on
xlabel('temps (en heures)')
ylabel('température (en ◦ c)')
title('Suivi de température en fonction du temps')
axis([ 0 18 10 40])
NB Il est à noter ici que nous pouvons également écrire un programme matlab qui resoud le

problème précédent.

Exercice : Faire l'exercice précédent à l'intermédiaire d'un programme Matlab.


Dans les arguments de plot on peut ajouter des arguments permettant d'imposer des caractères

pour réaliser la courbe. C'est le ces de '-', ' :', '+', 'co', '*'.

Exercice d'Application 2 : Réaliser le graphe de la fonction à une variable suivante :


t(1 + t2 )
y= (6.1)
10

Solution :
t=0 :0.01 :1 ;
CHAPITRE 6. GRAPHISMES 56

y = t. ∗ (1 + t.2 )./10 ;
plot(t,y)
grid on
On peut également utiliser la fonction fplot pour tracer des graphes liées à des fonctions.
Exercice d'Application 3 : Réaliser le graphe de la fonction à une variable suivante :
y = 1 + 2x + sin(x2 )
Solution :
x=[1 5] ;

fplot('1+2*x+sin(x*x)', [1 5]).
Exercice : Tracer la fonction suivante : f(x)=5x3 − cos(x2 ) Une autre méthode consiste à créer
un M-le.

Exercice d'Application 4 : Representer le graphe résultant de la fonction suivante :


cos(3x) sin(5x)
y = f (x) = sin(x) + − (6.2)
2 5

Solution :
% Création du chier dans lequel on va insérer le code Matlab de la fonction

% Cette création peut se faire en ligne de commandes

edit f2.m
function y=f2(x) ;
y=sin(x)+0.5.*cos(3.*x)-0.2.*sin(5.*x) ;

% retourner maintenant sur la console et faire :

fplot('f2',[0 10])
On peut également associer une couleur à la courbe ; Ainsi :

Exercice : Tracer la courbe. Pour chaque cas, utiliser les deux méthodes
1.
2
y = sin(x2 ) + 2x + (6.3)
x+1
CHAPITRE 6. GRAPHISMES 57

y jaune

m magnenta

c cyan

r rouge

g vert

b bleu

w blanc

k noir

2.
−x2
y = sin(x)e 10 , x = [−10 : 10 : 200] (6.4)

3. Représenter sur une même fenêtre les fonctions suivantes

−x2 2π −x2 4π −x2


y = sin(x)e 10 ; y = sin(x + )e 10 ; y = sin(x + )e 10 (6.5)
3 3

4. cos(x) x = [0 : 0.01 : 2π]

5. sin(x) x = [0 : 0.01 : 2π]


ex +e−x
6.
2
,x = [−2 : 0.1 : 2]
et
7.
1+et

6.2 Graphiques à 3D
Avant de présenter le processus de réalisation des graphes en 2D, voici les fonctions qui seront

utilisées ici :

1. meshgrid
2. mesh
3. meshc
CHAPITRE 6. GRAPHISMES 58

4. meshz
5. contour
6. view
7. grid
8. xlabel
9. ylabel
10. zlabel
11. title
12. hold
13. gure
Exercice d'application 5
Soit la fonction suivante :
p
z = f (x, y) = x2 + 2y 2 , x=-2 :2, y=-3 :3

Solution
x=-2 :0.01 :2 ;

y=-3 :0.01 :3 ;

[X, Y ] = meshgrid(X, Y );
Z = sqrt(X.2 + 2. ∗ Y.2 ) ;
%où vous voyez le carré(de x par exemple, mettez . puis l'accent circonexe

mesh(X,Y,Z)
grid on
view(-80,10)
Il sura juste de remplacer mesh(x,y,z)
meshc(x,y,z), ensuite
par par meshz(x,y,z) et par

contour pour aperçevoir la nuance avec les variantes de mesh.


Exercices : Représenter les courbes associées aux fonctions suivantes
CHAPITRE 6. GRAPHISMES 59

−x2 −y 2
1. z=f(x,y)=ye , x=[-2 :2]

2 2
ex +y
2. z=f(x,y)= √

2
3. z=f(x,y)=(x + y 2 )cos(x) − sin(x2 )
2
4. z=f(x,y)=x − y2
2
5. z=f(x,y)=x +y
2 −x2 −0.3y 2
6. z=f(x,y)=80y e , −2.1 ≤ x ≤ 2.1, −6 ≤ y ≤ 6
x2 y2
7. z=f(x,y)=
a2
− b2
=1

8. f(x)=(x + 2)2 e−x


x+1 x
9. f(x)=( )
x
1

x
10. f(x)=( ) 2
x−1

11. f(x)=(2x − 3)e−3x


−x2
12. f(x)=e

1
13. f(x)= √ 2
2 x +1

14. f(x)= -1 + (lnx)2

15. x+3|
x
16. f(x)= -1 + ln | x+1
|

Vous aimerez peut-être aussi