matlab french

49
MEC 1310:TI en Génie Mécanique MODULE C: LA PROGRAMMATION AVEC MATLAB Département de Génie Mécanique École Polytechnique de Montréal Montréal, Canada. 19 septembre 2007 c 2007

Upload: hermann-azemtsa

Post on 21-Jun-2015

345 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Matlab French

MEC 1310:TI en Génie Mécanique

MODULE C: LA PROGRAMMATIONAVEC MATLAB

Département de Génie MécaniqueÉcole Polytechnique de Montréal

Montréal, Canada.

19 septembre 2007

c©2007

Page 2: Matlab French

Table des matières

1 Généralités 41.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2 Aide et documentation . . . . . . . . . . . . . . . . . . . . . 5

2 Types de données 72.1 Données numériques . . . . . . . . . . . . . . . . . . . . . 7

2.1.1 Les entiers . . . . . . . . . . . . . . . . . . . . . . . 82.1.2 Les réels . . . . . . . . . . . . . . . . . . . . . . . . 82.1.3 Nombres complexes . . . . . . . . . . . . . . . . . . 92.1.4 Représentations particulières . . . . . . . . . . . . . 102.1.5 Les formats d’écriture . . . . . . . . . . . . . . . . . 112.1.6 Opérations et fonctions . . . . . . . . . . . . . . . . 12

2.2 Données logiques . . . . . . . . . . . . . . . . . . . . . . . 132.2.1 Opérations et fonctions . . . . . . . . . . . . . . . . 13

2.3 Données charactères . . . . . . . . . . . . . . . . . . . . . 142.4 Données calendrier . . . . . . . . . . . . . . . . . . . . . . 15

3 Programmation 163.1 Les variables . . . . . . . . . . . . . . . . . . . . . . . . . . 163.2 Les énoncés . . . . . . . . . . . . . . . . . . . . . . . . . . 183.3 Les scripts et fonctions . . . . . . . . . . . . . . . . . . . . . 223.4 Les entrées/sorties . . . . . . . . . . . . . . . . . . . . . . . 253.5 Graphisme . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.6 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.6.1 L’énoncé conditionel IF . . . . . . . . . . . . . . . . 263.6.2 L’énoncé inconditionnel FOR . . . . . . . . . . . . . 273.6.3 L’énoncé WHILE . . . . . . . . . . . . . . . . . . . . 29

2

Page 3: Matlab French

TABLE DES MATIÈRES 3

4 Structures de données 314.1 Les matrices . . . . . . . . . . . . . . . . . . . . . . . . . . 314.2 L’opérateur " :" . . . . . . . . . . . . . . . . . . . . . . . . . 334.3 Scalaire vs vecteur . . . . . . . . . . . . . . . . . . . . . . . 344.4 Scalaire vs matrice . . . . . . . . . . . . . . . . . . . . . . . 36

4.4.1 Structure scalaire . . . . . . . . . . . . . . . . . . . 364.4.2 Structure vectorielle . . . . . . . . . . . . . . . . . . 374.4.3 Structure matricielle . . . . . . . . . . . . . . . . . . 38

5 Applications 395.1 Calcul vectoriel . . . . . . . . . . . . . . . . . . . . . . . . . 395.2 Calcul matriciel . . . . . . . . . . . . . . . . . . . . . . . . . 405.3 Résolution de systèmes d’équations . . . . . . . . . . . . . 425.4 Formes paramétriques des courbes . . . . . . . . . . . . . 43

5.4.1 La droite . . . . . . . . . . . . . . . . . . . . . . . . . 445.4.2 L’hélice et cercle . . . . . . . . . . . . . . . . . . . . 47

5.5 Rotation d’un objet . . . . . . . . . . . . . . . . . . . . . . . 48

MEC1310 c©2006

Page 4: Matlab French

Chapitre 1

Généralités

1.1 Présentation

MATLAB c© est un ensemble d’outils informatiques pour le développe-ment de programmes qui intègrent le calcul numérique, la visualisation etles interface graphiques. Le système comprend :

– Un environnement de dévelopement ;– Une programmathèque de fonctions mathématiques ;– Un langage de programmation ;– Un langage graphique ;– Un protocole d’interfaces externes.L’environnement se présente sous la forme d’une interface graphique

avec plusieurs fenêtres pour– la saisie et l’exécution des commandes ;– la présentation de l’ historique de la session de travail ;– un accès aux variables en mémoire ;– la navigation et la gestion des fichiers et répertoires,En plus, un éditeur adapté au langage Matlab facilte la rédaction de

programme et de fonctions, le tout complété par un sytème d’assistance àla programmation (détection d’erreurs, tracé du déroulement de l’exécutiond’un programme....)

Sur le plan de la programmation, le langage Matlab est basé sur unestructure de donnée où l’élément de base est un tableau avec un jeu opé-rations adapté à cette entité. La syntaxe pour le traitement de variablesqui se représentent sous la forme de vecteurs ou matrices se trouve sim-

4

Page 5: Matlab French

1.2. AIDE ET DOCUMENTATION 5

FIG. 1.1 – Environnement de développement Matlab

plifiée. En plus une programmathèque permet des opérations variées etriches en fonctionalités.

L’intégration du langage avec l’interpréteur, l’éditeur et la documenta-tion en fait un outil bien adapté au développement d’applications scienti-fiques.

1.2 Aide et documentation

Dans une session Matlab, il est possible d’obtenir une aide en ligne surune commande en tapant :

help nomCommande

On peut aussi utiliser la commande doc qui donne accès à la docu-mentation en ligne par l’intermédiaire d’une fenêtre MOSAIC. Pour quittercette documentation, cliquer sur Exit Program dans le menu File de lafenêtre MOSAIC.

demo : démonstration de Matlab avec des exemples couvrant un largeéventail d’applications ;

cd : change de répertoire ;

MEC1310 c©2006

Page 6: Matlab French

6 CHAPITRE 1. GÉNÉRALITÉS

pwd : donne le répertoire courant ;

ls ou dir : donne la liste de fichiers dans le répertoire courant ;

delete : supprime un fichier ;

... pour écrire une instruction sur la ligne suivante ;

↑ : recherche à la commande précédente dans la mémoire tampon du sys-tème. Cette fonctionalité permet de reprendre une commande sansavoir à la retaper ;

↓ : même fonction dans le sens inverse ;

On notera la similitude avec les commandes du système UNIX.

c©2006 MEC1310

Page 7: Matlab French

Chapitre 2

Types de données

Un ordinateur permet de travailler avec des données : les créer, lesmanipuler, les traiter et les archiver. Au niveau le plus bas, ces donnéessont des quantités binaires et incompréhensibles par un humain. Grâce àdes programmes, ces données primitives sont enrichies par un langage deprogrammation qui leur donne un sens dans le contexte d’une application.Ainsi le type de données que permet un langage dépend du domaine ;scientifique, financier, organisationnel.....Dans le domaine scientifique, ontraite de quantités physiques qui se représentent principalement par desnombres, auxquels s’ajoutent les quantités logiques et parfois les quanti-tés de type caractère.

Les opérations de manipulations sont celles de l’arithmétique et de l’al-gèbre ; addition, soustraction, multiplication et division. Pour des calculsplus sophistiqués, on ajoute un jeu de fonctions, telles les fonctions trigo-nométriques, statistiques et du calcul analytique.

2.1 Données numériques

Les données numériques dans les langages de programmation scien-tifique correspondent aux quantités numériques de l’arithmétique clas-sique :

– les nombres entiers ;– les nombres réels ;– les nombres complexes ;

7

Page 8: Matlab French

8 CHAPITRE 2. TYPES DE DONNÉES

Matlab permet la représentation de ces types, positifs et negatifs, avecdivers niveaux de précision.

2.1.1 Les entiers

Lorsque l’on travaille avec des entiers de petite et moyenne tailles, ilest avantageux de les déclarer comme tels avec les fonctions intxx pourdes valeurs négatives et positives, ou uintxx pour des valeurs positives.La partie xx indique le nombre de bits utilisés. Par exemple, on déclare unentier avec 16 bits à l’aide de la commande,

x = int16(32501)

Comme un bit est utilisé pour le signe, si on manipule des entiers positifs(> 0), alors la déclaration 1,

x = uint16(312)

permet une plus grande plage pour ces nombres. Selon la plage desnombres entiers à représenter, on utilisera la déclaration appropriée, parmicelles montrées au Tableau 2.1, ce qui permet une économie de mémoireet de traitement.

-ve < 0 < +ve > 08-bit int8 −27 à 27 − 1 uint8 0 à 28 − 1

16-bit int16 −215 à 215 − 1 uint16 0 à 216 − 132-bit int32 −231 à 231 − 1 uint32 0 à 232 − 164-bit int64 −263 à 263 − 1 uint64 0 à 264 − 1

TAB. 2.1 – Le typeentier

2.1.2 Les réels

Théoriquement, un réel nécessite une précision infinie pour le repré-senter exactement. Avec un nombre fini de bits, soit 16, 32, 64 ou même128 on n’obtient qu’une approximation. Un nombre est représenté dans laforme,

1 int pourinteger et uint pourunsigned interger en anglais

c©2006 MEC1310

Page 9: Matlab French

2.1. DONNÉES NUMÉRIQUES 9

nombre = ±mantisse × 10exposant

Par exemple, le nombre −357.87 sera représenté par −3.5787 × 102, et0.000469 par +4.69 × 10−4.

En pratique avec 64 bits, on peut représenter des nombre sur les plagessuivantes :

Nombres négatifs : −1.79769e + 308 ⇒ −2.22507e − 308Nombres positifs : +2.22507e − 308 ⇒ +1.79769e + 308

Cette représentation à 64 bits nécessite 53 bits pour la mantisse, 10pour l’exposant et 1 bit pour le signe.

Les nombres plus grands que +1.79769e + 308, ou plus petits que−1.79769e + 308, ne peuvent être représentés avec seulement 64 bits, eton leur attribue la valeur Inf = ±1.79769e+308. Similairement, le plus petitnombre que l’on peut représenter est 2.22507e − 308 ; c’est-à-dire qu’il n’ya pas, strictement parlant, de zéro !

Par défaut, MATLAB déclare tous les nombres avec 64 bits, et que l’onappelle des doubles. Pour toutes fins pratiques, ces derniers couvrent laplupart des besoins en calcul scientifique. Dans de nombreuses applica-tions, des calculs en simple précision, single, suffiront. On utilise alors 32bits, permettant de réprésenter des nombres sur les plages suivantes :

Nombres négatifs : −3.40282e + 038 ⇒ −1.17549e − 038Nombres positifs : +1.17549e − 038 ⇒ +3.40282e + 038

Dans ce mode, les nombres plus grands que 3.40282e + 038 en valeurabsolue seront représentés par ±Inf, c-à-d infinité. Comme la représenta-tion par défault est le double, on obtient un single par la déclaration,

x = single(567.89)Ce qui représente une économie d’espace et de traitement lorsque la

double précision n’est pas nécessaire.

2.1.3 Nombres complexes

Les nombres complexes sont composés d’une partie réelle et d’unepartie imaginaire, qui est un nombre réel multiplié par i =

√−1. Dans

MEC1310 c©2006

Page 10: Matlab French

10 CHAPITRE 2. TYPES DE DONNÉES

Matlab, ils sont déclarés de deux façons, soit explicitement ou avec lacommande complex :

>> z = 4+5i

z = 4.0000 + 5.0000i

>> z = complex(4,5)

z = 4.0000 + 5.0000i

>>

On peut extraire les composantes réelle et imaginaire d’un nombrecomplexe par :

>> zreel = real(z)

zreel = 4

>> zimag = imag(z)

zimag = 5

>>

2.1.4 Représentations particulières

Certain calculs ne sont formellement pas possibles, par exemple ladivision par zéro. Matlab prévoit dans ces cas un mécanisme alternatif.

Le résultat de toute opération qui donne lieu à un nombre plus grandque la représentation permise par 64 bits (double) sera représenté par Inf.Par exemple :

>> x = 1/0Warning: Divide by zero.

x = Inf

>>

ou, un autre exemple,

c©2006 MEC1310

Page 11: Matlab French

2.1. DONNÉES NUMÉRIQUES 11

>> x = log(0)Warning: Log of zero.

x = -Inf

>>

Certaines opérations n’ont pas de sens sur le plan mathématique. Alorsle résultat sera représenté par l’entité NaN , (Not a Number). Par exemple :

>> z =0/0Warning: Divide by zero.

z = NaN

>> z =i/0Warning: Divide by zero.

z = NaN + Infi>>

2.1.5 Les formats d’écriture

Matlab dispose de plusieurs formats pour l’affichage des réels. Par dé-faut on utilise le format court à 5 chiffres2.

>> pians = 3.1416>>

Les autres formats sont indiqués au Tableau 2.2.Par exemple,

>> format long>> pians = 3.14159265358979>> format short e>> pi^3ans = 3.1006e+01

Dans la représentation format short e, 3.1006e + 01 = 3.1006e+01.

2On souligne que la variablepi dans Matlab a le sens deπ

MEC1310 c©2006

Page 12: Matlab French

12 CHAPITRE 2. TYPES DE DONNÉES

Énoncé Description

format short format court à 5 chiffres.format long format long à 15 chiffres.format short e format court à 5 chiffres avec notation en

virgule flottante.format long e format long à 15 chiffres avec notation en

virgule flottante.

TAB. 2.2 – Formats d’écriture

2.1.6 Opérations et fonctions

Les opérations classiques de l’arithmétique sont supportées par le lan-gage Matlab :

Symbole Opération

+ Addition- Soustraction∗ Multiplication/ Divisionˆ Puissance’ Transposé complexe

TAB. 2.3 – Opérations arithmétiques

Un certain nombre de fonctions trigonométriques et algébriques sontdisponibles :

sin, cos, ..., log, exp...

Les différents types de nombres, de variables, d’opérations et de fonc-tions peuvent être combinées pour créer des expressions :

c©2006 MEC1310

Page 13: Matlab French

2.2. DONNÉES LOGIQUES 13

>> T = sin(45)^2 + cos(45)^2

T = 1

>> Z = sqrt(-1)

Z = 0 + 1.0000i

>> a = (log(10) -1)/(5^2 + 1)

a = 0.0501>>

2.2 Données logiques

Une donnée logique représente un état, "vrai" ou "faux", d’une variableou d’une expression, par les nombres 1 et 0, respectivement.

>> etatV = true

etatV = 1

>> etatF = false

etatF = 0

>>

2.2.1 Opérations et fonctions

Les données logiques peuvent être manipulées et combinées par desopérations logiques :

Les opérateurs relationnels permettent d’évaluer si une expression est"vrai" ou "faux", et lui assignent "1" ou "0", respectivement.

MEC1310 c©2006

Page 14: Matlab French

14 CHAPITRE 2. TYPES DE DONNÉES

Opérations logiques Opérateurs relationnels& et (and) == égal| ou (or) =̃ pas égal˜ pas(not) < plus petit

> plus grand

TAB. 2.4 – Opérations logiques

>> 10 + sqrt(25) < 0

ans = 0

>> sin(45) == 1

ans = 0

>>

Les opérations logiques permettent de combiner plusieurs expressionset d’en évaluer l’état :

>> sin(pi/2) <= 1 & sqrt(sin(pi)) == 0

ans = 0

>>

Ces manipulations sont utiles pour le contrôle de calculs et permettentde les aiguiller selon certaines conditions. Par exemple, le déroulementd’un calcul pourrait être modifié selon la valeur ou le signe d’une quantité,ou bien un procédé industriel corrigé selon la valeur d’un paramètre.

2.3 Données charactères

Certaines applications utilisent des données alphabétiques : le nomd’une personne, son adresse etc. L’ordinateur manipule alors des chaînesde caractères : l’alphabet mais aussi d’autres caractères.

c©2006 MEC1310

Page 15: Matlab French

2.4. DONNÉES CALENDRIER 15

>> nom = ’Ecole Polytechnique’

nom = Ecole Polytechnique

>>

Les opérateurs logiques du Tableau 2.4 peuvent être utilisés pour fairedes comparaisons entre deux chaînes de caractères :

>> nomA = ’Poly’

nomA = Poly

>> nomB = ’poly’

nomB = poly

>> nomA == nomB

ans =

0 1 1 1

>>

L’opération "==" compare le contenu de deux chaînes, caractère parcaractère. Le résultat indique que les chaînes sont identiques sauf pour lepremier caractère, "P" et "p".

2.4 Données calendrier

MEC1310 c©2006

Page 16: Matlab French

Chapitre 3

Programmation

Un programme est une suite structurée d’instructions qui permet demanipuler et traiter des données pour obtenir un résultat. Il est composéd’énoncés qui comprennent des déclarations, des expressions, des entrées-sorties appliquées à des données. Les composantes d’un programme sontles variables et les opérateurs à partir desquels on construit des expres-sions. Avec des expressions, on forme des énoncés ou commandes. Cescommandes sont soumises à un interpréteur (ou un compilateur) qui lesdécompose en instructions machine et sont ensuite exécutées par l’ordi-nateur.

Un programme comprend un programme principal et éventuellementdes fonctions ou sous-programmes, appellés par le premier.

3.1 Les variables

Les entités fondamentales traitées par un ordinateur sont des donnéeset des instructions machines. Les variables sont des étiquettes ou desnoms pour identifier les données qui sont en mémoire. Ces noms per-mettent de trouver la valeur d’une donnée, de la traiter et d’en faire unesauvegarde pour utilisation ultérieure. Les variables locales sont connuesà l’intérieur du programme (sous-programme) où elles ont été déclarées,tandis que les variables globales sont connues par plusieurs sous-programmes.

Le nom d’une variable doit obligatoirement commencer par une lettre,suivie par une suite de lettres et de nombres. La casse est importante etbien qu’il n’y a pas de limite au nombre de caractères, cependant, seuls

16

Page 17: Matlab French

3.1. LES VARIABLES 17

les premiers namelengthmax caractères sont reconnus. Il faut que chaquevariable d’un programme soit unique et non-ambigue.

MATLAB se réserve un certain nombre de mots clés (des opérateurs)qui ne peuvent pas être utilisés comme variables dans un programme :

break end persistentcase for returncatch function switchcontinue global tryelse if whileelseif otherwise

TAB. 3.1 – Noms réservés

Il y a également certaines variables qui ont des valeurs prédéfiniesdans un contexte scientifique et généralement utilisées dans des calculs :

Variable Valeurans1 Valeur du dernier calcul fait par MATLABeps Précision des calculs en virgule flottanteintmax Le plus grand nombre entier en 8-, 16-, 32-, or 64-bit que

l’ordinateur peut représenterintmin Le plus petit nombre entier en 8-, 16-, 32-, or 64-bit que

l’ordinateur peut représenterrealmax Le plus grand nombre réel que l’ordinateur peut repré-

senterrealmin Le plus petit nombre réel que l’ordinateur peut représen-

terpi 3.1415926535897...i, j

√−1

inf «Infinité» c-à-d le plus grand nombre pouvant être repré-senté.

NaN Not a Number, valeur numérique non valide

TAB. 3.2 – Variables réservées

>> x = 2 * pix = 6.2832>>

MEC1310 c©2006

Page 18: Matlab French

18 CHAPITRE 3. PROGRAMMATION

>> intmaxans = 2147483647>> realminans = 2.2251e-308>>

3.2 Les énoncés

Il existe plusieurs types d’énoncés :

Déclaration : Avec ce type d’énoncé, on déclare ou défini une variable. Ondonne son type et sa valeur :>> % Ceci est un commentaire>> % et ne sera pas execute>> global ALPHA BETA>> ALPHA = 0.01; % Constante partagee avec

% d’autres programmes>> BETA = 0.02; % Constante partagee avec

% d’autres programmes>> a = uint16(123); % Entier positif a 16 bits>> b = 120; % Reel a double precision (64 bits)>> c = single(10); % Reel a simple precision (32 bits)>> d = ’abcd’; % Variable caractere

Par défaut, les variables sont locales et représentées en double pré-cision.

Expression : Ensemble qui combine des variables à l’aide d’opérateurs oude fonctions pour produire un nouveau résultat qui est affecté à unevariable.

>> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%>> % Calcul de la pression d’un gaz parfait %>> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%>> R = 1.98726; % constante universelle des gaz>> n = 10.0; % nombre de moles>> T = 298.7; % temperature>> V = 24.8; % volume>> P = n*R*T/V % pression

P = 239.3526>>

c©2006 MEC1310

Page 19: Matlab French

3.2. LES ÉNONCÉS 19

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Decomposition d’un vecteur a un angle theta %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%L = 1.4147; % Longueur du vecteurtheta = pi/6; % angle avec l’axe des xV_x = L*cos(theta); % composante en xV_y = L*sin(theta); % composante en yV_x, V_y

V_x = 1.2252

V_y = 0.7073

>>

Contrôles : Ces structures coordonnent et dirigent le déroulement de laséquence des énoncés à exécuter à l’aide de tests sur la valeur decertaines variables ou expressions.

L’instruction conditionnée IF, ELSE, ELSEIF : Cette structure évalueune expression logique et exécute une suite d’énoncés si la va-leur de l’expression est "vrai". La variante la plus simple :

if (expression logique)instructions.........instructions

end

La syntaxe comprend l’énoncé if fermé par end, et tous lesénoncés compris entre ces derniers, seront exécutés seulementsi la condition expression logique vaut "vrai".

La variante else permet de traiter le cas où la condition n’estpas vérifiée (elle vaut "faux") :

if (expression logique)instructions 1

elseinstructions 2

end

MEC1310 c©2006

Page 20: Matlab French

20 CHAPITRE 3. PROGRAMMATION

Tous les énoncés instructions 1 seront exécutés si la conditionexpression logique vaut "vrai", sinon, les énoncés instructions 2seront exécutés. Finalement, la variante elseif permet de traiterune deuxième condition :

if (expression logique1)instructions

elseif (expression logique2)instructions

elseinstructions

end

La boucle FOR : Cette structure exécute un nombre prédéterminéde fois, une suite d’énoncés compris entre for et end :

for compteur = debut:pas:fininstructioninstruction..........instructioninstruction

end

L’énoncé for comprend un compteur avec un debut, un pas etune fin. Initialisée à la valeur debut, cette structure exécute tousles énoncés compris entre for et end, et incrémente la valeur ducompteur par la valeur du pas. Ceci est répété jusqu’à ce quele compteur atteigne la valeur de fin.

Dans l’exemple suivant, on exécute les énoncés t et x = t2 àpartir de t = 1, en augmentant le compteur t de 3 à chaqueboucle, jusqu’à t = 11. Le code source :

for t = 1:3:11t, x = t^2

end>>donne :

c©2006 MEC1310

Page 21: Matlab French

3.2. LES ÉNONCÉS 21

t = 1x = 1t = 4x = 16t = 7x = 49t = 10x = 100>>

Le compteur est une variable de type entier ou réel. Le pas(intervalle) vaut 1 par défaut, mais peut prendre toute valeur,même négative. Dans ce dernier cas, il faut bien gérer la valeuren fin de boucle.On peut imbriquer plusieurs boucles for, comme illustré ci-desouspour le calcul des 5 premières valeur de n!,

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Calcul de factoriel d’un nombre entier %% n! = 1*2*3.... *n %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%for n = 1:5F = 1;for j = 1:n

F=F*j;endn,F

endn = 1F = 1n = 2F = 2n = 3F = 6n = 4F = 24n = 5F = 120>>

Boucle WHILE : Cette structure exécute un nombre indéterminé de

MEC1310 c©2006

Page 22: Matlab French

22 CHAPITRE 3. PROGRAMMATION

fois, une suite d’énoncés compris entre while et end. La boucleest répétée tant qu’une condition est vérifiée :

while expressioninstructions..........

instructionsend

La condition est exprimée sous la forme d’une expression lo-gique.

3.3 Les scripts et fonctions

Dans l’environnement MATLAB, les énoncés peuvent être entrés di-rectement dans la fenêtre de commandes, ou bien sous la forme d’un pro-gramme ou script. Un programme est une suite d’instructions contenuesdans un fichier créé par un éditeur et ensuite soumis pour exécution dansla fenêtre de commandes. Il y a deux types de programmes ; les scriptset les fonctions. Ces deux types de fichiers portent l’extension ****.m. Onappelle le script programme principal et il ne comporte pas d’argumentsen entrée ou sortie. Il sert à construire les données et variables dans l’es-pace mémoire principal de MATLAB. Il gère le déroulement des calculset peut faire appel à des fonctions, aussi appelées des sous-routines ousous-programmes.

Parmi les fonctions, on trouve celles prédéfinies dans MATLAB ( fonc-tions trigonométriques, algébriques...) ou bien des fonctions définies parl’usager. On crée une fonction dans un fichier à l’aide d’un éditeur. Le fi-chier porte le nom de la fonction et prend la forme de ****.m. Le premierénoncé dans le fichier est l’énoncé function2 qui sert à déclarer la fonc-tion.

function variableSortie = nom(arg1,arg2,.....)

Ces fonctions ont généralement des arguments en entrée et sortie ; cequi permet la communication de données entre le programme appellant et

2Attention à l’orthographe qui est anglaise !

c©2006 MEC1310

Page 23: Matlab French

3.3. LES SCRIPTS ET FONCTIONS 23

le programme appellé. Suite à l’énoncé function, suivent des commen-taires, des instructions etc....

function variableSortie = nomFonction(arg1,arg2,.....)% La fonction nomFonction calcule ..........% Programmeur: nnnn nnnnn% Date : 21 sept 2007enonceenonceenoncevariableSortie =........

Lorsque appellée par le programme principal, la fonction nomFonctionreçoit les valeurs de arg1, arg2 .... et retourne la variable variableSortie.Toutes les variables déclarées dans la fonction se trouvent dans l’espacemémoire de celle-ci et ne sont pas accessibles par le programme appel-lant. Réciproquement, les variables et données déclarées dans le pro-gramme principal ne sont pas connues des fonctions car elles résidentdans une mémoire distincte. Les seules variables partagées sont les ar-guments communiqués entre le script et la fonction.

Dans certaines circonstances, pour permettre l’accès à des variablesentre le programme principal et les sous-programmes, il peut être utile dedéclarer certaines variables comme des variables globales (voir la Sec-tion 3.1). Une variable déclarée global est alors partagée entre le pro-gramme principal et plusieurs fonctions sans qu’il soit nécessaire de laspécifier parmi les variables d’entrée/sortie ou comme argument des dif-férentes fonctions. On déclare une variable globale avec l’énoncé global,qui doit apparaître dans tous les programmes et sous-programmes quidoivent partager la variable.

Le programme principal (script) suivant utilise la fonction (sous-programme)T pour le calcul de la température :

MEC1310 c©2006

Page 24: Matlab French

24 CHAPITRE 3. PROGRAMMATION

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Calcul de la pression d’un gaz %% utilisant la loi des gaz parfait: %% PV = nRT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%global R %Constante universelle des gaz parfaitsR = 1.98;P = 100; %pressionV = 10; %volumen = 1; %nombre de molestemperature = T(P,V,n)

Le code source de la fonction T se trouve dans un fichier 3 appellé T.m :

function T = T(P,V,n)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Fonction qui calcule la temperature d’un gaz parfait %% En entree: pression, volume et nombre de moles %% En sortie: temperature %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%global RT = P*V/R/n;

On note que la variable R est globale, et accessible à partir du pro-gramme principal et de la fonction (sous-programme) T.

Le programme principal (script) suivant calcule les racines d’un poly-nôme du 2ème degré à l’aide d’une fonction appellée racines :

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Calcul des racines d’un polynome du 2eme degre %% ax^2 + bx^1 + c %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%a = 1;b = 3;c = 6;racines(a,b,c)

La sousroutine (fonction) racines reçoit les coefficients a, b et c enarguments :

3La fonction et le fichier qui contient le code source portent le même nom

c©2006 MEC1310

Page 25: Matlab French

3.4. LES ENTRÉES/SORTIES 25

function racines(a,b,c)%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Calcul des racines% ax^2 + bx^1 + c%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%discriminant = sqrt(b*b -4*a*c);r1 = (b + discriminant)/2/ar2 = (b - discriminant)/2/a

>>

et calcule les deux racines. Ce qui donne le résultat suivant :r1 = 1.5000 + 1.9365i

r2 = 1.5000 - 1.9365i

>>

3.4 Les entrées/sorties

3.5 Graphisme

plot(Y) : affiche le graphe de Yi en fonction de l’indice du tableau(vecteur),c-à-d i=1,2,3...... Dans l’exemple suivant, on calcule les valeurs delog(x) sur l’intervalle .5 ≤ x ≤ 2 en pas de δx = .3 :

>> x = .5:.3:2;>> y = log(x)’

y =

-0.6931-0.22310.09530.33650.53060.6931

>> plot(y)

1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

MEC1310 c©2006

Page 26: Matlab French

26 CHAPITRE 3. PROGRAMMATION

Si Y est une variable complexe, alors on affiche la partie imagi-naire en fonction de la partie réelle, c-à-d le même résultat queplot(real(Y), imag(Y)).

plot(X,Y) : affiche le graphe de Y en fonction de X.Les caractéristiques de la présentation sont données avec trois ar-guments,’- - -’, positionnés dans l’ordre suivant ; type de trait,symbole et la couleur.

plot(x,y, ’- - -’)

Dans l’exemple suivant, le résultat est dessiné en trait continu "-",avec des symboles "o" à chaque point, et en couleur verte "g".

>>>> x=[0:pi/100:pi/2];>> y=sin(x)-cos(5*x);>> plot(x,y,’-og’)>>

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6−1

−0.5

0

0.5

1

1.5

2

Une grande variété de symboles et choix de couleur (voir Tableau 3.3)sont disponibles pour la présentation de résultats. Une valeur par défautest prise en l’absence de l’un de ces arguments.

3.6 Exemples

3.6.1 L’énoncé conditionel IF

Ici, on utilise l’énoncé if pour aiguiller le calcul selon la valeur d’unevariable logique, typeGaz. L’expression typeGaz == ’PARFAIT’ est

c©2006 MEC1310

Page 27: Matlab French

3.6. EXEMPLES 27

Tracé Symboles CouleursTrait plein - Plus + Rouge rPointillé : Cercle o Vert g

tirêt – Astérique * Bleu b-. Point . Cyan c

Croix x Magenta mCarré s Jaune y

Losange d Noir kBlanc w

TAB. 3.3 – Éléments de présentation

évaluée et si le résultat vaut "vrai", alors on exécute une énoncé, sinonon en exécute un autre.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Calcul de la pression d’un gaz%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%typeGaz = ’PARFAIT’;R = 1.98726; % constante universelle du gazn = 10.0; % nombre de molesT = 298.7; % temperatureV = 24.8; % volumeif typeGaz == ’PARFAIT’

p = n*R*T/V % pression pour un gaz parfaitelse

p = F(n,T,V,R) % pression pour un gaz reelend

p = 239.3526

3.6.2 L’énoncé inconditionnel FOR

Pour illustrer l’utilisation de la boucle for , on montre le calcul de lafonction trigonométrique sinus à l’aide d’un dévelopement de Taylor :

sin(x) = x/1! − x3/3! + x5/5! − x7/7! + .....

MEC1310 c©2006

Page 28: Matlab French

28 CHAPITRE 3. PROGRAMMATION

=mMax∑

m=1

(−1)m+1x2m−1

(2m − 1)!

Dans le script suivant, on évalue une approximation de sin(pi/2) en uti-lisant les 5 premier termes de ce développement et on compare avec lavaleur "exacte" qui est donnée par la librairie de Matlab :

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Evaluation d’une fonction trigonmetrique par un% developpement de Taylor, et comparaison avec la% "exacte".%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%x = pi/2;y = 0.;mMax = 5;for m=1:1:mMaxy = y + (-1)^(m+1)*x^(2*m - 1)/factorial(2*m-1)erreur = abs(y-sin(x))endy = 1.5708

erreur = 0.5708

y = 0.9248

erreur = 0.0752

y = 1.0045

erreur = 0.0045

y = 0.9998

erreur = 1.5690e-04

y = 1.0000

erreur = 3.5426e-06>>

On note que l’ajout de chaque terme du dévelopement diminue l’erreurd’un ordre de grandeur !

c©2006 MEC1310

Page 29: Matlab French

3.6. EXEMPLES 29

3.6.3 L’énoncé WHILE

On montre une utilisation de l’énoncé while , avec un algorithme derésolution d’équations nonlinéaires de la forme ;

f(x) = 0

On illustre avec la méthode de la bissection qui consiste à itérer sur unintervalle donné qui encadre la racine, c’est-à-dire que l’on connaît deuxvaleurs, xG et xD, respectivement à gauche et à droite de la racine re-cherchée. Dans cette situation, une approximation est obtenue par la bis-section de cet intervalle, xM = (xG + xD)/2. Cette nouvelle valeur situéeà mi-chemin de l’intervalle, se trouve soit à droite ou à gauche de la racine.

0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2−3

−2.5

−2

−1.5

−1

−0.5

0

0.5

1

xD

xG

xM

FIG. 3.1 – La méthode de bissection

Avec un test sur le changement de signe de f(xM) par rapport, soit àf(xG) ou f(xD), on établi les nouvelles valeurs de xG et xD, qui néces-sairement encadrent la solution. On répète tant que une certaine précisionn’est pas atteinte. Ce type de calcul se prête idéalement pour cet énoncé.

MEC1310 c©2006

Page 30: Matlab French

30 CHAPITRE 3. PROGRAMMATION

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Calcul du zero(racine) x, d’une fonction nonlineaire% f telle que f(x)=0%% Dans cet exemple f = log%% On utilise la methode de bissection, qui necessite% deux valeurs de x, xG et xD, qui encadrent la racine.%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%xG = 1/2; % valeur initiale de x a gauche de la

% solution rechercheexD = 3/2; % valeur initiale de x a droite de la

% solution rechercheewhile abs(xD-xG) > .01

yG = log(xG);yD = log(xD);xM = (xG + xD)/2;yM = log(xM);if yM*yG > 0

xG = xM;else

xD = xM;end

endxMyMerreur=abs(xM-1)

>>

xM = 0.9922yM = -0.0078

erreur = 0.0078>>

c©2006 MEC1310

Page 31: Matlab French

Chapitre 4

Structures de données

Une structure de données est une organisation des données élémen-taires en entités plus complexes qui enrichi le niveau de l’information vé-hiculée. Dans la hiérarchie des structures de données utilisées dans lecalcul, on retrouve les scalaires, les vecteurs et les matrices. Informati-quement, ces structures sont représentées par des tableaux de dimension1x1, nx1 ou 1xn, nxn et éventuellement des tableaux à trois dimensionsnxnxn.

Dans MATLAB la structure de données de base est le tableau à deuxdimensions que l’on appelle matrice. Les données sont les éléments d’unestructure rectangulaire qui permet de les stocker et de les récupérer faci-lement. Ces éléments peuvent être des données de n’importe quel type(entiers, réels, caractères ...voir Chapitre 2).

Ainsi une quantité scalaire comme une température sera représentéepar une matrice 1x1. Tandis que pour une vitesse, on utilisera une matrice1xn où les n éléments sont les composantes du vecteur dans l’espace à ndimensions. Dans ce Chapitre, on montre comment utiliser la matrice nxnpour crééer des entités plus riches et faciliter leur traitement.

4.1 Les matrices

On construit une variable de type matrice avec l’opérateur [ ] . Pour unematrice 1xm, une rangée, on sépare les m éléments par un espace :

rangee = [e1 e2 e3.....em]ou, par une virgule :

31

Page 32: Matlab French

32 CHAPITRE 4. STRUCTURES DE DONNÉES

rangee = [e1,e2,e3,e4, .... em]

On créé une matrice par une suite de rangées, séparées par un pointvirgule :

matrice = [ rangee1;rangee2;rangee3;...........rangeeN]

On peut imaginer que la matrice est une pile de rangées. Avec cettesyntaxe, Matlab "comprend" l’objet matrice et l’affiche selon les conven-tions mathématiques.

>> p = [12 23 56 9 11;34 67 89 21 90;45 23 76 43 1]

p =

12 23 56 9 1134 67 89 21 9045 23 76 43 1

ou, pour une meilleure lisibilité,

>> p = [12 23 56 9 11;34 67 89 21 90;45 23 76 43 1]

p =

12 23 56 9 1134 67 89 21 9045 23 76 43 1

>>

Une matrice peut contenir des données numériques, logiques, carac-tères ...Par exemple :

c©2006 MEC1310

Page 33: Matlab French

4.2. L’OPÉRATEUR ":" 33

>> unePersonne = [’Nom ’;’Prenom ’;’Adresse ’;’Profession’]

unePersonne =

NomPrenomAdresseProfession>>

On peut référencer un élément (i,j) d’une matrice p, par l’énoncép(i,j) qui désigne l’élément de la ième ligne et de la jème colonne. Parexemple, pour la matrice 3x5 :

j12 23 56 9 11

i 34 67 89 21 9045 23 76 43 1

l’élément p(2,4)] est égal à 21, c-à-d p(ligne,colonne).

4.2 L’opérateur " :"

Il existe plusieurs façons de construire des suites d’éléments comprisentre deux valeurs et espacés par un intervalle régulier.

1. On peut construire un vecteur en affectant chacune de ses compo-santes :

>> x = [-5.0, -2.5, 0.0, 2.5, 5.0, 7.5, 10.0]

>> x =-5.0 -2.50 0 2.50 5.00 7.50 10.00

2. ou bien en utilisant une boucle for :

MEC1310 c©2006

Page 34: Matlab French

34 CHAPITRE 4. STRUCTURES DE DONNÉES

>> for i=1:1:7>> x(i) = -5.0 + (i-1)*2.5;>> end>> x

x =-5.0 -2.50 0 2.50 5.00 7.50 10.00

3. ou finalement avec l’opérateur " :" :

>> x = [-5.0:2.5:10.0]

x =-5.00 -2.50 0 2.50 5.00 7.50 10.00

>>

Les bornes et l’intervalle peuvent être quelconques :

>> angle = [pi:pi/6:2*pi]

angle =

3.142 3.665 4.189 4.712 5.236 5.760 6.283

>>

On note que le partage de l’intervalle est régulier ou constant.

4.3 Scalaire vs vecteur

La structure de données de base dans Matlab, permet de traiter desquantités complexes comme les vecteurs ou les matrices aussi simple-ment que les scalaires. Par exemple :

Affectation d’une variable scalaire :

c©2006 MEC1310

Page 35: Matlab French

4.3. SCALAIRE VS VECTEUR 35

x = 3;y = log(x);x,y

x = 3

y = 1.0986>>

Affectation des éléments d’une variable vecteur, élément par élément :

x(1) = 3;x(2) = 4;x(3) = 5;x(4) = 6;x(5) = 7;y(1) = log(x(1));y(2) = log(x(2));y(3) = log(x(3));y(4) = log(x(4));y(5) = log(x(5));x,y

x = 3 4 5 6 7

y = 1.0986 1.3863 1.6094 1.7918 1.9459

>>

Affectation des éléments d’une variable vecteur, boucle "for" :

for i=1:5x(i) = 3 + (i-1);y(i) = log(x(i));

end

Affectation d’une variable vecteur, avec la structure Matlab :

x = [3 4 5 6 7 8 9];y = log(x);

MEC1310 c©2006

Page 36: Matlab French

36 CHAPITRE 4. STRUCTURES DE DONNÉES

Déclaration d’une variable vecteur :

x = 3:1:5;y = log(x);

Dans les deux derniers exemples, la variable x est déclarée commeun vecteur. Matlab le reconnaît et lors du calcul de la variable y, automati-quement celle-ci est construite comme un vecteur de même dimension, oùchaque élément y(i) est construit comme y(i)=log(x(i)). La compa-raison entre ces différentes façons illustre bien la puissance et l’élégancede cette structure de données.

4.4 Scalaire vs matrice

Avec la structure de données matricielle, on peut manipuler des entitésencore plus complexes que les vecteurs. Par exemple, un objet commeun triangle est décrit par ses trois sommets (x1, y1), (x2, y2) et (x3, y3).Il existe plusieurs structures de données pour représenter un tel objet.Nous allons les illustrer par une suite de représentations en ordre croissantde simplicité allant des scalaires, aux vecteurs et pour terminer avec lesmatrices.

4.4.1 Structure scalaire

Une représentation de cet objet avec une structure scalaire nécessitel’affectation de six variables, une pour chaque des coordonnées xi, yi, etl’affichage nécessite trois appels à plot.

c©2006 MEC1310

Page 37: Matlab French

4.4. SCALAIRE VS MATRICE 37

x1=1;x2=2;x3=3;y1=1;y2=3;y3=2;figure(1)hold onplot(x1,y1,’-og’)plot(x2,y2,’-og’)plot(x3,y3,’-og’)axis([0 5 0 5])hold off

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5

4.4.2 Structure vectorielle

On obtient une meilleure fonctionalité en déclarant une structure vecto-rielle qui représente un point et où les éléments correspondent aux coor-données en x et y. Ainsi une telle variable contient les deux composantes,et peut se manipuler avec les opérations de l’algèbre vectoriel.

p1 = [x1 y1];p2 = [x2 y2];p3 = [x3 y3];

figure(2)hold onplot(p1(1),p1(2),’-sr’)plot(p2(1),p2(2),’-sr’)plot(p3(1),p3(2),’-sr’)axis([0 5 0 5])hold off

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5

MEC1310 c©2006

Page 38: Matlab French

38 CHAPITRE 4. STRUCTURES DE DONNÉES

4.4.3 Structure matricielle

Finalement l’object au complet peut se représenter comme un empile-ment de plusieurs points, structure qui se traduit par une matrice :

p1 = [x1 y1];p2 = [x2 y2];p3 = [x3 y3];

t = [p1;p2;p3]

figure(3)hold onfor point=1:3plot(t(point,1),t(point,2),’xk’)endaxis([0 5 0 5])% Affichage avec l’operateur ":"figure(4)plot(t(:,1),t(:,2),’o’)axis([0 5 0 5])

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

0.5

1

1.5

2

2.5

3

3.5

4

4.5

5

c©2006 MEC1310

Page 39: Matlab French

Chapitre 5

Applications

5.1 Calcul vectoriel

Toutes les opérations de l’algèbre vectoriel classique font partie in-tégrante du langage Matlab de par ses structures de données de baseainsi que l’extension des opérateurs d’addition/soustraction (+/-), multipli-cation/division par un scalaire (* et /), le produit scalaire et le produit vec-toriel. Soit deux vecteurs a et b :

a = [ 2, pi/6];b = [ 3, pi/8];

Les opérations d’addition/soustraction et de multiplication/division parun scalaire se font composante par composante :

c = pi*a + b/3c =

7.2832 1.7758

Le produit scalaire de deux vecteurs donne un scalaire égal à la sommedes produits des composantes :

a·b =

i=nDim∑

i=1

aibi

= a(1) ∗ b(1) + a(2) ∗ b(2) + ....

39

Page 40: Matlab French

40 CHAPITRE 5. APPLICATIONS

= |a||b|cos(θ)

où nDim est le nombre de dimensions du vecteur. Dans l’exemple endeux dimensions :

d = a*a’d =

4.2742e = a*b’e =

6.2056

Le produit vectoriel est un vecteur :

|a × b| = det

i j ka(1) a(2) 0b(1) b(2) 0

= a(1) ∗ b(2) − a(2) ∗ b(1)

= |a||b|sin(θ)

En dimension 2, ce vecteur est perpendiculaire au plan xy, qui dans cecontexte donne un scalaire

h = det([a;b])h =

-0.7854

Une commande MATLAB permet de réaliser ce calcul directement,cross(a,b)

5.2 Calcul matriciel

Par défaut, les variables de Matlab sont des matrices, et le scalaireest un cas particulier, c-à-d une matrice de 1x1. Donc toutes les opéra-tions arithmétiques d’addition/soustraction, multiplication, puissance s’ap-pliquent dans la mesure où elles sont conformes à l’algèbre matriciel.

Addition La somme de deux matrices A et B n’a de sens que si elles ontles mêmes dimensions :

c©2006 MEC1310

Page 41: Matlab French

5.2. CALCUL MATRICIEL 41

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

>> B = [5 7;9 1];

>> C = A + B??? Error using ==> plusMatrix dimensions must agree.

>>

L’erreur découle du fait que A est une matrice de 2x3 tandis que Best de dimension 2x2.

Multiplication Le produit de deux variables est possible si les dimensionsdes matrices A et B sont compatibles avec l’opération matricielle.Pour le produit B*A on obtient :

>> B*A

ans =33 52 6413 24 34

>>

Par contre, le produit A*B n’est pas permis :

>> A*B??? Error using ==> mtimesInner matrix dimensions must agree.

TransposéeOn obtient la transposée de la matrice (M), avec (M)’,

>> C = (B*A)’

C =33 1352 2464 34

>>

Opérations élément par élémentEn plus des opérations de l’algèbre, il est

MEC1310 c©2006

Page 42: Matlab French

42 CHAPITRE 5. APPLICATIONS

posssible d’effectuer des opérations élément par élément. On in-dique cette opération en faisant précéder l’opérateur par un point.Par exemple :

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

>> B = [ 33 52 64;13 24 34];

>> C = A.*B

C =

33 104 19252 144 238

>>

On note que le produit A*B n’est pas permis, tandis que A.*B l’est.

5.3 Résolution de systèmes d’équations

Le système d’équations,

ax + by = c

dx + ey = f

peut s’écrire sous forme matricielle,

(

a bd e

) (

xy

)

=

(

cf

)

A ∗ X = B

Formellement, la solution (x, y) peut s’exprimer par,

(

xy

)

=

(

a bd e

)

−1 (

cf

)

c©2006 MEC1310

Page 43: Matlab French

5.4. FORMES PARAMÉTRIQUES DES COURBES 43

X = A−1B

En pratique il ne faut jamais évaluer l’inverse d’une matrice pour ré-soudre un système d’équations. Il est beaucoup plus efficace de le fairepar une décomposition de Gauss, qui sous Matlab se fait par l’opérateur\ :

X = A\B

5.4 Formes paramétriques des courbes

Une courbe est un ensemble de points dont les coordonnées vérifientune relation.

F (~x) = 0

Il existe plusieurs types de représentation de courbes :

Représentation explicitePour un point ~P = (x, y, z) sur la courbe, une descoordonnées est exprimée explicitement en fonction des autres co-ordonnées :

y = f(x)

y = f(x)

x

En variant x, on engendrey, et ainsi l’ensemble despoints constituant la courbe.Cette représentation est bienadaptée à la production degraphes, mais présente unnombre d’inconvénients pourcertains types de courbes ;courbes fermées, avec despoints de rebroussement oubien avec une pente infinie.

Représentation implicite La forme implicite décrit une courbe comme l’en-semble des points dont les coordonnées vérifient une relation de laforme suivante :

F (x, y) = 0

MEC1310 c©2006

Page 44: Matlab French

44 CHAPITRE 5. APPLICATIONS

Par exemple , pour un cercle :

x2 + y2 = 1

Représentation paramétrique La forme paramétrique représente une courbepar un ensemble de relations (une par coordonnée) qui donnent lesvaleurs de celles-ci explicitement par une fonction d’un paramètre :

~P = (x, y, z)

où x = f(u), y = g(u) et z = h(u).

Le paramètre u varie sur l’intervalle de définition que l’on prend, sansperte de généralité :

0 ≤ u ≤ 1

En parcourant la plage du paramètre on associe trois coordonnées,x, y et z à chaque valeur de u ; ce qui engendre l’ensemble des pointsde la courbe.

5.4.1 La droite

La représentation paramè-trique d’une droite est donnéepar les relations suivantes :

~P = ~P0 + u( ~P1 − ~P0)

avec x = a + lu

y = b + mu

z = c + nu

P

(x,y,z)

y

z

(a,b,c)

(a+l,b+m,c+n)

x

où ~P0 = (a, b, c) indique le début de la droite, correspondant au para-mètre u = 0, et ~P1 = (a + l, b + m, c + n) indique l’autre extrémité corres-pondant à u = 1.

c©2006 MEC1310

Page 45: Matlab French

5.4. FORMES PARAMÉTRIQUES DES COURBES 45

%----------------------------------------------------% Programme pour creer et tracer un segment de droite% entre deux points P0 et P1, en utilisant une% representation parametrique:%% P = P0 + t*(P1-P0)%%-----------------------------------------------------%% On declare les deux points%P0 = [2.0 6.0]; % Point initial (coordonn\’ees x et y)P1 = [7.0 -2.0]; % Point final (coordonn\’ees x et y)

% Discretisation du segment

npt= uint8(11); % Nombre total de points incluant P0 et P1dt = .1; %Intervalle du parametre

% Construction du segment - 1ere methode

t = 0.0;P(1,1) = P0(1);P(1,2) = P0(2);for i=uint8(2):npt-1t = t+dt;P(i,1) = P0(1) + t*(P1(1)-P0(1));P(i,2) = P0(2) + t*(P1(2)-P0(2));endP(npt,1) = P1(1);P(npt,2) = P1(2);% Affichage du segment

figure (1)hold on;plot(P0(1,1),P0(1,2),’ro’,P1(1,1),P1(1,2),’ro’)plot(P(1:npt,1),P(1:npt,2),’b-’)

MEC1310 c©2006

Page 46: Matlab French

46 CHAPITRE 5. APPLICATIONS

% Construction du segment - 2eme methode

P0 = [-2.0 -6.0]; % Point initial (coordonn\’ees x et y)P1 = [ 7.0 8.0]; % Point final (coordonn\’ees x et y)

% Discretisation du segment

npt= uint8(5); % Nombre total de points incluant P0 et P1dt = 1./double(npt-1); %Intervalle du parametre

t = 0.0;P(1,1:2) = P0;for i=uint8(2):npt-1t = t+dt;P(i,1:2) = P0 + t*(P1-P0);endP(npt,1:2) = P1;

% Affichage du segment

plot(P0(1,1),P0(1,2),’ro’,P1(1,1),P1(1,2),’ro’)plot(P(1:npt,1),P(1:npt,2),’k-’)

% Construction du segment - 3eme methode

P0 = [-1.0 9.0];P1 = [ 4.0 -2.0];

% Discretisation du segment

npt= uint8(6)tmin = -.5;tmax = 1.5;dt = (tmax-tmin)/(double(npt-1));t = [tmin:dt:tmax]’; % vecteur colonne

% x= P0(1) + t*(P1(1)-P0(1));% y= P0(2) + t*(P1(2)-P0(2));

Q = [P0(1) + t*(P1(1)-P0(1)), P0(2) + t*(P1(2)-P0(2))]

c©2006 MEC1310

Page 47: Matlab French

5.4. FORMES PARAMÉTRIQUES DES COURBES 47

5.4.2 L’hélice et cercle

La représentation paramè-trique d’une spirale circulairede rayon r est donnée par lesrelations suivantes :

x = r cos u

y = r sin u

z = bu

xy

z

u =2π

u = 0

où le paramètre u peut s’interpréter comme l’angle du vecteur positionavec l’axe des x et donne un pas égal à b pour :

0 ≤ u ≤ 2π

%----------------------------------------------% Programme pour creer et dessiner une helice% de rayon r et avec un pas de s% x = r*cos(t)% y = r*sin(t)% z = s*t%----------------------------------------------% Les parametres de l’helicer = 2.0;s = 0.54;

% La discretisation de la courbetmin = pi/4;tmax = 5*pi;npt = uint8(60);dt = (tmax-tmin)/double(npt-1);

% Equations parametriques de l’helicefor i=uint8(1):nptt = tmin + double(i-1)*dt;P(i,1:3) = [r*cos(t) r*sin(t) s*t];end

MEC1310 c©2006

Page 48: Matlab French

48 CHAPITRE 5. APPLICATIONS

% Calcul du vecteur tangent obtenu en derivant% le vecteur position P par rapport au parametre t% VT= [-r*sint(t) r*cos(t) s]

point = uint8(30);t = tmin + double(point-1)*dt;VT(1,:) = P(point,:);VT(2,:) = [-r*sin(t) r*cos(t) s] + VT(1,:);

% Affichage de la courbe et du vecteur tangent en 3Dfigure (1)hold on;plot3(P(1:npt,1),P(1:npt,2), P(1:npt,3))plot3(VT(:,1),VT(:,2),VT(:,3),’-r+’)hold off;

5.5 Rotation d’un objet

On tourne un point P autour de l’origine :

x cos( )θ

x sin( )θ

y cos( )θ

θy sin( )

P

P’

θ

c©2006 MEC1310

Page 49: Matlab French

5.5. ROTATION D’UN OBJET 49

Les coordonnées du nouveau pint P ′ sont obtenues par :

x′ = xcos(θ) − ysin(θ) (5.1)

y′ = xsin(θ) + ycos(θ) (5.2)

(5.3)

qui s’écrit sous forme matricielle,

[x′y′] = [xy]

[

cos(θ) sin(θ)−sin(θ) cos(θ)

]

%-------------------------------------------------% Construction de l’objet%-------------------------------------------------npts = 5;obj = [ 10 0;

12 0;12 1;10 1;10 0]

%-------------------------------------------------% Construction de la matrice de rotation%-------------------------------------------------angle = pi/4;R = [cos(angle) sin(angle);

-sin(angle) cos(angle)];%-------------------------------------------------% Rotation de l’object%-------------------------------------------------figure(1)hold onfor i=1:7obj = obj*R;plot(obj(:,1),obj(:,2))end

MEC1310 c©2006