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

Voir tous les documents en mathématiques

Université Pierre et Marie Curie - Paris VI

Outils Mathématiques et utilisation de Matlab

Cours 2013-2014

Licence Professionnelle (L3)

Instrumentation Optique et Visualisation

Quentin Glorieux

[email protected]

Table des matières

Avant-Propos

1 Introduction à 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écision

1.4.3 Arithmétique et opérations sur les scalaires

1.5 Vecteurs

1.5.1 Définir un vecteur

1.5.2 Manipuler un vecteur

1.5.3 Opérations vectorielles

1.6 Matrices

1.6.1 Définir une matrice

1.6.2 Manipuler une matrice

1.6.3 Opérations matricielles : addition et soustraction

1.6.4 Opérations matricielles : produit

1.6.5 Opérations matricielles : inverse et division

1.6.6 Résoudre un système linéaire

1.7 Représentation 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éries de Fourier

2.2 Application a la synthese de signaux sous Matlab

2.3 Transformée de Fourier

2.3.1 Définition

2.3.2 Transformée de Fourier discrète

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ères

2.3.3 Un exemple pas à pas de FFT

2.4 Corrigés

36

40

Avant-Propos

Il s’agit des notes de cours destinées aux étudiants de Licence Professionnelle

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

d’algèbre, d’analyse et de statistiques. Le format de ce cours est composé de 4

séances de 4h de cours associées à 4 séances de 4h de travaux pratiques. Chaque

couple de séances (cours-TP) porte sur un theme di↵érent associé a un chapitre

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

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

que l’ingénieur ou le chercheur. Matlab a été développé par la société 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ées ecacement, et simuler numériquement des systèmes physiques. Il

faut bien comprendre la di↵érence entre ces deux objectifs. D’une part une série

de données est produite par une expérience et notre objectif est d’analyser ces

données pour en faire ressortir les éléments les plus pertinents. Lorsque l’on parle

de donnée, il peut s’agir par exemple d’une mesure d’un paramètre physique, du

cours de la bourse, des réponses à un sondage ou bien de tout autres valeurs pou-

vant être tabulées.

Lorsque l’on parle de simulations numériques, on s’intéresse à la modélisation d’un

système ce qui passe le plus souvent par la résolution d’équations di↵érentielles.

Pour ces deux objectifs, nous allons utiliser des notions de mathématiques qui se-

ront parfois nouvelles pour le lecteur. Ce cours n’a pas prétention à être un cours

formel et rigoureux du point de vue mathématiques et je présenterai donc uni-

quement les points nécessaires à la compréhension des concepts sans entrer dans

les détails. Lorsque cela sera nécessaire, j’indiquerai les références bibliographiques

permettant de traiter ces notions mathématiques plus en profondeur.

La particularité de Matlab est de manipuler uniquement des variables numé-

riques (pas de calcul formel). Par défaut ces variables sont codées sur 64 bits

(double précision) et peuvent contenir jusqu’à 16 chi↵res significatifs. Les nombres

les plus grands manipulés par Matlab sont 10306, au delà de cette limite ils seront

considérés comme infini et notés Inf. Réciproquement, les nombres les plus petits

306, au delà de cette limite ils seront considérés comme zéro et notés 0.

sont 10

Lorsqu’une valeur est manquante ou si le résultat 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èmes

d’arrondi peuvent s’avérer im-

portant lors que nous étudierons

la stabilité des méthodes de réso-

lution d’équations di↵érentielles.

,

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

de Matlab et nous écrirons le premier programme afin d’acher un message simple.

Nous étudierons ensuite la structure des données ainsi que les opérations de base

, /). Une part importante de ce chapitre sera consacré à la présentation

(+,

⇤

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

tache pour de nombreux exercices par la suite. Je ferai également quelques rappels

de statistiques élémentaires. Enfin, ce chapitre se termine par la présentation du

produit matriciel et son utilisation.

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

données. L’analyse et le traitement de données est un sujet très vaste qui néces-

siterais un cours a part entiere. Je présenterai ici principalement deux sujets : le

filtrage en utilisant les principes de la transformée de Fourier ainsi que la recherche

de corrélations dans un ensemble de données.

6 Avant-Propos

Nous reviendrons en detail sur

les formats de données plus loin

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

point très important car la pré-

cision d’un ordinateur n’est pas

infinie et donc tout les nombres

utilisés seront des arondis.

Chapitre 1

Introduction à Matlab

1.1 La philosophie de Matlab

L’objectif de ce premier chapitre est d’introduire les outils nécessaires à l’uti-

lisation de Matlab. En programmation on parle d’objet pour décrire de manière

générale les concepts que l’on manipulent, de la même manière que l’on parle de

variables en mathématiques. L’objet le plus commun dans Matlab est la matrice.

C’est donc un tableau d’éléments d’un type donné, par exemple un tableau d’en-

tiers, de réels, de texte, de variable logiques...

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

nombre de colonnes. Une matrice colonne (n lignes X 1 colonne) est appelée

vecteur. Dans ce chapitre nous allons donc apprendre a définir, a acher et à

réaliser des opérations sur ces matrices.

Le deuxième point que nous allons aborder est une révision de statistiques de

base et leur utilisation dans Matlab. Un vecteur définit précédemment peut conte-

nir des variables qui décrivent une expérience (par exemple les notes d’une classe

lors d’un cours de Mathématiques), et il est donc intéressant de connaitre les pro-

priétés statistiques de celui-ci.

Nous aborderons pour finir la représentation graphique sous Matlab. En e↵et,

pour présenter des données, on est tres souvent amener a réaliser des graphes. Nous

verrons quelques une des possibilités de Matlab dans ce domaine, ce qui nous sera

très 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ée, l’interface peut changer légèrement

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ésultats. Une ligne commence toujours par >>. Essayez la

commande suivante :

>> 1+1

ans =

2

et comparez à la commande :

>> 1+1;

2

1.2. L’interface de Matlab

La commande whos() peut éga-

lement être utilisée seule (sans

argument). Elle retourne alors la

liste des variables.

Deux points sont à noter ici. Le premier est que Matlab définit une variable ans,

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

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éer 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és (8), et le type de données (ici réel en double précision).

Une seconde commande utile est clc. Cette commande permet de vider l’écran

de Command Window pour repartir sur une fenêtre propre.

De plus, Matlab supporte l’auto-complétion, c’est à dire que si vous connaissez

le début d’une commande, vous pouvez n’entrer que les premières lettres et utiliser

la touche Tab pour chercher parmi les commandes commençant ainsi.

1.2.2 Workspace

Dans cette fenêtre, 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ées sur les résultats d’une expérience

il est essentiel de conserver une trace de toutes les opérations qui ont été réalisées.

C’est la base de la traçabilite et de la reproductibilité des résultats scientifiques.

Il est possible de cliquer sur une commande dans cette fenêtre pour l’exécuter

a nouveau. On peut également remonter dans la liste de commandes en se pla-

çant dans la Command Window et en pressant les flèches de direction. Matlab

est également capable de remonter dans la liste de commandes en ne prenant en

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

cherche une commande que l’on a entrées précédemment, on peut taper le début

de cette commande puis la flèche du haut et Matlab cherchera uniquement parmi

les commandes ayant le même début.

Par ailleurs, il est parfois important d’enregistrer dans un fichier indépendant

la liste des commandes utilisées. Pour ce faire on utilise :

>> diary filename

Cette commande va créer un fichier filename qui enregistrera toutes les com-

mandes entrées jusqu’à ce que l’on utilise diary off.

1.2.4 Current Folder

Je viens de le décrire la commande diary permet de créer un fichier. On peut se

poser la question légitime d’ou Matlab va stocker ces données. Il est tres important

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

Publicité

fichiers auxquels nous allons faire appel via Matlab. Matlab définit 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é en deux sous-parties : d’une part le

MATLABPATH et d’autre par le USERPATH.

Le premier (MATLABPATH) correspond aux di↵érents dossiers auxquels Matlab va

faire référence pour utiliser des fonctions prédéfinies par Matlab. Il s’agit si l’on

veut des chemins par défaut 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 à Matlab 3

Le USERPATH est un sous en-

semble du MATLABPATH qui doit

être personalisé à chaque session.

C’est la première ligne lorsque

l’on entre la commande path.

L’importation de données étant

un point fondamental nous le

traiterons en détail par la suite.

La syntaxe de la fonction n’est

pas le sujet ici. Nous reviendrons

en détails sur cela plus tard ainsi

que sur la commande sqrt()

>> path

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

session. Il est fortement conseillé de définir le USERPATH, immédiatement lorsque

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

le USERPATH. Deux méthodes peuvent être utilisée pour modifier le USERPATH. En

ligne de commande :

>> newpath = ’C:\Research_Project’;

userpath(newpath)

ou bien en sélectionnant File> Set Path dans les menus déroulants.

La fenêtre Current Folder ache donc le contenu du USERPATH. On peut na-

viguer entre les dossiers en utilisant la même 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éer un

dossier newfolder. On peut tester le code suivant pour créer un nouveau dossier

puis l’ajouter au path :

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

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

Une autre application très importante de la fenêtre Current Folder est d’a-

cher la listes des fichiers de données qui peuvent être chargés par l’utilisateur. En

e↵et, tres souvent les données a analyser seront générées par un autre logiciel puis

importées dans Matlab via la commande importdata(filename).

1.2.5 Editor

La plupart de votre travail sous Matlab va consister à créer ou modifier des

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

réalise une tache sous Matlab, il est très 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 à quelqu’un d’autre simplement, on utilise la fenêtre Editor. On crée

un fichier .m qui peut être 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’étendre les possibilités

au delà des fonctions préprogrammées par les développeurs de Matlab .

Par exemple, on pourra réaliser une fonction racineplus2(input) qui à un

paramètre d’entrée input va répondre pinput + 2 : Pour créer 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 évident 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éfinir une fonction utilisateur qui sera rapide à utiliser. Une fois que

l’on a créé un fichier .m, il est possible d’accéder à l’éditeur en double-cliquant sur

le nom du fichier dans la fenêtre Current Folder.

4

1.3. ”Hello World”

La tradition d’utiliser ”Hello

World” comme message de test

a été initiée par Brian Kerni-

ghan et Dennis Ritchie dans le

livre The C Programming Lan-

guage publié en 1978.

1.2.6 Help

Le menu d’aide de Matlab est une des bases de son succès. 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éder à l’aide on peut au choix sélectionner une fonction et presser F1,

taper help FunctioNname ou utiliser les menus déroulants. L’aide doit être vu

comme complémentaire de ce cours. Ici j’explique les outils mathématiques que

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

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

de l’aide de Matlab pour réussir 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↵érents éléments

nécessaires. Nous allons réaliser deux exemples de ce programme pour mettre en

évidence la di↵érence 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 à bout et sauvegardée dans un fichier. Pour commencer

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

fichier hello.m. On édite ensuite le fichier .m de la façon suivante :

str=’Hello world’;

str

Sauvez ensuite ce script. Puis dans la fenêtre 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éliorer.

1.3.2 Fonction

Une fonction va permettre de rentrer des arguments en entrée et d’obtenir

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

pour en faire une fonction qui prend votre prénom en entrée et retourne Hello

Votreprénom en sortie. On commence de façon similaire à pour un script : on crée

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être Command Win-

dow. Cette fois la fonction a besoin d’un paramètre en entrée, on tape donc :

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

relativement simple et doit être connue. On définit ce que va retourner la fonc-

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

ici : = hello2(). On définit alors les paramètres d’entrée hello2(input1, im-

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

contenir une définition de toutes les variables de sortie output1,output2 ...

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

1.4 Outils de base

Introduction à Matlab 5

On l’a déjà dit, le principe de base de Matlab est de considérer la plupart

des objets comme des matrices. Ainsi les opérations usuelles +,

, / doivent se

⇤

comprendre comme des opérations matricielles. On consacrera la section suivante

à ces opérations. Nous allons dans un premier temps regarder ce qu’ils se passent

pour les matrices 1x1 (c’est à dire un seul élément), puis pour les matrices 1xn ou

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

,

On peut définir 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éels, les

complexes, les chaˆınes de caractères et le type logique. Définissons 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ésente un réel, b un complexe, c une chaine de caractères, d1 et d2 sont deux

manières de définir une variable logique (VRAI dans le cas présent) et e est un

entier codé sur 8 bits. On peut alors vérifier le type de ces di↵érentes variable en

utilisant la fonction whos :

>> whos

Name

a

b

c

d1

d2

e

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écessaire (impossible en fait) de déclarer le type de variable

lorsque l’on crée une variable dans Matlab. Il peut alors s’avérer utile de vérifier

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

1.4.2 Précision

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

portant de connaitre lorsque l’on fait du calcul numérique. Il s’agit du réel le plus

grand et le plus petit qui peuvent être manipulé par Matlab, ainsi que de la préci-

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

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

renvoie la précision numérique relative.

>> min=realmin

max=realmax

precision=eps

min = 2.2251e-308

max = 1.7977e+308

precision = 2.2204e-16

10308 avec une précision de 10

16, vous allez me dire pourquoi s’intéresse t’on à

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

code des nombres entiers et réels. Un ordinateur travaille uniquement en binaire

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

moins important de bits.Si l’on décide de coder un entier naturel (donc non néga-

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

1 = 255. De même si

désormais 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é sur 16 bits.

6

1.4. Outils de base

on aura accès aux entiers entre

entiers jusqu’à 64 bits.

27 =

128 et 27

1 = 127. Matlab supporte les

Passons maintenant aux nombres réels. Il existe deux types principaux de

codage pour les nombres réels : simple précision (single) ou double précision

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

Cela consiste à représenter 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’écrit alors s

est codé en simple précision (c’est à 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ée sur

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

1 = 8388607,

ainsi un nombre réel codé en simple précision aura environ 7 chi↵res significatifs

(ce qui est parfois relativement peu). En double précision (c’est à 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ées permet d’optimiser la mémoire utilisée ainsi

que la rapidité et la précision des calculs numériques. Il s’agit donc d’un critère

important lors de l’évaluation de la qualité d’un code.

Un dernier point est le nombre de chi↵res lors de l’achage à l’écran. Le nombre

de chi↵res retenus pour l’achage n’est pas nécessairement le même que celui

retenu pour la précision (il ne peut pas être plus grand c’est évident !). Les deux

formats les plus utilisés sont short (défaut) et long qui correspondent à 5 et 15

chi↵res respectivement.

1.4.3 Arithmétique et opérations sur les scalaires

Avant de commencer, je conseille

d’utiliser les trois commandes

suivantes : clc pour nettoyer

l’écran, clear all pour suppri-

mer toutes les variables créées

auparavant, et close all pour

fermer toutes les fenêtres in-

utiles.

Nous allons nous intéresser aux opérations mathématiques de bases avec des

matrices 1x1, c’est à dire des nombres. Commençons par les 4 opérations que vous

,

connaissez depuis l’école primaire : +,

, /.

⇤

>> x = 1+1

x = 2

On peut également travailler avec des variables définies par l’utilisateur :

Publicité

>> 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 à la casse :

la variable ToTo est di↵érente de

tOtO

On peut également utiliser les fonctions trigonométriques, 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ées dans Matlab :

Introduction à 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éperien de x

logarithme en base 10 de x

x à la puissance n

racine carrée 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 également utiliser les fonctions d’arrondis :

round(x)

floor(x)

ceil(x)

:

:

:

entier le plus proche de x

arrondi par défaut de x

arrondi par excés de x

ainsi que les fonctions d’arithmétiques :

rem(m,n)

lcm(m,n)

gcd(m,n)

factor(n)

:

:

:

:

reste de la division entière de m par n

plus petit commun multiple de m et n

plus grand commun diviseur de m et n

décomposition en facteurs premiers de n

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

conj(z)

:

conjugué de z

abs(z)

: module de z

angle(z)

real(z)

imag(z)

:

:

:

argument de z

partie réelle de z

partie imaginaire de z

8

1.5. Vecteurs

Exercices

(1.1) Evaluez les quantités 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ésultat.

(1.3) Calculez e14 et 382801⇡ jusqu’au 15ème 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 éléments de

types di↵erents par exemple des

caractères et des réels, on utili-

sera les structures.

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

. Commentez.

\

(1.6) Trouvez la partie réelle 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 à l’utilisation des vecteurs. Un vecteur sous Matlab est une

collection de d’éléments du même type. Un vecteur pourra représenter des valeurs

expérimentales ou bien les valeurs discrétisées d’une fonction continue.

1.5.1 Définir un vecteur

La méthode la plus simples pour définir un vecteur est de donner sa description

explicite à 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 également définir un vecteur colonne en utilisant le ;

col = [1 ; 2 ; 4 ; 7]

col =

1

2

4

7

Introduction à Matlab 9

ones(m,1) sera donc vecteur co-

lonne de longueur m dont tous les

éléments valent 1 (de même pour

zeros et rand).

On peut concaténer deux vecteurs :

vec1 = [1 3 5];

vec2 = [9 10 11];

vec = [vec1 vec2]

vec =

1

3

5

9

10

11

Et on peut également prendre la transposée pour passer d’une ligne à une colonne

ou réciproquement :

vec1 = [1 3 5];

vec = vec1’

vec =

1

3

5

Il n’est pas nécessaires de définir la taille d’un vecteur (c’est automatique), par

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

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éfinir 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énère un

vecteur ligne de n éléments espacés linéairement entre a et b. Par défaut n = 100.

Une autre méthode pour générer des vecteurs espacés linéairement consiste à

utiliser [a,s,b]. On crée 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éciaux prédéfinis dans Matlab :

ones(1,n)

zeros(1,n)

rand(1,n)

:

:

:

vecteur ligne de longueur n dont tous les éléments valent 1

vecteur ligne de longueur n dont tous les éléments valent 0

vecteur ligne de longueur n dont les éléments sont générés

de manière aléatoire entre 0 et 1.

1.5.2 Manipuler un vecteur

Il est important également de se familiariser à la manipulation de vecteurs,

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

élément d’un vecteur vec peut être aché grâce à la commande vec(k). k doit

être un entier sinon Matlab retournera une erreur :

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

2

vec = 1

Publicité

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 également 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érations vectorielles

Pour les exposants on utilise

vec.^2

Les opérations algébriques usuelles +,

, / doivent être prises avec précau-

⇤

tions pour les vecteurs. La somme et la di↵érence sont des opérations termes à

termes, et nécessitent donc des vecteurs de même 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 à termes on doit remplacer

par .

⇤

,

⇤

⇤

>> 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ême manière que pour les scalaires, on peut appliquer toutes les fonc-

tions définies précédemment 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 à 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 éléments du vecteur x

produit des éléments du vecteur x

plus grand élément du vecteur x

plus petit élément du vecteur x

mean(x)

: moyenne des éléments du vecteur x

sort(x)

fliplr(x)

:

:

ordonne les éléments du vecteur x par ordre croissant

renverse l’ordre des éléments du vecteur x

Exercice

(1.8) Manipulation de vecteurs

Donnez le code Matlab qui permet de :

a. Créez un vecteur colonne vec de 5 éléments linéairement espacés entre 2 et 3.

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

c. Ajoutez 1 au deuxieme et sixieme éléments de ce vecteur.

d. Créez un second vecteur vec2 colonne de même dimension que vec contenant

les entiers pairs supérieurs ou égaux à 6.

e. Définir un vecteur sumvec comme la somme des deux vecteurs vec et vec2.

f. Définir un vecteur prodvec comme le produit termes à termes des deux vecteurs

vec et vec2.

g. Quel est la somme des éléments de prodvec ?

h. Quel est la moyenne des éléments de sumvec ?

i. Quel est le plus grand élément 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éfinir une matrice

Une matrice va se définir de façon similaire à un vecteur avec la commande [].

A =

1

4

✓

2

3

◆

On définit la matrice A :

>> A = [1 2 ; 4 3]

A =

1

4

2

3

12

1.6. Matrices

Cela est équivalent à

>> A = [1 2

4 3]

A =

1

4

2

3

Une matrice est composée 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ès simplement une matrice ”par blocs”. Si A, B, C, D désignent

4 matrices (aux dimensions compatibles), on définit 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édéfinies :

la matrice identité (carrée de taille n)

la matrice à m lignes et n colonnes dont tous les éléments valent 1

la matrice à m lignes et n colonnes dont tous les éléments valent 0

une matrice à m lignes et n colonnes dont les éléments sont

générés de manière aléatoire 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 =

Publicité

0...