Vous êtes sur la page 1sur 37

UE : Initiation au Calcul Scientifique avec MATLAB

Objectif

À la fin de cette unité de cours, les étudiants qui ont suivi pas à pas devraient être
capable de :

1. Différencier entre le matériel et le logiciel d'une part et entre les systèmes


logiciels et logiciels d'application d'autre part ;
2. Identifier clairement les domaines d'utilisation de Matlab ;
3. Démontrer une compréhension de l'environnement Matlab ;
4. Utilisez Matlab pour résoudre des problèmes numériques de base en
ingénierie.

« Il n’y a que dans le dictionnaire que réussite vient avant travail »


Pierre Fonerod
Enseignant :
NKONJOH NGOMADE Armel
Doctorant en Informatique
TABLE DES MATIÈRES

Table des matières ii

0 Le matériel et le logiciel de l’ordinateur 1


0.1 Le matériel de l’ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
0.1.1 La carte mère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
0.1.2 Le processeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
0.1.3 La mémoire vive ou RAM . . . . . . . . . . . . . . . . . . . . . . . . 2
0.1.4 Le disque dur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
0.2 Le logiciel de l’ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1 Environnement Matlab 5
1.1 Prise en main de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.1.1 Particularités du langage MATLAB . . . . . . . . . . . . . . . . . . . 6
1.1.2 Interface de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.3 Quelques instructions dans la fenêtre de commande . . . . . . . . . . . 8
1.1.4 Appel de fonction en Matlab . . . . . . . . . . . . . . . . . . . . . . . 9
1.1.5 L’aide dans Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2 Les matrices sous MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.1 Les données sous Matlab . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.2 Déclaration de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.2.3 Indexation des matrices . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2.4 Concaténation de matrices . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.5 Le calcul matriciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.2.6 Manipulation de matrices . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.3 Mathématiques et types de données sous Matlab . . . . . . . . . . . . . . . . . 16

ii
1.3.1 Les mathématiques sous Matlab . . . . . . . . . . . . . . . . . . . . . 16
1.3.2 Les types de données sous MATLAB . . . . . . . . . . . . . . . . . . 18
1.4 La programmation sous Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4.1 Les scripts sous MATLAB . . . . . . . . . . . . . . . . . . . . . . . . 21
1.4.2 Les fonctions sous MATLAB . . . . . . . . . . . . . . . . . . . . . . 21
1.4.3 Les Structures de contrôles sous Matlab . . . . . . . . . . . . . . . . . 23
1.5 Les interfaces graphiques sous MATLAB . . . . . . . . . . . . . . . . . . . . 25
1.5.1 Les objets graphiques sous MATLAB . . . . . . . . . . . . . . . . . . 25
1.5.2 Utilisation de GUIDE . . . . . . . . . . . . . . . . . . . . . . . . . . 25

iii
CHAPITRE 0

LE MATÉRIEL ET LE LOGICIEL DE
L’ORDINATEUR

0.1 Le matériel de l’ordinateur


Lorsqu’on parle d’un composant d’ordinateur ou PC, on parle du matériel qui se trouve à
l’intérieur de l’ordinateur et aux périphériques externes qui sont reliés par des câbles ou des
moyens de communication sans fil.

0.1.1 La carte mère


Parfois appelée "mobo", (contraction du mot anglais motherboard), par les connaisseurs, la
carte mère porte bien son nom. C’est le composant principal de votre ordinateur, celui qui ser-
vira à "tenir" et relier tous les autres. Physiquement tout d’abord, car elle est vissée au boîtier
de votre PC, de plus elle possède les connecteurs (slots) pour accueillir des dizaines de com-
posants et périphériques en plus des éléments indispensables. Au niveau logiciel ensuite, car
chaque information envoyée ou reçue par le matériel ou un programme passe forcément par
elle.
C’est aussi sur une petite partie de la carte mère que se trouve la ROM sur laquelle est enre-
gistrée le BIOS, petit programme gérant la configuration "de base" du matériel et se chargeant
de faire le lien avec votre système d’exploitation (Windows, Linux...). Ces réglages sont conser-
vés en mémoire même en l’absence de courant grâce au CMOS, alimenté par la pile de carte
mère.

1
0.1. Le matériel de l’ordinateur Chapitre 0

0.1.2 Le processeur
Le processeur aussi a plusieurs noms, on parle de microprocesseur ou de CPU, de l’anglais
Central Processing Unit. Son rôle est le traitement de l’information numérique et il ne com-
munique qu’en chiffres binaires ou Bits, un langage composé d’une suite de 0 et de 1. Il fait
ainsi les calculs nécessaires à l’exécution des programmes et instructions à une vitesse en partie
déterminée par sa fréquence exprimée en Hertz ou plutôt, dans le cas des processeurs actuels,
en GigaHertz (GHz).
Toute cette agitation provoque une élévation de la température du processeur, en particulier
lors du traitement d’une grosse masse d’informations. C’est pourquoi il est surmonté d’un ven-
tilateur chargé de dissiper la chaleur et de le maintenir à la température la plus basse possible.

(a) Carte mère (b) Processeur

Figure 1 – Le matériel de l’ordinateur 1

0.1.3 La mémoire vive ou RAM


La mémoire de type "RAM" pour Random Access Memory est utilisée par le processeur qui
y place les données le temps de leur traitement. L’un des avantages de la mémoire équipant les
ordinateurs est justement sa rapidité d’accès.
Une autre particularité de la mémoire RAM est d’être temporaire, une fois l’opération ter-
minée, les données ne sont pas conservées et sont de toute façon définitivement perdues une
fois l’ordinateur éteint.
Plusieurs types de mémoire RAM existent. En "barrettes" allant de 256 Mo à 2 ou 4 Go
par unité (les plus courantes actuellement), elles sont à choisir en fonction du processeur et de
l’utilisation que l’on fait du PC d’une part et des possibilités de la carte mère (capacité totale,
nombre d’emplacements disponibles...) d’autre part.

Calcul Scientifique avec Matlab 2


0.2. Le logiciel de l’ordinateur Chapitre 0

0.1.4 Le disque dur


C’est sur le disque dur que les données à conserver sont enregistrées. C’est à dire à peu près
tout : les fichiers du système d’exploitation, les logiciels et surtout vos données (photo, vidéo,
musique, emails etc...).
On ne voit pas le disque (plateau) en lui-même ni le bras mécanique qui tient la tête de
lecture, il se présente sous la forme d’un boîtier rectangulaire, vissé au boiter du pc. Plus la
vitesse de rotation des plateaux est importante, plus les performances sont élevées.
Il est relié à la carte mère grâce à une nappe (câble plat) de type IDE ou grâce aux interfaces
SATA (Serial ATA) ou SCSI.
Le disque dur était encore il y a peu indispensable au fonctionnement de l’ordinateur, on
peut aujourd’hui le remplacer par un SSD. Les disques SSD pour (Solid-state drive) permettent
de stocker des données tout comme le fait un disque dur mais leur conception et leurs caractéris-
tiques sont différentes. Un SSD ne possède pas de bras mécanique ni de plateau rotatif comme le
disque dur mais est uniquement fabriqué avec des composants électroniques "solides" et immo-
biles dans le boitier (d’où son nom). De ce fait, les SSD tirent leur épingle du jeux sur plusieurs
points. Ils sont plus résistant aux chocs et plus légers, ce qui en fait un choix intéressant pour
les ordinateurs portables. D’autre part ils sont beaucoup plus rapides, ce qui est un atout pour
tous les types d’ordinateurs vu que la rapidité d’exécution de l’ensemble des composants peut
être ralenti par l’action mécanique du disque dur classique.

(a) Mémoire Vive "RAM" (b) Disque Dur

Figure 2 – Le matériel de l’ordinateur 2

0.2 Le logiciel de l’ordinateur

Calcul Scientifique avec Matlab 3


0.2. Le logiciel de l’ordinateur Chapitre 0

Calcul Scientifique avec Matlab 4


CHAPITRE 1

ENVIRONNEMENT MATLAB

1.1 Prise en main de Matlab


Matlab, acronyme de "MATrix LABoratory", est un logiciel et langage de programmation
conçu pour fournir un environnement de calcul numérique de haut niveau. Il est particulière-
ment performant pour le calcul matriciel, et dispose de grandes capacités graphiques pour, par
exemple, la visualisation d’objets mathématiques complexes.
Son fonctionnement repose sur un langage de programmation interprété qui permet un
développement très rapide.En contre-partie, pour des applications nécessitant des performances
plus élevées en temps de calcul, un langage compilé, comme le C++ ou le fortran, est plus
adapté.
MATLAB intègre des fonctions d’analyse numérique, de calcul matriciel, de traitement de
signal, de visualisation graphique 2D et 3D, etc.
Il peut être utilisé de façon interactive ou en mode programmation.
— En mode interactif, l’utilisateur a la possibilité de réaliser rapidement des calculs sophis-
tiqués et d’en présenter les résultats sous forme numérique ou graphique.
— En mode programmation, il est possible d’écrire les scripts (programmes) comme avec
d’autres langages. L’utilisateur peut aussi créer ses propres fonctions pouvant être ap-
pelées de façon interactives ou par les scripts. Ces fonctions fournissent à MATLAB un
atout inégalable : son extensibilité. Ainsi, l’environnement MATLAB peut être facilement
étendu.
Sous sa forme "graphique", Matlab dispose d’une interface comprenant l’environnement
Matlab à proprement parler, d’où les commandes Matlab peuvent être directement exécutées,
ainsi que d’un environnement graphique, pouvant comprendre plusieurs fenêtres : liste des va-

5
1.1. Prise en main de Matlab Chapitre 1

Figure 1.1 – Illustration des programmes compilés et interprétés

riables en cours d’utilisation, historique des commandes exécutées, ..., et divers menus plus ou
moins habituels, "File", ("New", "Open",...), "Configuration", "Help",...
Toutes les commandes des différents menus ont leur alternative en "ligne de commande"
dans l’environnement propre à Matlab, la réciproque étant fausse.

1.1.1 Particularités du langage MATLAB


Matlab est un langage interprété, c’est à dire :
— Les commandes tapées dans la fenêtre de commande sont exécutées immédiatement ;
— Les variables sont déclarées en mémoire dès leur apparition dans une expression ;
— Les variables peuvent être réassignées ;
— Les variables peuvent être effacées sélectivement du workspace.
Ceci est illustré par la figure 1.1.
Le contenu du Workspace peut être sauvegardé dans un fichier de données :
— L’extension du fichier de données est .mat (ex : mesdonnees.mat) ;
— Le fichier est un fichier binaire ;
— Le fichier .mat peut être rechargé dans le Workspace.

1.1.2 Interface de Matlab


Lorsque vous lancer MATLAB pour la première fois, l’interface utilisateur (figure 1.2) ap-
paraît dans une configuration par défaut. Cette interface peut variée dépendant de la version de
MatLab utilisée mais elle restera similaire.
L’interface principale se décompose comme suit :

Calcul Scientifique avec Matlab 6


1.1. Prise en main de Matlab Chapitre 1

Figure 1.2 – Interface utilisateur de Matlab

1. Command window : Permet d’exécuter des commandes en dehors de programme et


affiche les résultats ;
2. Current Directory : Contenu du répertoire courant où doit se situer vos programmes.
3. Workspace : Affiche l’ensemble des variables utilisées.
4. Command History : Permet de visualiser les dernières commandes exécutées. Il est pos-
sible de faire glisser ces commandes vers la fenêtre de commande. On peut aussi y accéder
en appuyant sur flèche haut ou pour des commandes plus anciennes en tapant la première
lettre de l’expression puis flèche haut ;
5. Choix du répertoire courant : c’est le dossier où doit se situer vos programmes (fichiers
*.m). Vous pouvez mettre vos programmes dans un autre dossier mais dans ce cas il faut
l’inclure dans File » Set Path.
Lorsque vous travaillez dans MATLAB, vous émettez des commandes qui créent des va-
riables et des appels de fonctions. Par exemple, nous allons créer une variable nommée «a»
dans l’environnement MATLAB en tapant la commande « a=1 » dans la fenêtre de commande.
MATLAB l’ajoute alors dans le Workspace et affiche le résultat dans la fenêtre de commande.

Remarque 1.1. .
— Lorsque vous ne spécifiez pas une variable de sortie, MATLAB utilise la variable «ans»,
qui est un raccourcis de «answer», pour stoker le résultat de votre calcul.
— Si vous terminer votre commande par un point-virgule ( ;), MATLAB traite très bien la
commande mais n’affiche pas le résultat. Cette technique est utilisée pour ne pas remplir

Calcul Scientifique avec Matlab 7


1.1. Prise en main de Matlab Chapitre 1

inutilement l’invite de commande de MATLAB.


— Vous pouvez rappeler les commandes précédentes en appuyant sur les flèches haut et
bas, ↑ et ↓ de votre clavier. Pour cela, appuyez sur les touches fléchées sur une ligne
de commande vide ou après avoir tapé les premiers caractères d’une commande. Par
exemple, pour rappeler la commande a = 1, tapez a, puis appuyez sur la touche fléchée
vers le haut.

L’environnement de MATLAB est facilement configurable à l’aide du menu Préférence :


HOME » Preferences. Cette fenêtre de configuration est présenté par la figure 1.3(a)
Le Path, c’est le chemin d’accès aux répertoires connus de MATLAB.
La commande path liste les répertoires connus de Matlab, c’est-à-dire les chemins définis
dans le path.
Pour ajouter un répertoire dans le path, par exemple C :/perso/essaismatlab, utiliser path de
cette façon :

path (path,’C :/perso/essaismatlab’)

Il est aussi possible d’ajouter graphiquement un répertoire dans le path en allant dans le menu
HOME » Set Path. Ceci est illustré par la figure 1.3(b)

(a) Fenêtre de configuration sous Matlab (b) Ajouter un répertoire dans le path de Matlab

Figure 1.3 – Paramétrage de Matlab

1.1.3 Quelques instructions dans la fenêtre de commande


En Matlab, une instruction se termine de plusieurs manières
— " ;" : pour annuler l’affichage du résultat de l’opération. Mais les effet peuvent être ob-
servés dans le workspace ;
— espace : ceci permet de déclencher l’affichage du résultat de l’opération effectuée.

Calcul Scientifique avec Matlab 8


1.1. Prise en main de Matlab Chapitre 1

Il est aussi possible de mettre plusieurs instructions sur une même ligne en les séparant par
les "," ou des " ;"

Exemple 1.1. A = magic(5), B = ones(5) * 4.7 ; C = A./B

Remarque 1.2. MATLAB affiche seulement les valeurs de A et C.

Vous pouvez également écrire une longue instruction sur plusieurs lignes en utilisant les
trois points de suspension (. . .).

Exemple 1.2. .
— s = 1 - 1/2 + 1/3 - 1/4 + 1/5 ...
- 1/6 + 1/7 - 1/8 + 1/9
s = 0.7456
— montext = [’Je respecte l’environnement mais, ’ ...
’je roule en diesel’]
montext = Je respecte l’environnement mais, je roule en diesel

Le tableau 1.1 suivant résume quelques commandes utiles pour une manipulation simple et
adaptée de Matlab.

clc Pour effacer le contenu de la fenêtre de commande


close all Pour supprimer toutes les figures en une fois
clear Pour supprimer toutes les variables du workspace
clear a Pour supprimer la variable a du workspace
clear all Pour supprimer les variables de l’espace de travail, et
les liens vers les fonctions utilisées
— who : affichage des variables Affiche la liste des variables stockées dans l’espace
— whos : affichage plus détaillé de travail peut être obtenue par les commandes
Utiliser la touche Tab Pour compléter le nom d’une commande
F5 Pour exécuter un programme
F9 Pour exécuter des lignes d’un programme
help sujet Accès à l’aide sur une fonction ou sur un sujet

Tableau 1.1 – Commandes utiles pour

1.1.4 Appel de fonction en Matlab


MATLAB fournit un grand nombre de fonctions qui effectuent des tâches de calcul. Les
fonctions sont équivalentes aux sous-routines ou méthodes dans d’autres langages de program-
mation.
Pour appeler une fonction, telle que « max » et « mean », entourez ses arguments d’entrée
entre parenthèses :

Calcul Scientifique avec Matlab 9


1.1. Prise en main de Matlab Chapitre 1

Exemple 1.3. A = [1 3 9] ; max(A)


ans = 9
mean(A)
ans = 4.3333

S’il y a plusieurs arguments d’entrée, séparez-les par des virgules :

Exemple 1.4. B = [10 44 0] ; max(A,B)


ans =10 44 9

Vous pouvez également renvoyer la sortie d’une fonction en l’affectant à une variable :

Exemple 1.5. C = mean(A)

Lorsqu’il y a plusieurs arguments de sortie, placez-les entre crochets

Exemple 1.6. [valmax position] = max(A)


valmax =9
position =3

Lorsque vous travaillez avec des chaînes de caractère, entourez les de guillemets simples :

Exemple 1.7. disp(’bonjour’)


bonjour

Pour appeler une fonction qui ne nécessite aucune entrée et ne renvoie aucune sortie, tapez
uniquement le nom de la fonction

1.1.5 L’aide dans Matlab


Toutes les fonctions de MATLAB ont une documentation qui permet d’avoir des exemples
et décrit les entrées et les sorties de la fonction ainsi que la syntaxe d’appel. pour accéder à cet
aide, il suffit d’appuyer sur la touche "F1".
Le premier écran de MATLAB présente quelques commandes : intro, demo, help help, help,
info.
— Intro : lance une introduction à MATLAB,
— Help : produit une liste des fonctions MATLAB par catégorie,
— Help help : information sur l’utilisation de l’aide
— Info : information sur les boites à outils (Toolboxes) disponibles,
— Demo : programme de démonstration donnant une présentation des fonctionnalités de
base MATLAB.

Calcul Scientifique avec Matlab 10


1.2. Les matrices sous MATLAB Chapitre 1

Pour quitter MATLAB, tapez « quit » ou « Exit » suivi de la touche ENTREE ou utilisez le
menu « File » avec l’option « Exit MATLAB ».
Help <fonction ou commande> : fournit de l’aide sur l’utilisation de la fonction ou de la
commande indiquée.
Lookfor <mot-clé> : fournit la liste des fonctions et commandes contenant le mot-clé spé-
cifié dans la première ligne de leur texte d’aide.

1.2 Les matrices sous MATLAB


Matlab est un logiciel de calcul matriciel. Maitriser la manipulation des matrices est essen-
tiel pour la prise en main de son langage.
Une matrice est un tableau rectangulaire avec m lignes et n colonnes et contenant des élé-
ments numérique de même type.

1.2.1 Les données sous Matlab


Sous MATLAB, il y a un seul type de données de base : le type matrice (Matrix).

Exemple 1.8. Nous allons créer 3 variables x, y et z représentant respectivement un scalaire,


un vecteur et une matrice. x = 50 ; y = [50 60] ; z = [5 0 ; 1 50 ; 0 60] ;
size (x) ⇒ ans = 1 1
size (y) ⇒ ans = 1 2
size (z) ⇒ ans = 3 2

On constate que les 3 variables possèdent toutes 2 dimensions :


— Le scalaire x a pour dimension 1×1 ;
— Le vecteur y a pour dimension 1×2 ;
— La matrice z a pour dimension 3×2.
Sous Matlab, les scalaires, les vecteurs et les matrices sont tous construits sur une base de
matrice 2D.
Tout est matrice. Il n’y a donc pas de déclaration de types. De même, l’utilisateur ne s’oc-
cupe pas de l’allocation mémoire. Les variables matrices et vecteurs peuvent être redimension-
nés.

Remarque 1.3. Un vecteur est une matrice ligne ou colonne.

Calcul Scientifique avec Matlab 11


1.2. Les matrices sous MATLAB Chapitre 1

Figure 1.4 – Représentation d’une matrice sous Matlab

1.2.2 Déclaration de matrices


Le moyen le plus simple de saisir une matrice est d’entrer ses éléments entre deux crochets «
[] », en séparant les lignes par des points-virgules et les colonnes par des blancs ou des virgules.

Exemple 1.9. z = [5 0 ; 1 50 ; 0 60]

Pour déclarer une matrice vide, il faut seulement mettre les crochets vide.
L’opérateur « deux-points »
Il permet de créer un vecteur régulièrement espacé. Xi : inc : Xf
— Xi, élément de départ du vecteur
— inc, valeur de l’incrément
— Xf, critère de fin du vecteur
Les éléments de ce vecteur sont les résultats de la suite d’incrémentation partant de Xi et ne
dépassant pas Xf.
— L’incrément peut être négatif ;
— L’incrément peut être omis s’il vaut 1 ;
— Le vecteur peut être vide selon les valeurs de Xi et Xf ;

Exemple 1.10. 1 :10 → ans = 1 2 3 4 5 6 7 8 9 10


1 :0.2 :2 → ans = 1.0000 1.2000 1.4000 1.6000 1.8000 2.0000
4 :-1 :1 → ans = 4 3 2 1

Fonctions de création de matrices élémentaires


Ci-dessous, quelques exemples de fonctions qui vous permettrons de générer facilement des
matrices utiles dans la vie de tous les jours.
1. ones : matrice de 1 de la taille voulue ;

Calcul Scientifique avec Matlab 12


1.2. Les matrices sous MATLAB Chapitre 1

2. zéros : matrice de 0 de la taille voulue ;


3. eye : matrice identité de la taille voulue ;
4. linspace : vecteur de N valeurs linéairement réparties entre 2 valeurs ;
5. logspace : vecteur de N valeurs logarithmiquement réparties entre 2 valeurs ;
6. rand : matrice de la taille voulue dont les éléments sont le résultat d’une distribution
aléatoire uniforme ;
7. randn : matrice de la taille voulue dont les éléments sont le résultat d’une distribution
aléatoire normale ;
8. magic : carré magique de taille quelconque

1.2.3 Indexation des matrices


Pour extraire un élément d’une matrice, il suffit de spécifier l’indice de la ligne et celui de
la colonne où se trouve cet élément.
A(m,n) est l’élément en ligne m et en colonne n de A.
A(k) est le kème élément de la matrice en la parcourant en colonne.
Dans Matlab, l’indexation commence à 1.
1. M(end) dernier élément du vecteur M ;
2. M(5 :9,3) les éléments de la matrice M situés de la ligne 5 à 9, et sur la colonne 3 ;
3. M( :,j) toutes les lignes de la matrice M, colonne j ;
4. M(i, :) toutes les colonnes de la matrice M, ligne i ;
5. M(1 :5,1 :3) les éléments de la matrice M situés sur les lignes 1 à 5, et sur les colonnes 1
à 3.
Une illustration de cet indexation est faite par la figure 1.5

Figure 1.5 – Indexation d’une matrice

Calcul Scientifique avec Matlab 13


1.2. Les matrices sous MATLAB Chapitre 1

Indexation logique
Une matrice logique d’indexation désigne les éléments d’une matrice A en fonction de leurs
positions dans le tableau à indexer, et non leurs valeurs. Dans ce type d’opération de masquage,
chaque élément vrai de la matrice logique d’indexation est traité comme une index de position
dans la matrice à indexer.
A : matrice quelconque
B : matrice logique de même taille
A(B) = élément de A ou B est vrai

Exemple 1.11. A = [1 5 3 9 4 7] ; B = A<=5


B=111010
C = A(B)
C=1534

La fonction find permet de faire une rechercher dans une matrice. Elle renvoie les indices
des éléments non nuls.

Exemple 1.12. X = [Inf 3 8 1 -Inf] ; k = find(isfinite(X))


k=234

1.2.4 Concaténation de matrices


La concaténation de 2 ou plusieurs matrices de dimensions adéquates, peut se faire horizon-
talement ou verticalement.
Soit les matrices A et B suivantes : A = [5 7 3 ; 2 9 4] et B = [5 3 0 ; 7 1 6]
— La concaténation horizontale se fait comme suit : ConcatHoris = [A B]. il est à noté que
les matrices doivent avoir le même nombre de lignes.
— La concaténation verticale se fait en faisant suivre A par un point-virgule. Les matrices
doivent avoir le même nombre de colonnes. ConcatVert = [A ; B]
La fonction « cat »
Nous pouvons aussi utiliser la commande cat, en spécifiant la dimension selon laquelle on
concatène ces matrices.
La syntaxe est la suivante : cat (dim, M1, M2)
Si dim = 1 alors on effectue une concaténation verticale ;
Si dim = 2 on effectue plutôt une concaténation horizontale.

1.2.5 Le calcul matriciel


MATLAB est un logiciel initialement prévu pour effectuer des calculs matriciels, un certain
nombre d’opérations peuvent donc être effectuées avec très peu d’instructions.

Calcul Scientifique avec Matlab 14


1.2. Les matrices sous MATLAB Chapitre 1

Figure 1.6 – Multiplication de deux matrices

1. Addition, Soustraction : L’addition et la soustraction de matrice se font élément par


élément. Les matrices doivent obligatoirement être de mêmes dimensions.

Exemple 1.13. soit z = [1 7 ; 3 5 ; 9 2] et y = [5 0 ; 1 50 ; 0 60]. Que vaut z+y et z-y ? ? ?

2. Produit : Le produit d’une matrice de dimension (n1, m1) par une matrice de de dimen-
sion (n2, m2) donne une matrice de dimension (n1, m2). Pour multiplier deux matrices,
le nombre de colonne de première doit être égale au nombre de ligne de la deuxième.
La figure 1.6 suivante montre comment calculer les coefficients C12 et C33 de la matrice
produit C = AxB, si A est une matrice de dimensionne (4,2), et B est une matrice de
dimension (2,3).
3. Division : Soit X une matrice de m lignes et n colonnes et Y une matrice carrée de nxn.
La division matricielle X/Y consiste à multiplier la matrice X par la matrice inverse de Y.
La division matricielle X/Y est équivalent à X * inv(Y).
4. Puissance : Pour élever une matrice X à la puissance y, la syntaxe est la suivante : X ŷ.
La matrice X doit être une matrice carrée.
5. Opération sur un scalaire : Ajouter ou retrancher un scalaire à une matrice, revient
à l’ajouter ou le retrancher à toutes ses composantes. De même, la multiplication et la
division d’un vecteur par un scalaire sont réalisées sur toutes les composantes du vecteur.
6. Transposée : La transposée d’une matrice, sera réalisée à l’aide de l’opérateur de trans-
position « ‘ » ou avec la fonction transpose().
7. Calcul élément par élément : En précédent d’un point les opérations *, /, \, on réalise
des opérations élément par élément. Dans ce cas, les matrices doivent être de même taille.

Calcul Scientifique avec Matlab 15


1.3. Mathématiques et types de données sous Matlab Chapitre 1

1.2.6 Manipulation de matrices


On peut supprimer une ou plusieurs lignes ou colonnes d’une matrice en les remplaçant par
un ensemble vide symbolisé par deux crochets vides « [ ] ».

Exemple 1.14. soit A = [1 5 3 ; 4 5 5 ; 8 6 2 ; 6 5 8] ; A( :1) = []

1. La commande size(), permet de récupérer les dimensions d’une matrice.


La longueur d’une matrice est, par définition, sa plus grande dimension. On peut l’obtenir
avec la commande length() ;
2. Le nombre d’élément d’une matrice est donné par la fonction numel().

3. Vous pouvez mettre une matrice sous la forme d’une colonne avec la syntaxe : z = z( :)

4. L’assignation d’un élément est composée d’une indexation suivie d’une affectation. As-
signation d’un élément : M(i,j) = a
Assignation de plusieurs éléments : M([i k],j) = [a b]

1.3 Mathématiques et types de données sous Matlab

1.3.1 Les mathématiques sous Matlab


Les fonctions mathématiques fournissent une gamme de méthodes de calcul numériques
pour analyser des données, développer des algorithmes et créer des modèles. Les fonctions
de base utilisent des bibliothèques optimisées pour le processeur pour les calculs vectoriels et
matriciels rapides.
Les opérations arithmétiques sous MATLAB
Dans le mode interactif, MATLAB peut être utilisé comme une « super puissante » cal-
culatrice scientifique. On dispose des opérations arithmétiques et d’un ensemble important de
fonctions de calcul numérique et de visualisation graphique. Les opérations arithmétiques de
base dans MATLAB sont : + pour l’addition, – pour la soustraction, * pour la multiplication et
/ ou \ pour la division. La division à droite et la division à gauche ne donnent pas les mêmes
résultats, ce sont donc deux opérations différentes que ce soit pour les scalaires ou pour les
matrices et vecteurs.

Exemple 1.15. 5 + 5 - 2 * 3
8/2
8\2

Calcul Scientifique avec Matlab 16


1.3. Mathématiques et types de données sous Matlab Chapitre 1

Les opérations peuvent être enchainées en respectant les priorités usuelles des opérations et
en utilisant des parenthèses. MATLAB possède l’opérateur « »ˆ pour l’élévation à une puissance
entière ou réelle. L’élévation à une puissance est prioritaire par rapport aux autres opérations :
l’utilisation des parenthèses est recommandée.

Exemple 1.16. 4*(-5)+12


2.3*(4-3)/(3+15)
ˆ
5.3(-1.5)
ˆ
9(1/2)

Formats des nombres et précision des calculs


MATLAB a la possibilité d’afficher les valeurs des variables sous différents formats : flot-
tants courts (short), flottants longs (long), flottants courts en notation scientifique (short e),
flottants longs en notation scientifique (long e), ainsi que les formats monétaire, hexadécimal et
rationnel (notation sous forme d’une fraction).

Exemple 1.17. 22/7


format short
format long
format short e
format long e
format rat
format hex

Les fonctions statistiques


MATLAB met à disposition beaucoup de fonctions statistiques. le tableau 1.2 suivant en est
un résumé.
Les polynômes sous Matlab
MATLAB représente un polynôme sous la forme d’un vecteur de ses coefficients classés
dans l’ordre des puissances décroissantes. Le polynôme P d’expression : P (x) = x2 ˘6x + 9, est
représenté par le vecteur suivant : P = [1 -6 9]. Les principaux problèmes liés aux polynômes
sont :
— la recherche de racines ;
— l’évaluation ;
— l’adaptation à des données.
Les fonction usuelles sur les polynômes sont répertories dans le tableau 1.3 suivant :

Calcul Scientifique avec Matlab 17


1.3. Mathématiques et types de données sous Matlab Chapitre 1

mean(A) calcule et renvoie la moyenne de chaque colonne de


la matrice A
min(A) ou max(A) renvoie le minimum ou le maximum du vecteur A ou
le vecteur des minimas des colonne de la matrice A.
sort(A) trie les éléments du vecteur A ou trie chaque colonne
de la matrice A dans l’ordre ascendant.
sortrows(A) effectue le tri ligne par ligne (sélection possible des
colonnes sur lesquelles le tri est basé).
sum(A) renvoie la somme des éléments du vecteur A ou le
vecteur des sommes de chaque colonne de la matrice
A.
prod(A) renvoie le produit des éléments du vecteur A ou le
vecteur des produits de chaque colonne de la matrice
A.
unique supprime les valeurs en double dans une matrice
sqrt racine carré
round arrondir vers 0
fix arrondir vers -inf
ceil arrondir vers inf
any — Vecteur : renvoie 1 (vrai) s’il existe un élément
non nul dans le vecteur
— Matrice : renvoie un vecteur ligne donnant le ré-
sultat de la fonction pour chaque vecteur colonne
de la matrice.
all — Vecteur : renvoie 1 (vrai) si tous les éléments du
vecteur sont non nuls
— Matrices : renvoie un vecteur ligne donnant le ré-
sultat de la fonction pour chaque vecteur colonne
de la matrice

Tableau 1.2 – Quelques fonctions trigonométriques

1.3.2 Les types de données sous MATLAB


Par défaut, MATLAB stocke toutes les variables numériques en tant que valeurs à virgule
flottante double précision. Les types de données supplémentaires stockent du texte, des valeurs
entières ou à simple précision, ou une combinaison de données connexes dans une seule va-
riable.
Les nombres complexes sous MATLAB
L’imaginaire pur i (i2 = −1) est noté i ou j. Un nombre complexe est donc de la forme
z = a + ib ou a + jb. Mais MATLAB, dans ses réponses, donne toujours le symbole i. Il n’ est
plus nécessaire d’écrire le signe de multiplication ‘*’ avant i (ou j) par contre nécessaire avant
le nom de variable.
Les chaines de caractères sous MATLAB

Calcul Scientifique avec Matlab 18


1.3. Mathématiques et types de données sous Matlab Chapitre 1

roots(P) Détermine les racines du polynômes P.


polyval(P, a) Pour évaluer un polynôme P en un point a
poly(r) Déterminer les coefficients d’un polynôme à partir de
ses racines
plot (x, y) Pour tracer la représentation graphique du polynôme
y dans le domaine x
conv (P1, P2) multiplication de P1 par P2
deconv (P2, P1) division de P1 par P2
polyint(P) retourne les coefficients de la primitive du polynôme
P
polyder(P) retourne les coefficients du polynôme dérivé de P

Tableau 1.3 – Quelques fonctions sur les polynômes

Une chaîne de caractères est considérée par MATLAB comme un vecteur ligne dont le
nombre d’éléments est le nombre de ses caractères représentés par leur code ASCII. Ainsi, pour
déclarer une chaîne de caractères, vous devez placer le texte entre deux guillemets simple.

abs(chaine) retourne le module dun complexe ou le code ascii


d’un caractère.
char(tableau) Convertit un tableau d’entiers non négatifs en carac-
tères
[ch1 ch2] concaténer les chaines ch1 et ch2. ceci peut aussi être
réaliser à l’aide de la fonction strcat()
strcmp(ch1, ch2) Compare 2 chaînes de caractères données en argu-
ments.
findstr(ch1, ch2) Recherche d’une chaîne dans une autre.
strrep(Ch1,Ch2,Ch3) remplace toutes les occurrences de la chaîne Ch2 dans
Ch1 par la chaîne Ch3
poly2str(polynôme,variable) Retourne un polynôme sous forme d’une chaîne de
caractères.

Tableau 1.4 – Quelques fonctions sur les polynômes

Les dates sous MATLAB


La manipulation des dates et des heures représente une part importante des calculs effectués
sous MATLAB.MATLAB gère la date sous 3 types de format différents :
— chaînes de caractères,
— nombres,
— vecteurs.
La commande date retourne la date du jour sous forme d’une chaîne de caractères. La com-
mande now retourne la date et l’heure actuelle sous la forme d’un seul nombre dont l’entier
inférieur correspond à la date du jour et le reste à l’heure actuelle. Le nombre correspond au

Calcul Scientifique avec Matlab 19


1.4. La programmation sous Matlab Chapitre 1

nombre de jours passés depuis une date de base. Dans MATLAB, cette date de base est le 1er
Janvier 2000.
Les structures sous MATLAB
Une structure est un tableau multidimensionnel dont l’accès aux éléments s’effectue par
l’utilisation de nom de champs. Ce type de variable convient parfaitement aux données réfé-
rencées (base de données, carnet d’adresses. . .) Comme les tableaux de cellules, les structures
peuvent contenir tous les types de variables (matrice, chaîne de caractère, tableau de cellules,
structures etc. . .).
L’initialisation d’une structure s’effectue directement ou à l’aide de la fonction STRUCT.
Le code suivant permet de crée une structure Donnees dont les 4 champs seront « nom », «
prenom », « age » et « fonction ».
Donnees.nom = ’Matlab’ ; Donnees.prenom = ’Mamad’ ; Donnees.fonction = ’Ingénieur’ ;Don-
nees.age = 30 ;
Donnees

1.4 La programmation sous Matlab


MATLAB peut exécuter une séquence d’instructions stockées dans un fichier de programmes.
Ce fichier est appelé fichier M (M-file).
La majorité de votre travail avec MATLAB sera liée à la manipulation de ces fichiers.
Il y a deux types de fichiers M : les fichiers de commandes (fichiers scripts) et les fichiers
de fonctions. La figure 1.7 suivante présente l’interface de l’éditeur de code sous matlab
Cet éditeur permet entre autre d’exécuter un programme, créer, ouvrir ou enregistrer un fi-
chier M, insérer des commentaires (%), indenter votre code, insérer une fonction ou une section,
chercher et remplacer une expression ...
Les structures sous MATLAB
Sous MATLAB, il n’y a pas de déclaration de types. De même, l’utilisateur ne s’occupe pas
de l’allocation mémoire. L’allocation et la déclaration de type est implicite sous MATLAB :
Le premier caractère d’un nom de variable est obligatoirement une lettre ensuite, vous pou-
vez mettre une lettre (non accentuées) ou un chiffre ou « _ ». Le nombre de caractères est limité
à 63 caractères maximum
Attention : MATLAB est sensible à la casse Abc6=abC !
Matlab dispose de quelques variables et constantes spéciales
— ans → dernière réponse ;
— pi → Π ;
— inf, -inf → infini ;
— NaN → Not a Number

Calcul Scientifique avec Matlab 20


1.4. La programmation sous Matlab Chapitre 1

Figure 1.7 – Editeur Matlab

1.4.1 Les scripts sous MATLAB


Un script est un fichier texte portant l’extension *.m (M-files) et contenant une séquence
d’instructions MATLAB.
— Les Scripts sont utilisés pour automatiser une série de tâches ;
— Ils ne reçoivent pas d’argument d’entrées et ne possèdent pas de sorties ;
— Espace de travail commun de MATLAB (Workspace) ;
— Un Script peut appeler un autre Script ou s’appeler lui-même de façon récursive.

Exemple 1.18. Écrire un script qui permet de résoudre et de tracer la courbe du polynôme
P (x) = x2 − 4x + 5

1.4.2 Les fonctions sous MATLAB


Une fonction est un fichier texte portant l’extension *.m (M-files) et contenant une séquence
d’instructions MATLAB.
— Permet d’étendre les fonctionnalités de MATLAB ;
— Arguments d’entrée et de sortie (plusieurs entrées et sorties possibles) définis dans un
prototype ;

Calcul Scientifique avec Matlab 21


1.4. La programmation sous Matlab Chapitre 1

— Espace de travail local à la fonction.

Exemple 1.19. Écrire une fonction qui génère un tableau de n nombres aléatoires entiers com-
pris entre 0 et une valeur maximale.

le prototype d’une fonction est la définition des arguments de sortie, du nom de la fonction,
des arguments d’entrée. Sans cette première ligne, le fichier M correspond plutôt à un fichier
script.
le nom de la fonction doit respecter les règles suivantes :
— Commence par une lettre
— Caractères alphanumériques ou underscores
— Taille limitée (commande namelengthmax)
— Le nom du fichier M-files doit correspondre au nom de la fonction
— Si la fonction possède plusieurs sorties, il faut les énumérer entre crochets, séparés par
une virgule.
— Si la fonction possède plusieurs entrées, il faut les énumérer dans les parenthèses qui
suivent le nom de la fonction, séparés par une virgule
L’appel d’une fonction se fait par son nom avec ses entrées et ses sorties. Cet appel peut être
effectué depuis :
— l’interpréteur MATLAB
— une autre fonction
— un script
L’exécution d’une fonction s’achève :
— lorsque la fin du script définissant la fonction à été atteint ;
— lorsque une commande return ou un appel de la fonction error a été rencontrée ;
— return termine immédiatement l’exécution de la fonction sans que la fin du script définis-
sant celle-ci ait été atteint ;
— error(’message’ ) procède de même, mais en plus, affiche le contenu de ’message’.
Le contrôle est alors renvoyé au point d’appel de la fonction, fenêtre de commande ou autre
fonction.
Les sous-fonctions : Une sous-fonction est une fonction qui est créée et utilisée dans une
même fonction primaire. La fonction primaire est la fonction principale et porte le même nom
que le fichier et est déclarée en premier dans le fichier. Les sous-fonctions ne sont visibles que
pour la fonction primaire, elles sont déclarées de la même manière que les fonctions primaires.
Portée d’une variable : Les variables dans les fonctions sont par défaut locales à la fonc-
tion.

Calcul Scientifique avec Matlab 22


1.4. La programmation sous Matlab Chapitre 1

Fonction privée : Une fonction privée est une fonction créée dans un sous-répertoire nom-
mée private du répertoire contenant la fonction en cours d’exécution. Seules les fonctions du
répertoire parent peuvent accéder aux fonctions situées dans le sous-répertoire private.
Ordre de recherche d’une fonction : Lorsque vous faite appel à une fonction, MATLAB
cherche la fonction dans l’ordre suivant :
1. Les sous-fonctions (s’il y en a) ;
2. Les fonctions privées (sous-répertoire private du répertoire contenant la fonction en cours
d’exécution) ;
3. Les fonctions situées dans le répertoire courant (pas nécessairement celui de la fonction) ;
4. Les fonctions situées dans les répertoires listés dans le path de MATLAB.

1.4.3 Les Structures de contrôles sous Matlab


Il existe 5 structures sous MATLAB :
1. L’instruction if ;
2. Choix ventilé : l’instruction switch ;
3. Boucle for ;
4. Boucle while ;
5. Les instructions break, continue, return, error, warning ;
6. Le traitement des erreurs avec try . . .. catch.
L’instruction if
L’instruction if évalue une expression logique et exécute un groupe d’instructions lorsque
l’expression logique est vraie.
Les instructions facultatives elseif et else permettent d’imbriquer des boucles condition-
nelles supplémentaires. L’instruction end, clôture la structure conditionnelle if.

Exemple 1.20. écrire une fonction qui permet de vérifier si un entier naturel donné n est pair
ou impair.

L’instruction switch et case


L’instruction switch exécute un groupe d’instructions relativement à la valeur prise par une
variable. Les instructions case et otherwise délimitent les groupes.
Le end est obligatoire à la fin de la structure.

Exemple 1.21. écrire une fonction qui permet de convertir les 5 premiers chiffres en lettres.

L’instruction for
La boucle for permet de répéter un nombre de fois prédéterminé une séquence d’instruc-
tions. Le end est obligatoire à la fin de la structure.

Calcul Scientifique avec Matlab 23


1.4. La programmation sous Matlab Chapitre 1

Exemple 1.22. écrire une fonction qui permet de générer les carrés des n premiers nombres
entiers naturel.

L’instruction while
La boucle while permet de répéter une séquence d’instructions selon une condition. Le end
est obligatoire à la fin de la structure.

Exemple 1.23. écrire une fonction qui affiche le plus petit entier naturel n tel que 2n soit supé-
rieur ou égal à un nombre x donné.

L’instruction break
L’instruction break permet de sortir d’une boucle for ou d’une boucle while. L’exécution
se poursuit alors séquentiellement à partir de l’instruction suivant le mot clé end fermant la
boucle. En cas de boucles imbriquées, on interrompt seulement l’exécution de la boucle inté-
rieure contenant l’instruction break.
L’instruction continue
L’instruction continue permet de sauter à l’itération suivante dans une boucle for ou while.
L’instruction return
L’instruction return provoque un retour au programme appelant (ou au clavier). Les ins-
tructions suivant le return ne sont donc pas exécutées. L’instruction return est souvent utilisée
conjointement avec une instruction conditionnée par exemple pour tester dans le corps d’une
fonction si les paramètres d’entrée ont les valeurs attendues.
L’instruction error
L’instruction error permet d’arrêter un programme et d’afficher un message d’erreur. La
syntaxe est error(‘ message d »erreur ‘).
L’instruction try catch
Quand on s’attend à une erreur d’exécution, try . . . catch permet de tester l’exécution d’un
groupe d’instructions (entre try et catch). En cas d’erreur, l’exécution s’interrompt et un autre
groupe d’instructions est exécuté (entre catch et end)
Les variables globales
Toutes les variables définies à l’intérieur d’une fonction sont des variables locales à cette
fonction.
La communication avec des variables du programme principal (ou du workspace) ou avec
des variables d’autres fonctions se fait uniquement par les variables d’entrée et sortie de la
fonction.
Toutefois, il est possible de déclarer certaines variables comme des variables globales.
Une variable globale peut être partagée entre un programme principal et plusieurs fonctions
sans qu’il soit besoin de la spécifier parmi les variables d’entrée-sortie des différentes fonctions.
On déclare une variable globale grâce au mot clé global.

Calcul Scientifique avec Matlab 24


1.5. Les interfaces graphiques sous MATLAB Chapitre 1

1.5 Les interfaces graphiques sous MATLAB


Une interface graphique est un affichage graphique :
— Permettant à l’utilisateur d’effectuer des tâches interactives ;
— Rendant compte des résultats de l’interaction avec l’utilisateur ;
— Contenant des objets graphiques : menus, barre d’outils, boutons, liste déroulante, axes
...
Fonctionnement
A chaque composant de l’interface, sont associées des fonctions utilisateur : des callbacks
et des propriétés en lecture ou en écriture.
— Les callbacks sont déclenchées sur des actions particulières de l’utilisateur comme un clic
souris, sélection d’un menu, un survol ;
— Les propriétés en lecture ou en écriture peuvent se faire sur des valeurs, chaines de carac-
tères, de la visibilité.
Les interfaces graphiques sont programmées de façon événementielle donc asynchrone.

1.5.1 Les objets graphiques sous MATLAB


Les fonctions de visualisation de MATLAB manipulent des objets graphiques : figures, sys-
tèmes d’axes, lignes, zones de texte
Sous matlab, il est possible de créer des interfaces graphiques de deux manères :
1. En utilisant l’utilitaire GUIDE ;
2. En procédant par programmation

1.5.2 Utilisation de GUIDE


Le GUIDE ou Graphical User Interface Development Environment en anglais est un en-
vironnement de développement d’interfaces graphiques pour MATLAB. Les interfaces gra-
phiques sont programmées de façon à répondre aux événements. Contrairement à la program-
mation traditionnelle, les événements générés par l’interface utilisateur (qui sont causés par
l’interaction de l’utilisateur avec celui-ci) dirigent le comportement du programme.
Dans GUIDE, chaque événement généré par l’interface graphique génère un appel de fonc-
tion. Cette fonction s’appelle : « Callback ». Par exemple, un clic sur un bouton génère un
événement qui appelle la fonction liée à ce bouton. La même source d’événements peut géné-
rer plusieurs types d’événements. Le bouton peut générer un événement lorsqu’il est appuyé,
lorsqu’il est relâché et lors d’un clic. Cliquer sur un bouton génère ainsi les trois événements.

Calcul Scientifique avec Matlab 25


1.5. Les interfaces graphiques sous MATLAB Chapitre 1

Le code du programme réside principalement dans les fonctions que les sources d’événe-
ments appellent. Le programmeur indique au GUIDE les événements pour lesquels il désire ef-
fectuer une réponse. GUIDE place une déclaration du Callback dans le fichier *.m pour chaque
fonction. Le programmeur ajoute ensuite son code après la déclaration. Le code sera exécuté à
partir de la déclaration jusqu’à la ligne précédant la prochaine déclaration.
Le principe de création d’une interface graphique avec GUIDE est le suivant :
— Créer l’interface grâce à l’éditeur du GUIDE ;
— Générer un fichier .fig pour la figure et un fichier .m pour le code ;
— Compléter le fichier .m contenant le code.
Pour démarrer GUIDE, taper GUIDE dans la fenêtre de commande de MATLAB. Une fe-
nêtre « GUIDE Quick Start » s’ouvrira vous donnant le choix entre quatre modèles. Choisir le
premier et cliquer sur «Ok», car il n’est pas prédéfini et ne contient aucun objet. Les autres vous
seront utiles lorsque vous comprendrez davantage le processus. ceci est illustré par la figure 1.8.
La fenêtre de l’interface graphique s’ouvrira. C’est dans cette fenêtre que vous placerez les
objets avec lesquels l’utilisateur va interagir.
La figure 1.8 suivante présente l’interface de GUIDE.

(a) Démarrage de GUIDE (b) Présentation de l’interface de GUIDE

Figure 1.8 – Présentation de GUIDE

Après avoir créer une fenêtre vide, on peut effectuer les actions suivantes
1. Tailler la figure : Pour modifier la taille de la figure, vous pouvez utiliser la souris en
déplaçant le coin en bas à droite de la fenêtre ou utiliser l’explorateur de propriétés (Po-
sition).
2. Ajouter des composants : Pour ajouter un composant, il suffit d’appuyer sur le bouton
correspondant à l’objet voulu, et en tracer un cadre sur la figure. L’objet sera de la taille
du cadre dessiné. Ici on place un bouton poussoir simple. Ici on place un bouton poussoir
simple.

Calcul Scientifique avec Matlab 26


1.5. Les interfaces graphiques sous MATLAB Chapitre 1

3. Définir les propriétés de chaque composant Vous pourrez constater que le texte écrit
sur le bouton est en Anglais. Ce texte fait partie des propriétés par défaut du bouton.
Double-cliquer sur le bouton.
4. Sauvegarde du GUIDE :
5. Sauvegarder maintenant votre fichier *.fig. Vous verrez maintenant apparaître un fichier
*.m (contient le code) portant le même nom que le fichier *.fig (la figure). Contenu du .m
Ci dessous les 5 parties du fichier M :
— Entête du fichier : A éditer pour formaliser l’aide (help) ;
— Initialisation code : Ne pas toucher
— OpeningFcn : Appelée après la création de tous les objets, avant de rendre visible la
figure.
— OutputFcn : Renvoie à la ligne de commande les sorties qui ont été générées par
l’exécution de la figure.
— Callbacks des composants : Exécutés sur interaction avec utilisateurs.

Exemple 1.24. Réaliser un traceur de courbe à l’aide d’une interface graphique.

Calcul Scientifique avec Matlab 27


Chapitre 2

Résolution d'équations non


linéaires
2.1 Introduction

Le but de ce chapitre est de décrire les algorithmes les plus fréquemment utilisés pour
résoudre des équations non linéaires du type :

f (x) = 0


1. x est une variable réelle, f une fonction à valeurs réelles
2. x est une variable complexe, f une fonction à valeurs complexes
3. x est un vecteur de Rn , f une fonction de Rn dans Rn .
Le premier point sera le plus détaillé : la convergence des algorithmes est analysée. On
présentera également des techniques d'accélération de convergence. Pour les fonctions
complexes, on insistera sur le cas des polynômes. Pour les fonctions de Rn dans Rn on
présentera rapidement les algorithmes qui seront en fait inspirés de la dimension 1.

2.2 Cas des fonctions d'une variable

2.2.1 Préliminaires : séparation des zéros


Exemple 2.1 : résoudre x − 0, 2 sin x − 0, 5 = 0, x réel.
Exemple 2.2 : résoudre cos x = e−x , x réel.
Le premier travail consiste en une analyse mathématique minimale pour séparer les
zéros, c'est-à-dire déterminer des intervalles [ai , bi ] dans lesquels l'équation considérée
a une solution et une seule.
La méthode la plus simple est d'utiliser qu'une fonction continue strictement monotone
sur un intervalle [ai , bi ] et telle que f (ai ) f (bi ) ≤ 0 a un zéro et un seul dans l'intervalle
[ai , bi ]. Par exemple :
f1 (x) = x − 0, 2 sin x − 0, 5
f1′ (x) = 1 − 0, 2 cos x ≥ 0 pour tout x .
Donc f1 est strictement croissante sur R. Comme f1 (0) = −0, 5 < 0 , f1 (π) = π−0, 5 >
0, f1 a un unique zéro dans [0, π].

17
18 CHAPITRE 2. RÉSOLUTION D'ÉQUATIONS NON LINÉAIRES

Un calcul similaire pour l'exemple 2.2 conduit à une impasse si on pose f2 (x) :=
cos x − e−x puisque la dérivée f2′ (x) = sin x + e−x est du même type. Cette situation
est bien sûr beaucoup plus fréquente. On peut alors :
A/ choisir plus judicieusement la fonction auxiliaire f2 . Ici, on peut par exemple poser
f2 (x) := ex cos x − 1. Les zéros de f2 sont exactement les solutions de (2.2). D'autre
part : (
√ π)
f2′ (x) = ex (cos x − sin x) = 2ex cos x − .
4
Ainsi
[π f2 est strictement] monotons sur les intervalles du type (π )
2 , 4 + (k + 1) 2 , k entier. L'étude des signes successifs de f 4 + k 2 permet
π π π π
4 + k
alors de localiser les zéros éventuels.
B/ On peut procéder par tatonnements en s'aidant au maximum d'informations complé-
mentaires disponibles. Ainsi, dans l'exemple 2.2, le tracé des représentations graphiques
des fonctions x 7−→ cos x et x 7−→ e−x est particulièrement suggestif.
Dans la suite, nous nous placerons le plus souvent dans le cas où f : [a, b] → R admet
un unique zéro dans l'intervalle [a, b] .

2.2.2 Quelques algorithmes classiques


2.2.2.1 Méthode de dichotomie (ou bisection)
Reprenons l'exemple 2.1. Nous avons vu que si f (x) = x − 0.2 sin x ( π−) 0.5, f (0) <
0, f (π)
(π)> 0 ; d'où un zéro dans (0, π). Si on calcule la valeur
[ π] de f en 2 , on constate
que f
( ) 2 = π
2 − 0, 7 > 0. Donc ce zéro est [en fait
] dans 0, 2 . On peut alors calculer
f π4 = 0, 14 > 0, qui montre qu'il est dans 0, π4 .
Il est clair qu'une répétition de ce procédé donne un encadrement de plus en plus précis
du zéro cherché et fournit donc un algorithme de calcul de ce zéro.
Algorithme 2.1 : Soit f : [a0 , b0 ] → R continue et telle que f (a0 ) f (b0 ) ≤ 0.

Pour n = 0, 1, 2, ..., N, faire
 m := (an +b n)
 2
 Si f (an ) f (m) ≤ 0, an+1 := an , bn+1 := m
Sinon an+1 := m, bn+1 := bn .
On a : an+1 − bn+1 = 12 (an − bn ), soit par récurrence an − bn = 21n (a0 − b0 ). Il en
résulte que cette méthode est toujours convergente puisque an − bn tend vers 0 quand
n tend vers l'inni. On peut choisir le temps d'arrêt N pour que :
1
(a0 − b0 ) < ε = précision choisie.
2N
On obtient alors un encadrement de la solution cherchée à la précision voulue. Bien que
cette situation soit très alléchante, on verra qu'en fait cette méthode converge plutôt
lentement comparée à celles qui suivent.
Remarque 2.1 Dans l'exemple 2.1, on a f (0) = −0, 5 , f (π) = 2, 64. Ceci laisse
immédiatement penser que le zéro cherché doit être plus près de 0 que de π . Le plus
ecace n'est donc pas de tester la valeur de f en le milieu de [0, π] mais plutôt en un
point plus voisin de 0 tenant compte de cette diérence de poids entre f (0) et f (π).
Ceci conduit aux algorithmes dits de fausse position qui convergent généralement plus
vite. Nous ne les expliciterons pas ici.
Remarque 2.2 La méthode ci-dessus converge même si f a plusieurs zéros dans l'in-
tervalle [a0 , b0 ] .
2.2. CAS DES FONCTIONS D'UNE VARIABLE 19

2.2.2.2 Méthode de la sécante


Soit f admettant un zéro dans l'intervalle [x−1 , x0 ] . Pour obtenir une première approxi-
mation de ce zéro, l'idée est de remplacer f par son interpolé linéaire sur [x−1 , x0 ], soit
par
f (x0 ) − f (x−1 )
Y (x) = f (x0 ) + (x − x0 ) ,
x0 − x−1
l'unique fonction linéaire dont les valeurs coïncident avec celles de f en x−1 et x0 .
L'approximation x1 est alors obtenue en résolvant :

Y (x1 ) = 0

soit
x0 − x−1
x1 = x0 − f (x0 ) .
f (x0 ) − f (x−1 )
Géométriquement (cf Figure 2.1), ceci revient à remplacer la courbe d'équation y =

xn−1 xn+1
xn

Figure 2.1  Méthode de la sécante


f (x) par la sécante AB et xn+1 est l'intersection de AB avec la droite (Ox) .
Comme le montre le dessin, xn+1 semble plus voisin du zéro cherché que xn−1 ou xn .
Pour trouver une meilleure approximation, il sut de répéter le procédé à l'aide des
points (xn , xn+1 ). En continuant, on obtient l' :
Algorithme 2.2 : x0 et x−1 étant donnés,

Pour n = 0, 1, 2, ...
 xn − xn−1
xn+1 = xn − f (xn ) .
f (xn ) − f (xn−1 )

2.2.2.3 Critère d'arrêt


Cet algorithme n'est évidemment pas complet tant qu'on n'a pas précisé un critère
d'arrêt. Nous verrons plus loin que, généralement, xn converge vers la solution x∞
cherchée ce qui signie que pour n grand, xn est voisin de x∞ . Sans plus d'informations,
20 CHAPITRE 2. RÉSOLUTION D'ÉQUATIONS NON LINÉAIRES

il est dicile de savoir ce que signie numériquement  n grand, et c'est là une diculté
fréquente en analyse numérique.
Un critère d'arrêt souvent utilisé consiste à choisir a priori une tolérance ε et à terminer
l'algorithme lorsque
|xn+1 − xn | ≤ ε . (2.1)
Ce n'est pas complètement satisfaisant ; pour s'en convaincre, on peut penser à la suite :
1 1
xn = 1 + + ... +
2 n
qui vérie limn→∞ |xn+1 − xn | = 0 bien que tendant vers l'inni.
Puisqu'on veut résoudre f (x) = 0, un autre critère d'arrêt possible consiste à s'arrêter
lorsque
|f (xn )| < ε . (2.2)
Un numéricien particulièrement scrupuleux pourra décider de ne s'arrêter que lorsque
les deux critères d'arrêts (2.1) et (2.2) sont simultanément vériés.
Dans le cas de l'algorithme de la sécante ci-dessus, on peut aussi utiliser :

|f (xn ) − f (xn−1 )| < ε .

ce critère d'arrêt a l'avantage d'éviter une possible division par 0.


Enn, pour éviter à l'ordinateur de tourner sans s'arrêter lorsqu'il n'y a pas convergence,
il est évidemment indispensable de toujours mettre un critère limitant le nombre
total d'itérations.

2.2.2.4 Méthode de Newton


Ici, au lieu d'assimiler la courbe  y = f (x) à une sécante, on l'assimile à la tangente
en un point (xn , f (x0 )) soit, la droite d'équation :

Y = f (xn ) + f ′ (xn ) (x − xn ) .

Son intersection avec l'axe des abscisses fournit une approximation de la solution x∞ .
A nouveau, on renouvelle le procédé jusqu'à obtenir une approximation susante, d'où
l' :
Algorithme 2.3 : x0 étant donné
[
Pour n = 0, 1, 2, ...
xn+1 = xn − ff′(x n)
(xn ) .

Remarque 2.3 Cet algorithme est initié à l'aide d'un seul point. Il peut être vu comme
−xn−1
une modication de l'algorithme précédent où le quotient f (xxnn)−f (xn−1 ) a été remplacé
par f ′ (xn ) . Nous verrons plus loin qu'il donne lieu à une convergence beaucoup plus
1

rapide.

2.2.2.5 Méthode de point xe


Elle consiste à d'abord remplacer l'équation

(∗) f (x) = 0

par une équation


(∗∗) g (x) = x
2.2. CAS DES FONCTIONS D'UNE VARIABLE 21

f(xn)

xn+1 xn

Figure 2.2  Méthode de Newton

ayant mêmes solutions. On est ainsi ramené à la recherche des points xes de l'applica-
tion g . Le remplacement de (∗) par (∗∗) est toujours possible en posant, par exemple,
g (x) = f (x) + x. Ce n'est évidemment pas forcément le meilleur choix !
Exemple 2.3 : Pour l'équation
x2 − x − 2 = 0

on peut prendre

g (x) = x2 − 2

g (x) = 2+x
2
g (x) = 1+
x
x2 − x − 2
g (x) = x− pour tout paramètre m ̸= 0.
m
l'équation étant sous la forme (∗∗), on a alors l'algorithme suivant :
Algorithme 2.4 : On choisit x0
[
Pour n = 0, 1, 2, ...
xn+1 = g (xn ) .

Cette méthode est justiée par la :


Proposition 2.1 Soit g : [a, b] → [a, b] continue et x0 ∈ [a, b] . Si xn converge vers
x∞ , alors
x∞ = g (x∞ ) .

La démonstration est immédiate en passant à la limite dans l'égalité xn+1 = g (xn ) et


en utilisant la continuité de g au point x∞ .
Une diculté majeure dans l'algorithme 2.4 est qu'il peut arriver√qu'on ne puisse cal-
culer g (xn ). Il sut de penser à ce qui se passe lorsque g (x) = − x !
Introduction au calcul scientifique 1

MA261. Introduction au calcul scientifique


TP 1 : Introduction à Matlab.

Exercice 1 Soient les vecteurs colonnes et la matrice suivants


       
1 −5 −1 2 3 4
~u1 =  2  , ~u2 =  2  , ~u3 =  −3  , A =  7 6 5  .
3 1 7 2 8 7

1. Structures Matlab
(a) Entrer ces données sous Matlab.
(b) Calculer ~u1 + 3~u2 − ~u3 /5.
(c) Calculer le produit scalaire entre les vecteurs ~u1 et ~u2 .
(d) Calculer le produit A~u1 .
2. Commandes Matlab
Trouver les commandes Matlab permettant de :
(a) calculer k~u1 k2 , k~u2 k1 , k~u3 k∞ ;
(b) déterminer les dimensions de la matrice A, en extraire le nombre de colonnes ;
(c) calculer le déterminant et l’inverse de A.
3. Résolution de systèmes linéaires
Proposer deux méthodes permettant de résoudre le problème A~x = ~u1 , et déterminer
les commandes Matlab associées.

Exercice 2 Soient la matrice et les vecteurs colonnes suivants


     
5/8 −1/4 1/8 1 5
A = 1/4
 0 1/4  , ~b =  −1  , ~u1 =  2  .
1/8 −1/4 5/8 1 −4

On définit, pour n ≥ 1, la suite de vecteurs ~un+1 = A~un + ~b.


1. Construire une fonction suite.m calculant les premiers termes de la suite ~un . Cette
fonction aura comme arguments d’entrée les données suivantes : la matrice A, le
second membre ~b, le terme initial ~u1 , et le nombre de termes voulus nbit .
2. Représenter graphiquement l’évolution de chacune des composantes.
Qu’observe-t-on ?
3. Soient    
2 5 6 3
~u1b =  1  , Ab =  −1 5 −1  .
0 1 2 0
Observe-t-on le même comportement si on remplace ~u1 par ~u1b ? Que se passe-t-il si
on remplace A par Ab (quel que soit le terme initial) ?
Introduction au calcul scientifique 2

Exercice 3 Soit A ∈ Rn×n . On introduit le vecteur pA A


L (resp. pC ), appartenant à R ,
n

des indices des colonnes (resp. des lignes) du premier coefficient non nul de chaque ligne
(resp. de chaque colonne). Par convention, si tous les coefficients d’une ligne (resp. d’une
colonne) sont nuls, le nombre reporté est n + 1. Par exemple, pour la matrice
     
5 6 3 0 1 1
 0 5 −1 0 
 2  et pA 1.
   
A=  ∈ R4×4 , on a pA
L = C =
0 0 0 0 5 1
0 0 −1 4 3 4

Les profils en ligne PLA et en colonne PCA peuvent alors se définir comme étant :

PLA = (i, j) ∈ {1, . . . , n}2 : (pA



L )i ≤ j .

PCA = (i, j) ∈ {1, . . . , n}2 : (pA



C )j ≤ i .

Leur utilité première est d’éviter de stocker les composantes nulles en début de chaque
ligne ou colonne.
1. Écrire une fonction qui pour toute matrice calcule son profil ligne et colonne, i.e.
renvoie les vecteurs pA A
L et pC .
Aide : utiliser la fonction Matlab retournant le minimum d’un ensemble.
2. Comment pourrait-on simplement améliorer les profils en ligne et en colonne ?
3. Que peut-on dire des profils des matrices symétriques et symétriques définies-positives ?
Modifier en conséquence votre fonction.

Exercice 4 1. Écrire une fonction Matlab GenereMatrice générant une matrice d’ordre
quelconque avec des éléments aléatoires.
2. Écrire une fonction Matlab GenereSysteme construisant des systèmes linéaires aléatoires,
et les résolvant (lorsque c’est possible).