Outils Mathématiques et Utilisation de Matlab

Page 1 sur 45Lecteur de document UniversityLib

Outils Mathématiques et Utilisation de Matlab

Mathematical Tools and Data Analysis Using Matlab · course

Browse all mathématiques documents

Universit´e Pierre et Marie Curie - Paris VI

Outils Math´ematiques et utilisation de Matlab

Cours 2013-2014

Licence Professionnelle (L3)

Instrumentation Optique et Visualisation

Quentin Glorieux

[email protected]

Table des mati`eres

Avant-Propos

1 Introduction `a Matlab

1.1 La philosophie de Matlab

1.2 L’interface de Matlab

1.2.1 Command Window

1.2.2 Workspace

1.2.3 Command History

1.2.4 Current Folder

1.2.5 Editor

1.2.6 Help

”Hello World”

1.3.1

Script

1.3.2 Fonction

1.3

1.4 Outils de base

1.4.1 Types de variables

1.4.2 Pr´ecision

1.4.3 Arithm´etique et op´erations sur les scalaires

1.5 Vecteurs

1.5.1 D´efinir un vecteur

1.5.2 Manipuler un vecteur

1.5.3 Op´erations vectorielles

1.6 Matrices

1.6.1 D´efinir une matrice

1.6.2 Manipuler une matrice

1.6.3 Op´erations matricielles : addition et soustraction

1.6.4 Op´erations matricielles : produit

1.6.5 Op´erations matricielles : inverse et division

1.6.6 R´esoudre un syst`eme lin´eaire

1.7 Repr´esentation graphique

1.7.1 Graphique d’une fonction

1.7.2 Graphique de plusieurs fonctions

1.7.3 Bar graphs et Box plots

1.7.4 Histogrammes

1.7.5 Nuage de points

1.7.6 Graphiques des fonctions de 2 variables

1.7.7

Images

1.8 Notions de programmation

1.8.1 Boucles

1.8.2 Test SI

Travaux Pratiques 1

2 Traitement du signal

2.1 S´eries de Fourier

2.2 Application a la synthese de signaux sous Matlab

2.3 Transform´ee de Fourier

2.3.1 D´efinition

2.3.2 Transform´ee de Fourier discr`ete

5

1

1

1

1

2

2

2

3

4

4

4

4

5

5

5

6

8

8

9

10

11

11

13

14

14

15

16

18

18

19

22

23

24

24

26

27

27

27

29

33

33

34

36

36

36

4 Table des mati`eres

2.3.3 Un exemple pas `a pas de FFT

2.4 Corrig´es

36

40

Avant-Propos

Il s’agit des notes de cours destin´ees aux ´etudiants de Licence Professionnelle

LIOVIS de l’UPMC. Ce cours suppose une familiarit´e avec les notions de bases

d’alg`ebre, d’analyse et de statistiques. Le format de ce cours est compos´e de 4

s´eances de 4h de cours associ´ees `a 4 s´eances de 4h de travaux pratiques. Chaque

couple de s´eances (cours-TP) porte sur un theme di↵´erent associ´e a un chapitre

de ces notes. L’utilisation de logiciel de calcul est devenu depuis les ann´ees 70 ab-

solument indispensable dans le domaine scientifique, aussi bien pour le technicien

que l’ing´enieur ou le chercheur. Matlab a ´et´e d´evelopp´e par la soci´et´e Mathworks.

Il s’agit d’un des langages de programmation scientifique les plus populaires.

Dans ce cours nous allons parcourir les bases de Matlab pour analyser des

donn´ees ecacement, et simuler num´eriquement des syst`emes physiques. Il

faut bien comprendre la di↵´erence entre ces deux objectifs. D’une part une s´erie

de donn´ees est produite par une exp´erience et notre objectif est d’analyser ces

donn´ees pour en faire ressortir les ´el´ements les plus pertinents. Lorsque l’on parle

de donn´ee, il peut s’agir par exemple d’une mesure d’un param`etre physique, du

cours de la bourse, des r´eponses `a un sondage ou bien de tout autres valeurs pou-

vant ˆetre tabul´ees.

Lorsque l’on parle de simulations num´eriques, on s’int´eresse `a la mod´elisation d’un

syst`eme ce qui passe le plus souvent par la r´esolution d’´equations di↵´erentielles.

Pour ces deux objectifs, nous allons utiliser des notions de math´ematiques qui se-

ront parfois nouvelles pour le lecteur. Ce cours n’a pas pr´etention `a ˆetre un cours

formel et rigoureux du point de vue math´ematiques et je pr´esenterai donc uni-

quement les points n´ecessaires `a la compr´ehension des concepts sans entrer dans

les d´etails. Lorsque cela sera n´ecessaire, j’indiquerai les r´ef´erences bibliographiques

permettant de traiter ces notions math´ematiques plus en profondeur.

La particularit´e de Matlab est de manipuler uniquement des variables num´e-

riques (pas de calcul formel). Par d´efaut ces variables sont cod´ees sur 64 bits

(double pr´ecision) et peuvent contenir jusqu’`a 16 chi↵res significatifs. Les nombres

les plus grands manipul´es par Matlab sont 10306, au del`a de cette limite ils seront

consid´er´es comme infini et not´es Inf. R´eciproquement, les nombres les plus petits

306, au del`a de cette limite ils seront consid´er´es comme z´ero et not´es 0.

sont 10

Lorsqu’une valeur est manquante ou si le r´esultat d’un calcul n’existe pas ( 0

0 par

exemple), la variable prendra la valeur Nan.

Des alternatives libres existent

comme par exemple Scilab, R ou

Octave.

Nous verrons que les probl`emes

d’arrondi peuvent s’av´erer im-

portant lors que nous ´etudierons

la stabilit´e des m´ethodes de r´eso-

lution d’´equations di↵´erentielles.

,

Ce cours est divis´e en 2 parties. Dans le chapitre 1, je vais introduire l’interface

de Matlab et nous ´ecrirons le premier programme afin d’acher un message simple.

Nous ´etudierons ensuite la structure des donn´ees ainsi que les op´erations de base

, /). Une part importante de ce chapitre sera consacr´e `a la pr´esentation

(+,

de donn´ees sous forme de graphiques en 2D et 3D, ce qui nous simplifiera la

tache pour de nombreux exercices par la suite. Je ferai ´egalement quelques rappels

de statistiques ´el´ementaires. Enfin, ce chapitre se termine par la pr´esentation du

produit matriciel et son utilisation.

Le chapitre 2 a pour but d’introduire les notions essentielles au traitement de

donn´ees. L’analyse et le traitement de donn´ees est un sujet tr`es vaste qui n´eces-

siterais un cours a part entiere. Je pr´esenterai ici principalement deux sujets : le

filtrage en utilisant les principes de la transform´ee de Fourier ainsi que la recherche

de corr´elations dans un ensemble de donn´ees.

6 Avant-Propos

Nous reviendrons en detail sur

les formats de donn´ees plus loin

dans ce cours. En e↵et c’est un

point tr`es important car la pr´e-

cision d’un ordinateur n’est pas

infinie et donc tout les nombres

utilis´es seront des arondis.

Chapitre 1

Introduction `a Matlab

1.1 La philosophie de Matlab

L’objectif de ce premier chapitre est d’introduire les outils n´ecessaires `a l’uti-

lisation de Matlab. En programmation on parle d’objet pour d´ecrire de mani`ere

g´en´erale les concepts que l’on manipulent, de la mˆeme mani`ere que l’on parle de

variables en math´ematiques. L’objet le plus commun dans Matlab est la matrice.

C’est donc un tableau d’´el´ements d’un type donn´e, par exemple un tableau d’en-

tiers, de r´eels, de texte, de variable logiques...

Le format de la matrice est libre, il se d´efinit par le nombre de lignes et le

nombre de colonnes. Une matrice colonne (n lignes X 1 colonne) est appel´ee

vecteur. Dans ce chapitre nous allons donc apprendre a d´efinir, a acher et `a

r´ealiser des op´erations sur ces matrices.

Le deuxi`eme point que nous allons aborder est une r´evision de statistiques de

base et leur utilisation dans Matlab. Un vecteur d´efinit pr´ec´edemment peut conte-

nir des variables qui d´ecrivent une exp´erience (par exemple les notes d’une classe

lors d’un cours de Math´ematiques), et il est donc int´eressant de connaitre les pro-

pri´et´es statistiques de celui-ci.

Nous aborderons pour finir la repr´esentation graphique sous Matlab. En e↵et,

pour pr´esenter des donn´ees, on est tres souvent amener a r´ealiser des graphes. Nous

verrons quelques une des possibilit´es de Matlab dans ce domaine, ce qui nous sera

tr`es utile par la suite.

1.2 L’interface de Matlab

Avant de commencer le cours proprement dit, nous allons nous familiariser avec

l’interface de Matlab. Selon la version utilis´ee, l’interface peut changer l´eg`erement

mais les points centraux resteront identiques.

1.2.1 Command Window

C’est le terminal dans lequel on doit taper les commandes et sur lequel on

verra l’achage des r´esultats. Une ligne commence toujours par >>. Essayez la

commande suivante :

>> 1+1

ans =

2

et comparez `a la commande :

Advertisement

>> 1+1;

2

1.2. L’interface de Matlab

La commande whos() peut ´ega-

lement ˆetre utilis´ee seule (sans

argument). Elle retourne alors la

liste des variables.

Deux points sont `a noter ici. Le premier est que Matlab d´efinit une variable ans,

lorsque l’on e↵ectue un calcul. Cette variable (qui veut dire answer /r´eponse),

s’ache sur le terminal lorsque l’on omet le signe ; en fin de ligne. Ici ans est une

matrice de taille 1x1 (une ligne par une colonne). Une commande utile lorsque l’on

a un doute sur le type de variable que l’on vient de cr´eer est whos :

>> whos(’ans’)

Name

Size

Bytes Class

Attributes

ans

1x1

8 double

Cette commande retourne le nom de la variable (ans), sa taille (1x1), le nombre

d’octets utilis´es (8), et le type de donn´ees (ici r´eel en double pr´ecision).

Une seconde commande utile est clc. Cette commande permet de vider l’´ecran

de Command Window pour repartir sur une fenˆetre propre.

De plus, Matlab supporte l’auto-compl´etion, c’est `a dire que si vous connaissez

le d´ebut d’une commande, vous pouvez n’entrer que les premi`eres lettres et utiliser

la touche Tab pour chercher parmi les commandes commen¸cant ainsi.

1.2.2 Workspace

Dans cette fenˆetre, on obtient la liste des variables connues par Matlab . Il

est possible de double-cliquer sur une variable pour l’acher. Un clic-droit sur les

variables o↵re de nombreuses options telles que : Copiez, Collez, Supprimez etc.

1.2.3 Command History

Lorsque l’on e↵ectue une analyse de donn´ees sur les r´esultats d’une exp´erience

il est essentiel de conserver une trace de toutes les op´erations qui ont ´et´e r´ealis´ees.

C’est la base de la tra¸cabilite et de la reproductibilit´e des r´esultats scientifiques.

Il est possible de cliquer sur une commande dans cette fenˆetre pour l’ex´ecuter

a nouveau. On peut ´egalement remonter dans la liste de commandes en se pla-

¸cant dans la Command Window et en pressant les fl`eches de direction. Matlab

est ´egalement capable de remonter dans la liste de commandes en ne prenant en

compte que les commandes qui commencent par certains caract`eres. Si l’on re-

cherche une commande que l’on a entr´ees pr´ec´edemment, on peut taper le d´ebut

de cette commande puis la fl`eche du haut et Matlab cherchera uniquement parmi

les commandes ayant le mˆeme d´ebut.

Par ailleurs, il est parfois important d’enregistrer dans un fichier ind´ependant

la liste des commandes utilis´ees. Pour ce faire on utilise :

>> diary filename

Cette commande va cr´eer un fichier filename qui enregistrera toutes les com-

mandes entr´ees jusqu’`a ce que l’on utilise diary off.

1.2.4 Current Folder

Je viens de le d´ecrire la commande diary permet de cr´eer un fichier. On peut se

poser la question l´egitime d’ou Matlab va stocker ces donn´ees. Il est tres important

de bien maitriser ce point si l’on souhaite ne pas se perdre dans l’ensemble des

fichiers auxquels nous allons faire appel via Matlab. Matlab d´efinit ce qui s’appelle

le PATH (chemin). C’est les dossiers dans lesquels Matlab va chercher lorsque l’on

appelle un commande. Le PATH est divis´e en deux sous-parties : d’une part le

MATLABPATH et d’autre par le USERPATH.

Le premier (MATLABPATH) correspond aux di↵´erents dossiers auxquels Matlab va

faire r´ef´erence pour utiliser des fonctions pr´ed´efinies par Matlab. Il s’agit si l’on

veut des chemins par d´efaut dans lesquels Matlab cherche les fonctions et il peut

contenir un grand nombre de dossiers. L’exemple de code suivant permet d’acher

le MATLABPATH :

Introduction `a Matlab 3

Le USERPATH est un sous en-

semble du MATLABPATH qui doit

ˆetre personalis´e `a chaque session.

C’est la premi`ere ligne lorsque

l’on entre la commande path.

L’importation de donn´ees ´etant

un point fondamental nous le

traiterons en d´etail par la suite.

La syntaxe de la fonction n’est

pas le sujet ici. Nous reviendrons

en d´etails sur cela plus tard ainsi

que sur la commande sqrt()

>> path

Le second (USERPATH) est un unique dossier qui est propre `a l’utilisateur lors d’une

session. Il est fortement conseill´e de d´efinir le USERPATH, imm´ediatement lorsque

l’on commence une session Matlab. Le fichier diary par exemple est sauv´e dans

le USERPATH. Deux m´ethodes peuvent ˆetre utilis´ee pour modifier le USERPATH. En

ligne de commande :

>> newpath = ’C:\Research_Project’;

userpath(newpath)

ou bien en s´electionnant File> Set Path dans les menus d´eroulants.

La fenˆetre Current Folder ache donc le contenu du USERPATH. On peut na-

viguer entre les dossiers en utilisant la mˆeme nomenclature que sous Unix. On peut

tester notamment les commandes suivantes : cd, ls ,cd .., mkdir(’newfolder’).

Respectivement ces commandes permettent de changer de dossier, de lister les fi-

chiers du dossier, de remonter d’un niveau dans l’arborescence, et de cr´eer un

dossier newfolder. On peut tester le code suivant pour cr´eer un nouveau dossier

puis l’ajouter au path :

>> mkdir(’c:/\texttt{Matlab }/myfiles’)

addpath(’c:/\texttt{Matlab }/myfiles’)

Une autre application tr`es importante de la fenˆetre Current Folder est d’a-

cher la listes des fichiers de donn´ees qui peuvent ˆetre charg´es par l’utilisateur. En

e↵et, tres souvent les donn´ees a analyser seront g´en´er´ees par un autre logiciel puis

import´ees dans Matlab via la commande importdata(filename).

1.2.5 Editor

La plupart de votre travail sous Matlab va consister `a cr´eer ou modifier des

fichiers .m qui est le suxe standard pour les proc´edures Matlab. Lorsque l’on

r´ealise une tache sous Matlab, il est tr`es souvent possible de le faire en utilisant

uniquement la Command Window. Cependant lorsque cette tache devient plus

complexe (plusieurs dizaines de ligne de code) ou que l’on souhaite pouvoir la

transmettre `a quelqu’un d’autre simplement, on utilise la fenˆetre Editor. On cr´ee

un fichier .m qui peut ˆetre au choix un script ou une fonction (function en an-

glais). Un script est une suite de commande que l’on aurait tout aussi bien pu

taper dans la Command Window. Une fonction permet d’´etendre les possibilit´es

au del`a des fonctions pr´eprogramm´ees par les d´eveloppeurs de Matlab .

Par exemple, on pourra r´ealiser une fonction racineplus2(input) qui `a un

param`etre d’entr´ee input va r´epondre pinput + 2 : Pour cr´eer un fichier .m on peut

soit utiliser les menus contextuels, soit entrer la commande : edit FileName.m.

On entre ensuite le code suivant :

function [ output ] = racineplus2( input )

output=sqrt(input+2);

end

Lorsque l’on sauve cette fonction sous la forme d’un fichier .m, il est important

de nommer le fichier racineplus2.m et de sauver ce fichier dans le USERPATH. On

peut ensuite appeler cette fonction simplement dans la Command Window par :

>> racineplus2(7)

ans =

3

Il est ´evident que cette fonction ne fait pas partie des fonctions de base de Matlab :

pourquoi choisir +2 et pas +3. Cependant si l’on souhaite l’utiliser souvent il est

utile de d´efinir une fonction utilisateur qui sera rapide `a utiliser. Une fois que

l’on a cr´e´e un fichier .m, il est possible d’acc´eder `a l’´editeur en double-cliquant sur

le nom du fichier dans la fenˆetre Current Folder.

4

1.3. ”Hello World”

La tradition d’utiliser ”Hello

World” comme message de test

a ´et´e initi´ee par Brian Kerni-

ghan et Dennis Ritchie dans le

livre The C Programming Lan-

guage publi´e en 1978.

1.2.6 Help

Le menu d’aide de Matlab est une des bases de son succ`es. En e↵et, l’aide est

essentielle lorsque l’on programme avec un langage de haut-niveau comme Matlab,

ou le nombre de fonctions est tres important et la syntaxe est parfois complexe.

Pour acc´eder `a l’aide on peut au choix s´electionner une fonction et presser F1,

taper help FunctioNname ou utiliser les menus d´eroulants. L’aide doit ˆetre vu

comme compl´ementaire de ce cours. Ici j’explique les outils math´ematiques que

nous utiliserons, dans l’aide de Matlab vous trouverez la syntaxe des di↵´erentes

fonctions. Mais j’insiste : il est essentiel que vous vous familiarisiez avec les outils

de l’aide de Matlab pour r´eussir dans ce cours.

1.3 ”Hello World”

Tout cours de programmation qui se respecte commence par l’exemple ”Hello

World”. Il s’agit d’un bref programme pour mettre en place les di↵´erents ´el´ements

n´ecessaires. Nous allons r´ealiser deux exemples de ce programme pour mettre en

´evidence la di↵´erence entre un script et une fonction.

1.3.1 Script

Le script est le fichier .m le plus simple. Il s’agit simplement d’une liste de

commandes mises bout `a bout et sauvegard´ee dans un fichier. Pour commencer

on fixe le USERPATH. On cr´ee ensuite un fichier .m dans ce dossier et on nomme ce

fichier hello.m. On ´edite ensuite le fichier .m de la fa¸con suivante :

str=’Hello world’;

str

Sauvez ensuite ce script. Puis dans la fenˆetre Command Window, on tape la com-

mande : hello.

Voila nous avons fait le programme le plus simple possible de Matlab, voyons

comment nous pouvons l’am´eliorer.

1.3.2 Fonction

Une fonction va permettre de rentrer des arguments en entr´ee et d’obtenir

di↵´erentes variables en sortie. On va essayer ici de modifier le script hello.m

pour en faire une fonction qui prend votre pr´enom en entr´ee et retourne Hello

Votrepr´enom en sortie. On commence de fa¸con similaire `a pour un script : on cr´ee

un fichier .m que l’on nomme hello2.m.

function [ str ] = hello2 ( prenom )

str = [’Hello ’, prenom ];

end

On sauvegarde le fichier .m puis on l’appelle depuis la fenˆetre Command Win-

dow. Cette fois la fonction a besoin d’un param`etre en entr´ee, on tape donc :

hello2(’Quentin’). On obtient l’achage voulu. La syntaxe d’une fonction est

relativement simple et doit ˆetre connue. On d´efinit ce que va retourner la fonc-

tion : function [output1,output2 ... outputN]. Puis on nomme la fonction,

ici : = hello2(). On d´efinit alors les param`etres d’entr´ee hello2(input1, im-

put2, ... inputM). On peut passer alors au corps mˆeme de la fonction, qui doit

contenir une d´efinition de toutes les variables de sortie output1,output2 ...

outputN. Finalement, une fonction se conclut toujours par end.

1.4 Outils de base

Introduction `a Matlab 5

On l’a d´ej`a dit, le principe de base de Matlab est de consid´erer la plupart

des objets comme des matrices. Ainsi les op´erations usuelles +,

, / doivent se

comprendre comme des op´erations matricielles. On consacrera la section suivante

`a ces op´erations. Nous allons dans un premier temps regarder ce qu’ils se passent

pour les matrices 1x1 (c’est `a dire un seul ´el´ement), puis pour les matrices 1xn ou

nx1 (c’est `a dire des vecteurs ligne ou colonne).

,

On peut d´efinir la partie imagi-

naire d’un complexe en utilisant

au choix i ou j.

1.4.1 Types de variables

Il existe cinq grands types de variables sous Matlab : les entiers, les r´eels, les

complexes, les chaˆınes de caract`eres et le type logique. D´efinissons une variable de

chaque type :

>> a = 1.3; b = 3+i; c = ’bonjour’;

>> d1 = true(1==1); d2 = logical(1);

>> e = int8(2);

a repr´esente un r´eel, b un complexe, c une chaine de caract`eres, d1 et d2 sont deux

mani`eres de d´efinir une variable logique (VRAI dans le cas pr´esent) et e est un

entier cod´e sur 8 bits. On peut alors v´erifier le type de ces di↵´erentes variable en

utilisant la fonction whos :

>> whos

Name

a

b

c

d1

d2

e

Advertisement

Size

Bytes Class

Attributes

1x1

1x1

1x7

1x1

1x1

1x1

complex

8 double

16 double

14 char

1 logical

1 logical

1 int8

Il n’est donc pas n´ecessaire (impossible en fait) de d´eclarer le type de variable

lorsque l’on cr´ee une variable dans Matlab. Il peut alors s’av´erer utile de v´erifier

quel est le type d’une variable. On utilise les fonctions ischar,islogical,isreal.

1.4.2 Pr´ecision

Avant de poursuivre, je vais mentionner quelques une des limites qu’il est im-

portant de connaitre lorsque l’on fait du calcul num´erique. Il s’agit du r´eel le plus

grand et le plus petit qui peuvent ˆetre manipul´e par Matlab, ainsi que de la pr´eci-

sion sur ces derniers. Les constantes realmax et realmin renvoient respectivement

le plus grand (petit) nombre `a virgule flottante manipulable. La constante eps

renvoie la pr´ecision num´erique relative.

>> min=realmin

max=realmax

precision=eps

min = 2.2251e-308

max = 1.7977e+308

precision = 2.2204e-16

10308 avec une pr´ecision de 10

16, vous allez me dire pourquoi s’int´eresse t’on `a

cela ? Pour en comprendre l’importance revenons a la maniere dont un ordinateur

code des nombres entiers et r´eels. Un ordinateur travaille uniquement en binaire

(base 2).Les nombres entiers sont donc cod´es en binaire sur un nombre plus ou

moins important de bits.Si l’on d´ecide de coder un entier naturel (donc non n´ega-

tif) sur 8 bits, on aura acces a tout les entiers entre 0 et 28

1 = 255. De mˆeme si

d´esormais on souhaite travailler avec des entiers relatifs, toujours sur 8 bits, alors

Pour definir ou convertir un

nombre en entier on utilise uint

ou int pour les entiers naturel ou

relatifs suivi du nombre de bits.

Par exemple uint16 signifie un

entier naturel cod´e sur 16 bits.

6

1.4. Outils de base

on aura acc`es aux entiers entre

entiers jusqu’`a 64 bits.

27 =

128 et 27

1 = 127. Matlab supporte les

Passons maintenant aux nombres r´eels. Il existe deux types principaux de

codage pour les nombres r´eels : simple pr´ecision (single) ou double pr´ecision

(double). Ces deux codages utilisent le principe de la virgule flottante (float).

Cela consiste `a repr´esenter un nombre par son signe (+1 ou -1) s, les chi↵res signifi-

10e. Lorsqu’il

catifs (ou mantisse) m et un exposant e. Le nombre s’´ecrit alors s

est cod´e en simple pr´ecision (c’est `a dire sur 32 bits), le nombre se compose d’un bit

de signe, 8 bits d’exposant, et 23 bits pour la mantisse. Si la mantisse est cod´ee sur

23 bits, cela signifie que l’on peut obtenir les nombres entre 0 et 223

1 = 8388607,

ainsi un nombre r´eel cod´e en simple pr´ecision aura environ 7 chi↵res significatifs

(ce qui est parfois relativement peu). En double pr´ecision (c’est `a dire sur 64 bits),

le nombre se compose d’un bit de signe, 11 bits d’exposant, et 52 bits pour la

mantisse. Dans ce cas, on obtient environ 16 chi↵res significatifs (c’est le sens de

la constante eps).

m

Bien choisir son type de donn´ees permet d’optimiser la m´emoire utilis´ee ainsi

que la rapidit´e et la pr´ecision des calculs num´eriques. Il s’agit donc d’un crit`ere

important lors de l’´evaluation de la qualit´e d’un code.

Un dernier point est le nombre de chi↵res lors de l’achage `a l’´ecran. Le nombre

de chi↵res retenus pour l’achage n’est pas n´ecessairement le mˆeme que celui

retenu pour la pr´ecision (il ne peut pas ˆetre plus grand c’est ´evident !). Les deux

formats les plus utilis´es sont short (d´efaut) et long qui correspondent `a 5 et 15

chi↵res respectivement.

1.4.3 Arithm´etique et op´erations sur les scalaires

Avant de commencer, je conseille

d’utiliser les trois commandes

suivantes : clc pour nettoyer

l’´ecran, clear all pour suppri-

mer toutes les variables cr´e´ees

auparavant, et close all pour

fermer toutes les fenˆetres in-

utiles.

Nous allons nous int´eresser aux op´erations math´ematiques de bases avec des

matrices 1x1, c’est `a dire des nombres. Commen¸cons par les 4 op´erations que vous

,

connaissez depuis l’´ecole primaire : +,

, /.

>> x = 1+1

x = 2

On peut ´egalement travailler avec des variables d´efinies par l’utilisateur :

>> x = 2; y = 1.5 ;

somme = x+y

difference = x-y

produit = x*y

division = x/y

somme = 3.5000

difference = 0.5000

produit = 3

division = 1.3333

Matlab est sensible `a la casse :

la variable ToTo est di↵´erente de

tOtO

On peut ´egalement utiliser les fonctions trigonom´etriques, puissance, logarith-

miques etc

>> x = 2; y = pi;

cos(y)

exp(x)

sqrt(x)

ans = -1

ans = 7.3891

ans = 1.4142

Voici une liste (non exhaustives) des fonctions incorpor´ees dans Matlab :

Introduction `a Matlab 7

Evidemment les fonction hyper-

boliques et inverses sont aussi va-

lables pour le cosinus et la tan-

gente

exp(x)

log(x)

log10(x)

xˆn

sqrt(x)

abs(x)

sign(x)

sin(x)

cos(x)

tan(x)

asin(x)

sinh(x)

asinh(x)

:

:

:

:

:

:

:

:

:

:

:

:

:

exponentielle de x

logarithme n´eperien de x

logarithme en base 10 de x

x `a la puissance n

racine carr´ee de x

valeur absolue de x

1 si x > 0 et 0 si x

0

sinus de x

cosinus de x

tangente de x

sinus inverse de x (arcsin de x)

sinus hyperbolique de x

sinus hyperbolique inverse de x

On pourra ´egalement utiliser les fonctions d’arrondis :

round(x)

floor(x)

ceil(x)

:

:

:

entier le plus proche de x

arrondi par d´efaut de x

arrondi par exc´es de x

ainsi que les fonctions d’arithm´etiques :

rem(m,n)

lcm(m,n)

gcd(m,n)

factor(n)

:

:

:

:

reste de la division enti`ere de m par n

plus petit commun multiple de m et n

plus grand commun diviseur de m et n

d´ecomposition en facteurs premiers de n

Enfin lorsque l’on travaille avec des complexe on pourra utiliser :

conj(z)

:

conjugu´e de z

abs(z)

: module de z

angle(z)

real(z)

imag(z)

:

:

:

argument de z

partie r´eelle de z

partie imaginaire de z

8

Advertisement

1.5. Vecteurs

Exercices

(1.1) Evaluez les quantit´es suivantes dans Matlab avec 5 chi↵res significatifs :

(a)

tanh(e)

(b)

log10(2)

(c)

1

1+ 1

1+ 1

2

(d) PGCD(48972, 36533112)

(e)

e102.7

(g) PPCM (318,732)

(h) p3⇡

(f)

(i)

cos

1( ⇡

4 )

ln 1

⇡ .

(1.2) Calculez 8

100

0.5

2

4

10

. Commentez le r´esultat.

(1.3) Calculez e14 et 382801⇡ jusqu’au 15`eme chi↵res significatifs. Quel est le

plus grand ?

(1.4) Quelle est la meilleure approximation de p7 : 2709

210 , 10583

4000 ou 2024

765 ?

Pour grouper des ´el´ements de

types di↵erents par exemple des

caract`eres et des r´eels, on utili-

sera les structures.

(1.5) Comparez la division a droite / et la division a gauche

. Commentez.

\

(1.6) Trouvez la partie r´eelle et imaginaire des nombres complexes suivants :

(a)

ei(3⇡+4)

(b)

1

1+i

(c)

1).

ln(

(1.7) Calculez la norme et l’argument des nombres complexes suivants :

(a)

ei(3⇡+4)

(b)

1

1+i

(c)

1).

ln(

(d)

3 + 7i

(e)

i3 + 1

(f)

ei ⇡

5 .

1.5 Vecteurs

Passons maintenant `a l’utilisation des vecteurs. Un vecteur sous Matlab est une

collection de d’´el´ements du mˆeme type. Un vecteur pourra repr´esenter des valeurs

exp´erimentales ou bien les valeurs discr´etis´ees d’une fonction continue.

1.5.1 D´efinir un vecteur

La m´ethode la plus simples pour d´efinir un vecteur est de donner sa description

explicite `a l’aide de la commande [ ], par exemple :

vec = [1 2 4 7 9 2.3]

vec =

1.0000

2.0000

4.0000

7.0000

9.0000

2.3000

On peut ´egalement d´efinir un vecteur colonne en utilisant le ;

col = [1 ; 2 ; 4 ; 7]

col =

1

2

4

7

Introduction `a Matlab 9

ones(m,1) sera donc vecteur co-

lonne de longueur m dont tous les

´el´ements valent 1 (de mˆeme pour

zeros et rand).

On peut concat´ener deux vecteurs :

vec1 = [1 3 5];

vec2 = [9 10 11];

vec = [vec1 vec2]

vec =

1

3

5

9

10

11

Et on peut ´egalement prendre la transpos´ee pour passer d’une ligne `a une colonne

ou r´eciproquement :

vec1 = [1 3 5];

vec = vec1’

vec =

1

3

5

Il n’est pas n´ecessaires de d´efinir la taille d’un vecteur (c’est automatique), par

contre la commande length() permet de retourner cette quantit´e.

length(vec)

ans = 3

Lorsque l’on veut acher le graph d’une fonction f telle que y = f (x) sous

Matlab, il faut d´efinir deux vecteurs : un pour le vecteur x, l’autre pour le vecteur

y = f (x). Matlab ne fait pas du calcul formel, il faut donc discretiser l’axe des x.

On utilise pour ce faire la fonction linspace(a,b,n) Cette commande g´en`ere un

vecteur ligne de n ´el´ements espac´es lin´eairement entre a et b. Par d´efaut n = 100.

Une autre m´ethode pour g´en´erer des vecteurs espac´es lin´eairement consiste `a

utiliser [a,s,b]. On cr´ee alors un vecteur entre a et b avec un espacement s :

vec=[1:2:10]

vec =

1

3

5

7

9

Il existe enfin des vecteurs sp´eciaux pr´ed´efinis dans Matlab :

ones(1,n)

zeros(1,n)

rand(1,n)

:

:

:

vecteur ligne de longueur n dont tous les ´el´ements valent 1

vecteur ligne de longueur n dont tous les ´el´ements valent 0

vecteur ligne de longueur n dont les ´el´ements sont g´en´er´es

de mani`ere al´eatoire entre 0 et 1.

1.5.2 Manipuler un vecteur

Il est important ´egalement de se familiariser `a la manipulation de vecteurs,

c’est-a-dire ˆetre capable d’extraire des sous-ensembles a l’aide des indices. Le keme

´el´ement d’un vecteur vec peut ˆetre ach´e grˆace `a la commande vec(k). k doit

ˆetre un entier sinon Matlab retournera une erreur :

>> vec = linspace(1,10,10)

2

vec = 1

3

4

5

6

7

8

9

10

>> vec(4)

ans = 4

>> vec(4.2)

Subscript indices must be real positive integers or logical.

10

1.5. Vecteurs

On peut ´egalement utiliser des vecteurs d’indices pour extraire un sous-vecteur :

>> vec = linspace(1,89,9)

vec =

12

23

1

34

45

56

67

78

89

>> vec(3:6)

ans = 23

34

45

56

>> vec(4:2:8)

ans = 34

56

78

>> subvec=[1 3 5]; vec(subvec)

ans = 1

45

23

1.5.3 Op´erations vectorielles

Pour les exposants on utilise

vec.^2

Les op´erations alg´ebriques usuelles +,

, / doivent ˆetre prises avec pr´ecau-

tions pour les vecteurs. La somme et la di↵´erence sont des op´erations termes `a

termes, et n´ecessitent donc des vecteurs de mˆeme dimension. Le produit

est le

produit matriciel. Nous y reviendrons dans la section sur les matrices. Pour utiliser

et / par ./

la mutliplication ou la division termes `a termes on doit remplacer

par .

,

Advertisement

>> vec = [1 3 5 6]; vec2 = [10 20 30 40];

>> vec+vec2

ans = 11

>> vec-vec2

ans = -9

23

35

46

-17

-25

-34

>> vec.*vec2

ans = 10

60

150

240

>> vec2.*vec

ans = 10.0000

6.6667

6.0000

6.6667

De la mˆeme mani`ere que pour les scalaires, on peut appliquer toutes les fonc-

tions d´efinies pr´ec´edemment pour les vecteurs. Par exemple :

>> vec = linspace(1,10,10);

out=sqrt(vec)

out =

Columns 1 through 5

1.0000

1.4142

1.7321

2.0000

2.2361

Columns 6 through 10

2.4495

2.6458

2.8284

3.0000

3.1623

>> out2=vec.^2

out2 =

Columns 1 through 5

1

4

9

16

25

Columns 6 through 10

36

49

64

81

100

>> out3=cos(vec)

out3 =

Columns 1 through 5

0.5403

-0.4161

-0.9900

-0.6536

0.2837

Columns 6 through 10

0.9602

0.7539

-0.1455

-0.9111

-0.8391

Introduction `a Matlab 11

commandes

s’appliquent

Ces

aussi aux matrices. Dans ce cas

la commande porte sur chaque

vecteur colonne de la matrice.

Il existe aussi des commandes qui sont propres aux vecteurs.

sum(x)

prod(x)

max(x)

min(x)

:

:

:

:

somme des ´el´ements du vecteur x

produit des ´el´ements du vecteur x

plus grand ´el´ement du vecteur x

plus petit ´el´ement du vecteur x

mean(x)

: moyenne des ´el´ements du vecteur x

sort(x)

fliplr(x)

:

:

ordonne les ´el´ements du vecteur x par ordre croissant

renverse l’ordre des ´el´ements du vecteur x

Exercice

(1.8) Manipulation de vecteurs

Donnez le code Matlab qui permet de :

a. Cr´eez un vecteur colonne vec de 5 ´el´ements lin´eairement espac´es entre 2 et 3.

b. Ajoutez deux lignes `a la fin de ce vecteur avec la valeur 0.

c. Ajoutez 1 au deuxieme et sixieme ´el´ements de ce vecteur.

d. Cr´eez un second vecteur vec2 colonne de mˆeme dimension que vec contenant

les entiers pairs sup´erieurs ou ´egaux `a 6.

e. D´efinir un vecteur sumvec comme la somme des deux vecteurs vec et vec2.

f. D´efinir un vecteur prodvec comme le produit termes `a termes des deux vecteurs

vec et vec2.

g. Quel est la somme des ´el´ements de prodvec ?

h. Quel est la moyenne des ´el´ements de sumvec ?

i. Quel est le plus grand ´el´ement du vecteur v3 = vec2+pvec2+1

vec.(vec2+1) ?

1.6 Matrices

Nous arrivons maintenant aux matrices ! C’est le coeur de Matlab. Donc on se

concentre ! ! !

1.6.1 D´efinir une matrice

Une matrice va se d´efinir de fa¸con similaire `a un vecteur avec la commande [].

A =

1

4

2

3

On d´efinit la matrice A :

>> A = [1 2 ; 4 3]

A =

1

4

2

3

12

1.6. Matrices

Cela est ´equivalent `a

>> A = [1 2

4 3]

A =

1

4

2

3

Une matrice est compos´ee de m lignes et n colonnes. Si on souhaite connaitre la

valeur de m ou n, on utilise la commande size(A)

>> A = [1 2 5 ; 4 3 6]

2

A = 1

3

4

5

6

>> [m n] = size(A)

m = 2

n = 3

>> size(A,1)

ans = 2

On peut construire tr`es simplement une matrice ”par blocs”. Si A, B, C, D d´esignent

4 matrices (aux dimensions compatibles), on d´efinit la matrice blocs :

par l’instruction M = [A B ; C D].

M =

A B

C D

Comme pour les vecteurs il existe des matrices pr´ed´efinies :

la matrice identit´e (carr´ee de taille n)

la matrice `a m lignes et n colonnes dont tous les ´el´ements valent 1

la matrice `a m lignes et n colonnes dont tous les ´el´ements valent 0

une matrice `a m lignes et n colonnes dont les ´el´ements sont

g´en´er´es de mani`ere al´eatoire entre 0 et 1.

une matrice magique de dimension n.

0

0

1

1

1

1

1

:

:

:

:

:

eye(n)

ones(m,n)

zeros(m,n)

rand(m,n)

magic(n)

>> eye(3)

ans =

1

0

0

0

1

0

>> ones(2,4)

ans =

1

1

1

1

>> zeros(2)

ans =

0

0

0

0

>> rand(2,3)

ans =

0...