Vous êtes sur la page 1sur 77

République Algérienne Démocratique et Populaire

Ministère de L’Enseignement Supérieur et de la Recherche Scientifique

Centre Universitaire Nour Bachir El Bayadh

Polycopié de Cours

Maitriser Matlab

Présenté par :

M.BERBER Mohammed
M.MOKADDEM Allel
M.DOUMI Bendouma
AVANT PROPOS

La quantité importante de données qui sont continuellement manipulées dans le


domaine des études et de la recherche, et en particulier dans le cadre technique et
scientifique, nécessite des logiciels assez puissants pour les traiter et en tirer des
résultats rapides et précis.

Le logiciel MATLAB constitue une plate-forme efficace pour le calcul numérique,


MATLAB est enrichi par ses nombreuses bibliothèques (”Toolboxes”) qui évitent de
programmer les techniques évidentes pour les développements approfondies, il met à la
disposition des utilisateurs les mêmes possibilités de programmation structurée que les
langages scientifiques courants (C, Pascal, JavaScript, C++, PHP, C#,...).

Dans la recherche bibliographique que nous avons réalisée sur le logiciel MATLAB, nous
avons trouvé beaucoup de travaux et de cours en ligne allant des notions de base jusqu'à
des degrés assez complexes ; la plupart sont présentés sous forme de descriptifs écrits.

Ce modeste polycopié de cours intitulé ‘’ Maîtriser Matlab ‘’ qui est destiné aux étudiants
de Licence et de Master des deux domaines S.T et S.M a été préparé en tenant compte
des niveaux de connaissances et des difficultés relevées auprès de nos étudiants durant
notre encadrement pédagogique. Ce cours tel qu’il est présenté va certainement
contribuer à encourager les intéressés à se familiariser avec le logiciel MATLAB et à
surmonter leurs difficultés. Une présentation assez simple se basant sur des définitions,
des illustrations, et des exemples de programmes exécutés qui touchent pratiquement
l'ensemble des notions indispensables pour apprendre MATLAB, Ce manuel de cours a
été élaboré dans l’esprit d’éviter à nos étudiants de se perdre sur des recherches
supplémentaires inutiles.
Tables des Matières

TABLE DES MATIERES

I. Introduction Générale
I.1 Méthodes numériques……………………………………………………………5
I.2 Algorithme………………………………………………..………………………..5
I.3 Organigrammes…………………………………………………………………...6
I.4 Programmes……….………………………………………………………………….6
I.5 Logiciels de programmation………….…………………………………………7

II. Introduction à Matlab


II.1 Démarrer et quitter Matlab……………………………………………………9
II.2 Premiers pas sur des exemples élémentaires……………………………….11
II.2.1 Formats d’affichage……………………………………………………....11
II.2.2 Calculs arithmétiques en mnode commande………………………...12
II.2.3 Priorité des opérations…………………………………………………..13
II.3 Constantes prédéfinies…………………………………………………………13
II.4 Vecteurs et matrices…………………..………………………………………...14
II.4.1 Création des matrices particulières…………………………………...16
II.4.2 Opérations sur les matrices…………………………………………….17
II.4.3 Fonctions sur les matrices…………………..…………………………..19
II.5 Fonctions prédéfinies……………………………………………………………20
II.6 Vecteurs propres et valeurs propres…………..………………………………21

III. Graphisme
III.1 Représentation graphique……………………………………………………..23
III.2 Graphique simple………………………….……………………………………23
III.3 Graphique avancée……………………………………………………………..25
III.4 Graphique multiples 1…………………………………………………………26
III.5 Graphique multiples 2…………………………………………………………26
III.6 Graphique polaire………………………………………………………………27
III.7 Graphiques à échelles logarithmiques………………………………………28

1
Tables des Matières

III.8 Graphiques à 3 dimensions…………………………………………………...28


III.9 Graphique de contours 3 dimensions……………………………………......29
III.10 Normales et surfaces……………………………………………………...….30

IV. Résolutions des systèmes


IV.1 Décompositions de matrice…………………………………………..………..33
IV.2 Déterminant……………………..………………………………………………33
IV.3 Simplification d'équations…………..…………………………………………33
IV.4 Résolution symbolique…………………………………………………………34
IV.4.1 Sommation symbolique……………………………….……………….34
IV.4.2 Dérivées, limites et intégrales…………………….………………….34
IV.4.3 Equations et système…….…………………..………………………...36
IV.5 Résolution de systèmes linéaires……………………………………………..37
IV.6 Résolution symbolique de systèmes linéaires………………………………38
IV.7 Résolution d'équations différentielles………………………………………..39

V. Programmation
V.1 Les m-files……………………………………………………..………………….43
V.2 Les opérateurs logiques……………………………………………….………..43
V.3 Les mots gardés……………………………………………………………….…44
V.4 Entrées / sorties………………………………………………………………….44
V.4.1 Utilisateurs……………………………………..…………………………44
V.4.2 Disques……………………………………………………………………..45
V.5 Le contrôle de l'exécution………………………………………………………45
V.5.1 La boucle FOR…………………………………………………………….45
V.5.2 La boucle WHILE………………………………………………………...46
V.5.3 Instruction de choix IF……………………………..……………………46
V.5.4 Instruction de choix SWITCH…………………………………….……47
V.6 Les fonctions……………………………………………………………………...47
V.6.1 Les fonctions simples……………………………………………………..47

2
Tables des Matières

V.6.2 Les fonctions récursives…………………………………………………48


VI. Problèmes avec solutions
VI.1 Résolution d’une équation du second degré………….…………………….50
VI.2 Méthode de la Dichotomie……………………………..…………………..….50
V.2.1 Hypothèse sur la fonction………………..…………………………….50
V.2.2 Algorithme de la méthode………………..…………….……………....51
VI.3 Méthode des approximations successives (ou du point fixe)……...……...52
VI.3.1 Hypothèse sur la fonction……………………………………………..53
VI.3.2 Théorème du point fixe………………………………………………..53
VI.4 Méthode de Newton (ou de la tangente)…………………………………….56
VI.4.1 Construction de l’algorithme ………………………………………...57
VI.4.2 Théorème de la méthode……………………………………………...57
VI.4.3 Vitesse de convergence…………………………………………….….58
VI.5 Interpolation et approximation................................................................60
VI.5.1 Interpolation............................................................................60
VI.5.2 Approximation.........................................................................61
VI.6 Intégration numérique..............................................................................67
VI.6.1 Intégration de trapèzes...........................................................67
VI.6.2 Intégration de simpson...........................................................67
VI.6.3 Intégration de quadrature de Tchébychev.............................67
VI.6.4 Intégration de quadrature de Gauss-Legendre.....................67

VI.7 Résolution numérique d'une équation différentielle ordinaire...............69


VI.7.1 Méthode de Runge Kutta........................................................69
VI.7.2 Méthode d’Adams-Bashford-Moulton.....................................69

Références bibliographiques ……………………………….……………………....73

3
Introduction Générale

INTRODUCTION GENERALE

4
Introduction Générale

I.1. Méthode numérique


Pour résoudre un problème sans solution analytique évidente, on peut recourir aux
méthodes numériques qui se basent sur l’analyse logique du problème. Une méthode
numérique est une discipline à l'interface des mathématiques et de l'informatique, elle
est basé sur la mise en équation et la recherche des solutions par le calcul approché qui
s’effectue soit par les méthodes itératives (on répète successivement l’opération
jusqu’au rang n, c’est à dire par récurrence), soit par les méthodes conditionnelles (en
évaluant tous les cas possibles).
Dans cette démarche nous devons suivre le cheminement suivant :
1- Enoncé du Problème - Ecriture des lois fondamentales
2- Choix de méthodes - Algorithme
3- Organigramme
4- Langage - Programme
5- Mise au point - Essais
6- Données – Solutions – Vérifications

NB : La méthode de résolution doit s’appuyer sur la logique mathématique qui offre


beaucoup plus de clarté et de rigueur dans le traitement du problème.

I.2 Algorithme
On appelle algorithme l’ensemble des règles définissant un procédé de calcul destiné à
obtenir un résultat déterminé à partir des données initiales. Il peut y exister plusieurs
algorithmes pour le même problème ; l’essentiel est d’aboutir au résultat très acceptable
le plus rapidement possible. On doit alors choisir le plus simple algorithme possible de
façon à optimiser les tâches machines.
Un algorithme comprend :
- des calculs (R=A*B)
- des formules de récurrence faisant intervenir des valeurs calculées au stade
précèdent du calcul (Ri = A*Ri-1 pour i = 2 à N).

Méthode direct : nombre fini d’étapes de calculs ;


Méthode itérative : solution recherchée par approximation successive (penser à limiter
le temps de calcul ; le test d’arrêt). Le résultat final doit être donné avec une estimation
de l’erreur.

5
Introduction Générale

Il y à lieu de choisir la méthode la mieux adaptée qui doit garantir par conséquent :
• la stabilité (sinon il y a un risque de ne pas obtenir les solutions).
• la précision des résultats.
• la rapidité des calculs.
• la facilité d’écriture des programmes.
I.3 Organigramme
Il donne une description schématique de l’algorithme. On doit dessiner un schéma
indiquant l’ordre d’exécution des opérations traitées par l’algorithme, et déclarer, au
départ, les variables utilisées dans le programme. Voici, ci après, les principaux
symboles utilisés :

INSTRUCTIONS SYMBOLES

Entrée des données initiales

Traitement – Calculs

Test branchement conditionnel

Boucle de programme

Branchement

Affichage information et de résultats

I.4 Programmes
Après avoir trouvé le bon algorithme pour résoudre numériquement un problème et
après avoir donné son exécution sous forme schématique (organigramme), on choisit
ensuite un langage de programmation afin de le faire exécuter par un ordinateur. Le
programme transmet étape par étape les instructions décrites dans l’organigramme.
C’est le messager de l’ordinateur. Les instructions décrites dans le programme doivent
respecter des codes et des ordres d’écriture spécifique à celui-ci. C’est les syntaxes du

6
Introduction Générale

programme. L’exécution du programme doit se faire via le compilateur (le noyau du


programme). Il existe plusieurs programmes (aujourd’hui sous forme de logiciels
scientifiques).
Dans le cadre de ce cours, nous utiliserons le logiciel MATLAB.

I.5 Logiciels de programmation


Dans le marché international, nous trouvons beaucoup de logiciels interactifs destinés
aux calculs scientifiques. Le logiciel MATLAB présente un produit très intéressant pour
développer des calculs numériques grâce à son environnement graphique, ses
caractéristiques principales sont:
✓ La simplicité dans la programmation des phénomènes complexes;
✓ Sa grande puissance et sa précision dans les calculs.
Matlab est un logiciel destiné spécialement aux calculs numériques, il a été
commercialisé par la société MathWorks, et initialement développé par Cleve Moler,
professeur de mathématique à l’université du Nouveau-Mexique puis à Stanford, pour
permettre aux étudiants de travailler à partir d’un outil de programmation de haut
niveau, sans savoir au préalable des connaissances sur les langages de programmation
Fortran ou le C.

MATLAB est enrichi par ses nombreuses bibliothèques (”Toolboxes”) qui évitent dans
plusieurs cas de programmer les techniques numériques évidentes. Néanmoins, pour
les développements approfondies, il met à notre disposition les mêmes possibilités de
programmation structurée que les langages scientifiques courants (C, C++, C#, PHP,
Javascript, ...). Le code de MATLAB comporte des blocs spécifiques écrits en langage
assembleur pour obtenir des performances améliorées.
Son nom vient de MATrix LABoratory, car il a été initialement développé pour le calcul
matriciel.

Le logiciel MATLAB est très flexible et sa disponibilité est remarquable puisqu’il peut
être exécuté sur n’importe quel type d’ordinateur et sur des différents systèmes
d'exploitation utilisés par les scientifiques : PC, Macintosh, Station de travail, gros
ordinateurs sous UNIX, Windows, etc ...

Les possibilités de ce logiciel sont considérables et dans une introduction à MATLAB il


s’agit de présenter quelques éléments caractéristiques dans le cadre d’un cours
particulier.

7
Introduction Générale

INTRODUCTION A MATLAB

8
Introduction à Matlab

II. Présentation du logiciel MATLAB


II.1 Démarrer et quitter MATLAB
pour démarrer MATLAB dans l’environnement Windows, il faut cliquer deux fois sur
l’icône du logiciel qui se trouve probablement dans le dossier MATLAB. Généralement,
comme pour tout autre logiciel, il suffit d'aller :
1. Menu démarrer
2. Programmes
3. Matlab
4. Matlab
MATLAB peut être utilisé en mode interactif, comme une calculette classique ou en
mode programmation. Dans ce dernier cas un programme (ou encore appelé script) est
écrit au moyen d’un éditeur de texte quelconque ou l'éditeur de Matlab. Il est enregistré
dans un fichier dont le nom se termine par l’extension ”.m”.
Dans l’environnement UNIX, un simple click sur Matlab pour démarrer. Une fenêtre de
commande de l’environnement MATLAB est ouverte automatiquement et permet
d’écrire des commandes afin d'exécuter vos programmes ou vos calculs. En tapant help.
vous allez ouvrir l’aide qui est disponible en ligne pour l'éclaircissement et les
démonstrations demandées. Pour quitter MATLAB, il suffit de taper la commande : exit

9
Introduction à Matlab

Le logiciel propose un véritable environnement de travail composé de multiples


fenêtres. Nous pouvons distinguer quatre blocs :

1- Command window (console d’exécution) : à l’invite de commande « >> »,


l’utilisateur peut entrer les instructions à exécuter. Il s’agit de la fenêtre principale
de l’interface.
2- Workspace (espace de travail) : permet de visualiser les variables définies, leur
type, la taille occupée en mémoire…
3- Current directory (répertoire courant) : permet de naviguer et de visualiser le
contenu du répertoire courant de l’utilisateur. Les programmes de l’utilisateur
doivent être situés dans ce répertoire pour être visible et donc exécutable.
4- Command history : (historique des commandes) que l’utilisateur a exécuté. Il est
possible de faire glisser ces commandes vers la fenêtre de commande.

10
Introduction à Matlab

Notons que le console d'exécution (command Windows) est la fenêtre centrale de


l’interface, c’est à partir de là que l’utilisateur pourra lancer les commandes interprétées
par Matlab. Le principe est simple et intuitif, il suffit de connaître les fonctions
appropriées et de respecter leur syntaxe.

Exécuter le fichier Matlab.exe


L’invite ‘>>’ de MATLAB doit alors apparaître, et on entre ensuite les commandes, par
Exemple :

clc : permet d’effacer la zone de travail


quit : permet de quitter MATLAB
what : liste les fichiers *.m et *.mat courant
whos : liste les variables courantes
clock : année mois jour heure minute seconde
date : affiche la date actuelle
tic : déclenchement de chrono
toc : arrêt de chrono
close all : efface les graphiques courant
clear all : détruit des variables et fonctions
help : donne l’aide sur une fonction

Exemple d’illustration

>> help cos


COS Cosine.
COS(X) is the cosine of the elements of X

II.2 Premiers pas sur des exemples élémentaires


II.2.1 Formats d’affichage
Un même nombre peut être affiché différemment selon le choix du format. Par exemple,
pour 1/7, voici quelques formats de sortie format possibles en MATLAB :

11
Introduction à Matlab

l’invite
A >> deshort
format commande, taper le format à utiliser, taper « 1/7 », puis entrer :
>> 1/7
ans
0.1429,
>> format short e
>> 1/7
ans =
1.4286e-001
>> format short g
>> 1/7
ans =
0.14286
>> format long
>> 1/7
ans =
0.142857142857143
>> format long e
>> 1/7
ans =
1.428571428571429e-001
>> format long g
>> 1/7
ans =
0.142857142857143

II.2.2 Calculs arithmétiques en mode de commande


A l’invite de commande, taper « 4*7 », puis entrer :

>> 4*7
ans =
28

A la validation de l’instruction, l’interface affiche le résultat de cette dernière. Afin


d’alléger l’affichage, un point-virgule « ; » en fin de commande empêche le renvoie du
résultat dans la fenêtre (évidemment l’instruction est toujours exécutée). Par exemple :

>> 4*7 ;
>>

12
Introduction à Matlab

Le calcul a été effectué mais le résultat n’est pas affiché.


Matlab gère de façon automatique les nombres entiers, réels, complexes, les chaînes de
caractères… Ainsi, la déclaration des variables est implicite, et la mémoire nécessaire est
automatiquement allouée lors de la définition de celles-ci. Le symbole d’affectation est le
signe « = ».

>> x = 6
x =
6
>> y = 14
y =
14
>> x + y
ans =
20
>> x * y
ans =
84

II.2.3 Priorité des opérations


Priorité1 : les parenthèses internes sont évaluées avant les parenthèses extérieures ;
Priorité2 : exponentiation ;
Priorité3 : multiplication et division (même priorité) ;
Priorité4 : addition et soustraction (même priorité) ;

II.3 Constantes prédéfinies


Il existe des symboles auxquels sont associés des valeurs prédéfinies. En voici
quelques uns :

Symboles Significations
pi Nombre π =3.141592
i ou j Nombre complexe : √−1
ans Réponse à une expression sans assignation
eps Réponse à une expression sans assignation
NaN Not a Number 0/0
nargin Nbre d'arguments d'entrée d'une fonction
nargout Nbre d'arguments de sortie d'une fonction
flop Nombre d'opérations flottantes par seconde
inf Infini ∞
computer Type de calculateur

13
Introduction à Matlab

Attention, ces valeurs peuvent être écrasées si le symbole est redéfini.

>> pi=1
pi =
1
>> clear pi
>> pi
ans =
3.1416

Il est donc possible de définir et manipuler explicitement des nombres complexes.

>> a = 2 + i*8;
>> b = 5 – i*2;
>> a + b
ans =
7 + 6i

>> a*b

ans =

26.0000 +36.0000i

>> a/b

ans =

-0.2069 + 1.5172i

>> a-b

ans =

-3.0000 +10.0000i

II.4 Vecteurs et matrices


Pour définir un vecteur ligne sous Matlab, il suffit de mettre ses valeurs entre crochets et
de les séparer par un espace ou une virgule. Pour obtenir un vecteur colonne (vertical),
il suffit de les séparer par un point virgule ou de transposer le vecteur ligne via l'ajout
d'un apostrophe après le crochet fermant.

14
Introduction à Matlab

%Vecteurs %
>> vecH = [ 1 2 3 4 5] % Vecteur horizontal

vecH =

1 2 3 4 5

>> vecV = [ 1 2 3 4 5]' % Vecteur vertical

vecV =

1
2
3
4
5
>> vecH = [ 1,2,3,4,5] % Vecteur horizontal

vecH =

1 2 3 4 5

>> vecV = [ 1;2 ;3 ;4 ;5] % Vecteur vertical

vecV =

1
2
3
4
5

La manipulation dans Matlab commence donc par la définition des matrices.

>> A = [2 1 0 ; 4 -3 2 ; 1 2 -1]
A =
2 1 0
4 -3 2
5
1 2 -1

>> B = [-5;0;1]
B =
-5
0
1

15
Introduction à Matlab

II.4.1 Création des matrices particulières


Matlab permet de créer de manière simplifiée des matrices spéciales comme, par
exemple, des matrices remplies de 1 ou de 0, etc. (m et n sont les dimensions de la
matrice souhaitée et A est une matrice).

>> eye(3,5) % Matrice unité


ans =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0

>> ones(3,4) %Matrice dont tous les éléments sont égaux à un


ans =
1 1 1 1
1 1 1 1
1 1 1 1

>> zeros(4,4) % Matrice dont tous les éléments sont égaux é zéro
ans =

0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
>> rand(2,3) % Matrice d'éléments aléatoires
ans =
0.4447 0.7919 0.7382
0.6154 0.9218 0.1763

>> diag(5,6) % Matrice diagonale


ans =
0 0 0 0 0 0 5
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
>> A=[1 2 3;1 2 3];
>> size (A) %donne le nombre de lignes et le nombre de colonnes de A

ans =
2 3

16
Introduction à Matlab

>> length (A) % donne le plus grand nombre entre lignes et colonnes

ans =

II.4.2 Opérations sur les Matrices


Un des atouts remarquables de Matlab est la possibilité d’effectuer les opérations
arithmétiques traditionnelles de façon naturelle sans avoir à les programmer. Les
opérateurs standards sont donc directement applicables aux matrices. Si la commande
entrée ne respecte pas les règles de calcul matriciel (compatibilité des opérandes), le
logiciel renverra une erreur.

+ Addition

- Soustraction

* Produit

/ division à droite

\ division à gauche

^ Puissance

‘ Transposition

Inv( ) Inversion

det(A) déterminant associé à la matrice A

Pour éliminer une ligne ou une colonne on utilise la commande suivante

17
Introduction à Matlab

>> A=[1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16]

A=
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

>> A(3,:)=[]
A=
1 2 3 4
5 6 7 8
13 14 15 16

>> A=[1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16]

A=

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

>> A(:,4)=[]

A=

1 2 3

5 6 7

9 10 11

13 14 15

18
Introduction à Matlab

>> A = [2 1;6 9];


>> B = [1 0;-4 3];

>> A + B
ans =
3 1
2 12

>> A * B
ans =
-2 3
-30 27
>> A'
ans =
2 6
1 9
>> inv(B)
ans =
1.0000 0
1.3333 0.3333

Exemples d’application

>> A / B
ans =
3.3333 0.3333
18.0000 3.000

>> A^2
ans =
10 11
66 87

NB : Si l’on souhaite effectuer une opération, non pas matricielle, mais éléments par éléments,
l’opérateur doit être précédé d’un point « . » : .* ./ .^ .\ Appliquons ces opérateurs aux
matrices de l’exemple précédent.

19
Introduction à Matlab

>> A .* B
ans =
2 0
-24 27

>> B ./ A
ans =

0.5000 0
-0.6667 0.3333

>> A.^2
ans =
4 1
36 81

II.4.3 Fonctions sur les Matrices


Voici une liste non-exhaustive des fonctions de bases sur les vecteurs et matrices.
cumsum(V) Somme cumulée
cumprod(V) Produit cumulé
prod(V) Multiplication
tril(A) Extraction de la partie triangulaire inférieure d'une matrice
triu(A) Extraction de la partie triangulaire supérieure d'une
matrice
sort(A) Trie la matrice
fliplr(A) Retourne la matrice horizontalement
flipud(A) Retourne la matrice verticalement
rank(A) Rang de la matrice
trace(A) Somme des éléments diagonaux
mean(V) Renvoie la valeur moyenne des éléments du tableau.
sum(V) Calcul la somme des éléments du tableau.
sort(V) Range les éléments du tableau dans l’ordre croissant.

20
Introduction à Matlab

II.5 Fonctions prédéfinies


Nous présentons quelques fonctions prédéfinies dans Matlab.

Fonctions Autres Définition


trigonométrique fonctions
sin(x) abs(x) valeur absolue de x
cos(x) angle(x) argument du complexe x
tan(x) sqrt(x) racine carrée de x
asin(s) real(x) partie réelle de x
atan(x) imag(x) partie imaginaire de x
sinh(x) conj(x) complexe conjugué de x
cosh(x) round(x) arrondi entier de x
tanh(x) fix(x) arrondi par défaut de x
asinh(x) Floor(x)(x) arrondi au voisinage de −∞ de x
acosh(x) ceil(x) arrondi au voisinage de +∞ de x
atanh(x) rem(x,y) Le reste de la division x/y
exp(x) Exponentielle de base e
log(x) log de base e
Log10(x) Log de base 10

La fonction linspace(start,stop,npoints) permet d’avoir des points régulièrement


espacés. (la même chose que les (:) sauf qu’il s’agit ici d’une fonction, au sens d’unité ou
module).

>> linspace(1,10,4)
ans =
1 4 7 10
>> linspace(1,10,6)
ans =
1.0000 2.8000 4.6000 6.4000 8.2000 10.0000
>> linspace(1,10,8)
ans =
1.0000 2.2857 3.5714 4.8571 6.1429 7.4286 8.7143
10.0000
>> linspace(1,10,10)
ans =
1 2 3 4 5 6 7 8 9 10

21
Introduction à Matlab

II.6 Vecteurs propres et valeurs propres

Exemples 1 : Calcul de valeurs propres


5 −3
Déterminer les valeurs propres de la matrice 𝐴 = ( )
6 −4
Les valeurs propres de A sont les scalaires l vérifiant :
5−𝜆 −3
det(𝐴 − 𝜆𝐼2 ) = 0 ⇔ 𝑑𝑒𝑡 ( )=0
6 −4−𝜆
det(𝐴 − 𝜆𝐼2 ) = 0 ⇔ −(5 − 𝜆)(4 + 𝜆) = 0
det(𝐴 − 𝜆𝐼2 ) = 0 ⇔ 𝜆2 − 𝜆 − 2 = 0
det(𝐴 − 𝜆𝐼2 ) = 0 ⇔ (𝜆 + 1)(𝜆 − 2) = 0
D’où les valeurs propres : 𝑙1 = −1 et 𝑙2 = 2

Exemples 2 : Calcul de vecteurs propres


Déterminer les vecteurs propres associés aux valeurs propres de la matrice
5 −3
𝐴=( ).
6 −4
En posant 𝑥1 et 𝑥2 les vecteurs propres associés respectivement à 𝑙1 et 𝑙2 , nous avons :
- Pour 𝑙1 = −1:

6 − 3 𝑥1
(A + I2 )X1 = 0 ⇔ ( ) ( ′′ ) = 0
6 − 3 𝑥1
′ ′′
6𝑥1 − 3𝑥1 = 0
1
𝑥1 = ( )
2

- Pour 𝑙2 = 2

3 − 3 𝑥2
(A + 2I2 )X2 = 0 ⇔ ( )( ) = 0
6 − 6 𝑥2′′
3𝑥2′ − 3𝑥2′′ = 0
1
𝑥2 = ( )
1
Voici comment demander à Matlab de déterminer les valeurs propres et les vecteurs
propres d'une matrice.
>> A = [1 2 3 ; 4 5 6 ; 7 8 9] ;

>> [VecA, ValA] = eig(A) % Renvoie les valeurs et vecteurs propres

VecA =

-0.2320 -0.7858 0.4082


-0.5253 -0.0868 -0.8165
-0.8187 0.6123 0.4082

ValA =

16.1168 0 0
0 -1.1168 0
0 0 -0.0000

22
Graphisme

GRAPHISME

23
Graphisme

III.1 Représentation graphique


Les bibliothèques de Matlab proposent un très grand nombre de fonctions pour la
manipulation d’objets graphiques. Nous ne présentons ici que quelques fonctions de
base, utiles pour la visualisation de courbes. Si nous nous concentrons particulièrement
sur la représentation graphique à 2 dimensions, il est possible d’aller bien plus loin :
graphismes 3D (courbes, maillages, surfaces…), édition d’IHM (graphical user interface,
GUI), animations… Quelques exemples de représentations 3D sont présentés.
Les quelques commandes suivantes montrent comment afficher un graphique simple.
Dans Matlab ne sachant travailler qu'en valeurs discrètes, il faut d'abord commencer par
définir l'intervalle de valeurs de l'abscisse. Une fois ceci fait, on calcul la valeur de la
fonction (dans notre cas un cosinus) pour chaque échantillon de temps et l'on arrive au
vecteur y.
III.2 Graphique simple

t = 0 :pi/30 :2*pi ; % Abscisse de 0 à 2π par pas de π/30


y = cos(t) ; % Valeurs de la fonction dans le temps
figure ; % Nouvelle fenêtre
plot(t,y) % Tracer
title('Cos dans l"intervalle [0,pi]') ; % Titre
xlabel('Temps') ; % Légende en abscisse
ylabel('Cos(temps)') ; % Légende en ordonnée
text(pi/6,cos(pi/6),'< Je suis en [pi/6]') %Chaîne de caractères à la
position x,y

Après compilation (F5 ou Debug-Run)

24
Graphisme

t = [0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6] ;


w = 2*pi/6;
y = sin(w*t);
plot(t,y,’*’); % plot(t,y,’r*’),la couleur de l’étoile devienne rouge

Après compilation (F5 ou Debug-Run)

Différentes options pour le dessin sont disponibles (consulter le help plot) :


{Various line types, plot symbols and colors may be obtained with PLOT(X,Y,S)
where S is a character string made from one element from any or all the following 3
columns}:

b blue . point - solid


g green o circle : dotted
r red x x-mark -. dashdot
c cyan + plus -- dashed
m magenta * star (none) no line
y yellow s square
k black d diamond
w white v triangle (down)
^ triangle (up)
< triangle (left)
> triangle (right)
p pentagram
h hexagram

25
Graphisme

III.3 Graphique avancée


Matlab permet de personnaliser les graphiques. Par exemple, il est possible de changer
la couleur du trait, de marque les points avec différents symbole tels que x, o, *, ... etc.
Voici un aperçu simple de ce qui est possible de faire.

figure ; % Nouvelle fenêtre


t = 0 :pi/30 :2*pi ; % Définition de temps
y = cos(t) ; % Fonction du temps
subplot(2,2,1) % Zone supérieure gauche
plot(t,y) ; % Tracer
title('Normal') ; % Titre
subplot(2,2,2) % Zone supérieure droit
plot(t,y,'r') ; % Trace en rouge
title('En rouge') ; % Titre
subplot(2,2,3) % Zone inférieur gauche
plot(t,y,'or') ; % Trace points ronds en rouge
title('Cercles non reliés') ; % Titre
subplot(2,2,4) % Zone inférieur droite
plot(t,y,'*-g') ; % Trace point étoiles relié en
Après
vertcompilation (F5 ou Debug-Run)
title('Etoiles reliées en verte') ; % Titre

26
Graphisme

III.4 Graphique multiples 1


Il est possible de tracer plusieurs courbes sur le même graphique. Pour ce faire, une
méthode consiste à mettre l'ensemble des fonctions à tracer dans les parenthèses qui
suivent la commande plot.

figure ; % Nouvelle fenêtre


x = linspace(0,pi,30) ; % Fonction du temps
plot(x,cos(x),'o-r',x,sin(x),'x-b',x,exp(-x),'*-g') % Tracer
legend('cos(x)','sin(x)','exp(-x)') % Légende sur graphique

III.5 Graphiques multiples 2


Une autre méthode pour tracer plusieurs courbes sur un même graphique consiste
à activer la commande Hold On ce qui stipule à Matlab de dessiner les graphiques les uns
sur les autres.

figure ; % Nouvelle fenêtre


x = linspace(0,pi,30) ; % Fonction du temps
hold on % Maintient du graphique
plot(x,cos(x),'o-r') % Tracer points ronds reliés en rouge
plot(x,sin(x),'x-b') % Tracer points croix reliés en vert
plot(x,exp(-x),'*-g') % Tracer points étoiles reliés en bleu
legend('cos(x)','sin(x)','exp(-x)') % Légende sur graphique

27
Graphisme

III.6 Graphiques polaires


Il est aussi possible de dessiner des graphiques polaires sous Matlab.

figure ; % Nouvelle fenêtre


t = 0 :.01 :2*pi ; %Echelle du temps
polar(t,sin(2*t).*cos(2*t),'-r') % Graphique polaire en pointillé
rouge

28
Graphisme

III.7 Graphiques à échelles logarithmiques


Il est aussi possible de dessiner des graphiques avec un ou plusieurs axes sous forme
logarithmique.

figure ; % Nouvelle fenêtre


x = 0 :0.01 :1 ;
subplot(3,1,1) ; % Zone supérieure
loglog(x,exp(x)) ; % Echelle logarithmique deux axes
subplot(3,1,2) % Zone centrale
semilogx(x,exp(x)) % Echelle logarithmique sur l'axe Ox
subplot(3,1,3) % Zone inférieure
semilogy(x,exp(x)) % Echelle logarithmique sur l'axe Oy

III.8 Graphiques à 3 dimensions


Matlab permet la représentation de graphique à trois dimensions pour ce faire, il faut
passer en arguments à la fonction meshc trois matrices représentant les coordonnées
selon les trois axes des points de la fonction.
Dans l'exemple ci-dessous, les matrices X et Y sont construite à l'aide de la fonction
meshgrid de Matlab qui définis une grille carrée. Quand à la matrice Z elle est définie
grâce à la fonction peaks qui représente une Gaussienne en fonction des matrices X et Y.

29
Graphisme

%Graphiques 3 dimensions

figure ; %nouvelles fenêtre


[X,Y] = meshgrid(-3 :.125 :3) ;% Génération d'une grille de -3 à 3 pas
de 0.125
Z = peaks(X,Y) ; % Distribution gaussienne en Z
meshc(X,Y,Z) ; % Affichage 3 dimensions
axis([-3 3 -3 3 -10 5]) % Etalonnage des axes

III.9 Graphique de contours 3 dimensions


Il est aussi possible de réaliser des contours. Ces fonctions relient les points de même
hauteur (valeur) par des courbes. La couleur des courbes est liée à la valeur qu'elle
représente.

% Graphique de Contours 3 dimensions %


figure ; % Nouvelle fenêtre
[X,Y] = meshgrid(-3 :.125 :3) ; % Génération d'une grille de -3 à 3
pas de 0.125
Z = peaks(X,Y) ; % Distribution gaussienne en Z
subplot(3,1,1) ; % Zone supérieure
meshc(X,Y,Z) ; % Affichage 3 dimensions
subplot(3,1,2) % Zone centrale
contour(Z,15) % Contour 15 niveaux
subplot(3,1,3) % Zone inférieure
contour3(Z,15) % Contour 3 dimensions 15 niveaux

30
Graphisme

La fonction mesh trace un maillage (séries de lignes entre les points) tandis que la
fonction surf trace une surface. Ces fonctions prennent en argument 2 matrices
générées à partir de 2 vecteurs (x et y, pas nécessairement de même taille) et une
matrice Z de dimension (length(y),length(x)). Pour chaque point du plan (x(i),y(j)), elles
affichent la valeur (ou niveau) Z(j,i). Les 2 premières matrices obtenues à l’aide de la
fonction meshgrid définissent tous les points du quadrillage. En fait, le niveau Z(j,i) de
chaque point du maillage est calculé à partir des couples (X(j,i),Y(j,i)). Une quatrième
matrice peut être précisée pour définir une échelle de couleur associée au niveau du
maillage. Cette échelle est basée sur une palette de couleurs prédéfinie par la valeur
courante de la variable colormap.

31
Graphisme

% | Graphique de Contours 3 dimensions


x=[-2:0.1:2];
y=[-2:0.1:2];
[X,Y]=meshgrid(x,y);
colormap([0 0 1]);
Z=X.*exp(-X.^2-Y.^2);
mesh(X,Y,Z)
colormap('default') ;
surf(X,Y,Z)
xlabel('x'), ylabel('y'), zlabel('Z')

III.10 Normales de surfaces


Enfin, il est possible sous Matlab de représenter des surfaces à trois dimensions ainsi
que leur normale.

% Normales de surfaces%
figure ; % Nouvelle Fenêtre
[x,y,z] = cylinder(1 :10) ; % Création d'un cylindre 3 dimensions
surfnorm(x,y,z) % Affichage des surfaces et normes
axis([-12 12 -12 12 -0.1 1]) % Etalonnage des axes

32
Graphisme

33
Résolution des Systèmes

RESOLUTION DES SYSTEMES

34
Résolution des Systèmes

IV. Résolution de systèmes

IV.1.Décompositions de matrice
Matlab permet de séparer des matrices selon plusieurs décompositions tels que LU, QR,
SVD, etc.

% | Décomposition de matrice
A = [ 1 2 3 ; 4 5 6 ; 7 8 9] ; % Défnition de A
[L U] = lu(A) % Décomposition LU
[Q R] = qr(A) % Décomposition QR
[U S V] = svd(A) % Décomposition USV

IV.2 Déterminant
Pour connaître le déterminant d'une matrice, il suffit d'utiliser la commande det

% Valeurs et vecteurs propres%


A = [1 2 3 ; 4 5 6;7 8 9] ; % Définition de A
det(A) % Déterminant de la matrice A
ans =
0

IV.3 Simplification d'équations


Matlab dispose de fonctions permettant la simplification d'équations symboliques. Pour
se faire, il suffit de déclarer les différents symboles via la commande syms et ensuite de
données à la fonction simple l'équation.

% Simplification d'équations
syms x ; % Déclaration des symboles
f = cos(x)^2 + sin(x)^2 ; % Fonction à simplifier
f = simple(f) % Simplification
f=
1
syms x ; % Déclaration des symboles
g = cos(3*acos(x)) ; % Fonction à simplifier
g = simple(g) % Simplification
g=
4*x^3 - 3*x

35
Résolution des Systèmes

IV.4 Résolution symbolique

IV.4.1Sommation symbolique
Matlab est capable de calculer les sommes symboliques.

1
% sommation symbolique de ∑∞
𝑛=1 𝑥
𝑛
et de ∑∞
ℎ=1 ℎ 4
>> syms x,h,n ; % Déclaration des symboles

>> S=symsum(x^n,n,0,inf) %Commande permet de calculer la somme

S=
piecewise([1 <= x, Inf], [abs(x) < 1, -1/(x - 1)])

>> S=symsum(1/h^4,1,inf) % Commande permet de calculer la somme

S=
pi^4/90

IV.4.2Dérivées, intégrales et limites


Matlab est capable de dériver ou d'intégrer ou calculer les limites des expressions
symboliques. Pour ce faire, il faut déclarer les symboles via la commande sym ou syms.
Il est aussi possible de forcer Matlab à dériver par rapport à une variable précise en
l'ajoutant en argument à la fonction

% Dérivée symbolique %
syms x ; % Déclaration des symboles
diff(sin(x^2)) % Dérivation symbolique
ans =
2*x*cos(x ^2)

% Dérivée symbolique six fois %


syms t ; % Déclaration des symboles
diff(t^6,6) % Dérivation symbolique
ans =
720
% Dérivée symbolique par rapport à une variable précise
syms x t ; % Déclaration des symboles
diff(sin(x*t^2), t) % Dérivation symbolique
ans =
2*t*x*cos(t^2*x))

36
Résolution des Systèmes

%Dérivée seconde symbolique par rapport à x et t


syms x t ;
f=sin(t*x)
diff(f,x,2)
ans =

-t^2*sin(t*x)
diff(f,t,2)
ans =

-x^2*sin(t*x)

% Intégrale symbolique %
syms x ; % Déclaration des symboles
int(-2*x/(1 + x^2)^2) % Intégrale symbolique
ans =
1/(x^2 + 1)

% Intégrale symbolique par rapport à z %


syms x z ; % Déclaration des symboles
int(x/(1 + z^2), z) % Intégrale symbolique
ans =
x*atan(z)

% Intégrale de 0 à 1 %
syms x ; % Déclaration des symboles
int(x*log(1 + x), 0, 1) % Intégrale symbolique
ans =
1/4
% Intégrale symbolique de sin(t) à 1 %
syms x t ; % Déclaration des symboles
int(2*x, sin(t), 1) % Intégrale symbolique
ans =
cos(t)^2

37
Résolution des Systèmes

% limites par le calcul symbolique


>> Syms x k n
>> limit ((cos(x)^n),n,1)
ans =
cos(x)
>> limit((cos(x-k)-cos(x+k))/k,k,0)
ans =
2*sin(x)
>> limit(exp(x+k)^2,k,1)
ans =
exp(2*x + 2)
>> limit((cos(x-k)-cos(x+k))/2*k,k,0)
ans =
0

IV.4.3 Equations et systèmes


Pour résoudre symboliquement une équation ou un système d'équations, il faut tout
d'abord déclarer les symboles via syms. Une fois fait, la commande solve permet de
résoudre les équations. Par défaut, Matlab définis des priorités dans les symboles pour
déterminer par rapport à quel symbole il va résoudre. Cependant, il est possible
d'imposer le symbole comme montre ci-dessous en passant un argument
supplémentaire à la fonction.

% Résolution symbolique
syms a b c x ; % Définition des symboles
solve('a*x^2 + b*x + c') % Résolution
ans =
-1/2*(b-(b^2-4*a*c)^(1/2))/a
-1/2*(b+(b^2-4*a*c)^(1/2))/a
syms t m; % Définition des symboles
solve('sin(t + m)') % Résolution
. ans =
-m
syms a b c x ; % Définition des symboles
solve('a*x^2 + b*x + c','b') % Résolution pour la variable b
ans =
-(a*x^2+c)/x

38
Résolution des Systèmes

IV.5 Résolution de systèmes linéaires


Voici comment résoudre un système linéaire. Dans ce cas-ci, l'intersection de deux
droites.

% Résolution d'un système


%Exemple1
eqs1 = 'x+2*y=1, x-1*y=5'; % Résolution
[x,y] = solve(eqs1)
S=
[ 11/3, -4/3]

%Exemple2

S=solve( 'b+2*a=1','b+a-c=2','a-c=0');

[S.a,S.b S.c]

ans=

[ -1/2, 2, -1/2]

Nous souhaitons résoudre le système d’équation suivant, en utilisant le système


matriciel :

3𝑥 + 𝑦 + 4𝑧 = −1
{ 𝑥 − 𝑦 + 2𝑧 = 1
4𝑥 − 𝑦 − 2𝑧 = 0

Ecriture sous forme matricielle AX=B:

3 1 4 𝑥 −1
[1 −1 2 ] [𝑦] = [ 1 ]
4 −1−2 𝑧 0

La manipulation dans Matlab commence donc par la définition des matrices.

39
Résolution des Systèmes

>> a=[3 1 4;1 -1 2;4 -1 -2]

a=

3 1 4

1 -1 2

4 -1 -2

>> b=[-1;1;0]

b=

-1

>> x=inv(a)*b

x=

-0.1765

-0.9412

0.1176

La solution de notre système d’équation est donc :


X=-0.1765 y=-0.9412 z=0.1176

IV.6 Résolution symbolique de systèmes linéaires


Matlab permet aussi de résoudre symboliquement des systèmes linéaires. Il faut bien
entendu commencer par préciser les symboles via la commande syms.

% Résolution symbolique de système paramétrique


syms a x ; % Définition des symboles
S = solve('x + a*y = 1','x - 1*y = 5') ; % Résolution
S = [S.x S.y] % Récupération des solutions
S=
[ (1+5*a)/(1+a), -4/(1+a)]

40
Résolution des Systèmes

IV.7 Résolution d'équations différentielles


Matlab permet la résolution d'équations différentielles que l'on dispose de conditions
initiales ou non.

% Résolution d'équations différentielles 1


dsolve('Dy = a*y', 'y(0) = b')
ans =
b*exp(a*t)
% Résolution d'équations différentielles 2
dsolve('D2y = -a^2*y', 'y(0) = 1', 'Dy(pi/a) = 0')
ans =
exp(a*i*t)/2 + 1/(2*exp(a*i*t))

% Résolution de systèmes d'équations différentielles sans condition initiale %

syms x y ; % Définition des symboles

Z = dsolve('Dx = y', 'Dy = -x') ; % Résolution différentielle

Z = [Z.x Z.y] % Récupération des solutions

z=

[ C1*sin(t)+C2*cos(t), C1*cos(t)-C2*sin(t)]

% Résolution de systèmes d'équations différentielles avec conditions initiales %


syms x y ; % Définition des symboles
Z = dsolve('Dx = y', 'Dy = -x','y(0) = 2,x(0) = 1') ; % Résolution différentielle
Z = [Z.x Z.y] % Récupération des solutions
Z=
[ (i + 1/2)/exp(i*t) - exp(i*t)*(i - 1/2), exp(i*t)*(i/2 + 1) - (i/2 - 1)/exp(i*t)]

41
Résolution des Systèmes

IV.7.1 Résolution des équations différentielles seconde ordre avec coefficients


constants et avec des conditions initiales
Pour chacune des conditions initiales suivantes :
𝑦(0) = 1 ; 𝑦̇ (0) = 0
𝑦(0) = 1 ; 𝑦̇ (0) = 2
𝑦(0) = 0 ; 𝑦̇ (0) = 1

Ecrire un programme permettant de calculer et représenter graphiquement les


solutions des équations différentielles homogènes suivantes :
1: 𝑦̈ + 3𝑦̇ + 7𝑦 = 0
2: 𝑦̈ + 8𝑦 + 2𝑦 = 0
3 ∶ 𝑦̈ + √2𝑦̇ + 0.1𝑦 = 0

%Equation1
clc
clear all
y = dsolve('D2y + 3*Dy + 7*y = 0','y(0)=1','Dy(0)=0')
ezplot(y)
y =

cos((19^(1/2)*t)/2)/exp((3*t)/2) +
(3*19^(1/2)*sin((19^(1/2)*t)/2))/(19*exp((3*t)/2))

%Equation2
clc
clear all
y = dsolve('D2y + 8*Dy + 2*y = 0','y(0)=1','Dy(0)=2')
ezplot(y)
y=

(14^(1/2)*exp(t*(14^(1/2) - 4))*(14^(1/2) + 6))/28 +


(14^(1/2)*(14^(1/2) - 6))/(28*exp(t*(14^(1/2) + 4)))

%Equation 3
clc
clear all
y = dsolve('D2y + sqrt(2)*Dy + 0.1*y = 0','y(0)=0','Dy(0)=1')
ezplot(y)
y =

10^(1/2)/(4*exp(t*(2^(1/2)/2 - 10^(1/2)/5))) -
10^(1/2)/(4*exp(t*(2^(1/2)/2 + 10^(1/2)/5)))

42
Résolution des Systèmes

IV.7.2 Résolution des équations différentielles seconde ordre avec coefficients


constants et sans conditions initiales

%Equation 1 sans conditions initiales


clc
clear all
y = dsolve('D2y + 3*Dy + 7*y = 0')
y =

(C2*cos((19^(1/2)*t)/2))/exp((3*t)/2) +
C3*sin((19^(1/2)*t)/2))/exp((3*t)/2)

%Equation 2 sans conditions initiales


clc
clear all
y = dsolve('D2y + 8*Dy + 2*y = 0')
y =

C2*exp(t*(14^(1/2) - 4)) + C3/exp(t*(14^(1/2) + 4))

%Equation 3 sans conditions initiales


clc
clear all
y = dsolve('D2y + sqrt(2)*Dy + 0.1*y = 0')
y =
C2/exp(t*(2^(1/2)/2 - 10^(1/2)/5)) + C3/exp(t*(2^(1/2)/2 + 10^(1/2)/5))

D’autres exemples

Commandes Matlab
Equations différentielles
𝑑𝑦
+ 4𝑦(𝑡) = 𝑒 −𝑡
𝑑𝑡 y = dsolve('Dy+4*y = exp(-t)', 'y(0) = 1')
avec y(0)=1

2𝑥 2 𝑦 ′′ + 3𝑥𝑦 ′ − 𝑦 = 0
y = dsolve('2*x^2*D2y + 3*x*Dy - y = 0','x')
avec ‘=d/dx

𝑑2𝑦
= 𝑥𝑦(𝑥) avec y(0)=0,
𝑑𝑥 2 y = dsolve('D2y = x*y','y(0) = 0',
1 'y(3) = besselk(1/3, 2*sqrt(3))/pi', 'x')
𝐾1 (2√3)
𝜋 3

43
Programmation

PROGRAMMATION

44
Programmation

V. Programmation

V.1 Les m-files


Un m-file est un fichier contenant une suite d'instructions que Matlab peut exécuter.
Un m-file peut aussi être utilisé comme fichier de librairie contenant des fonctions
définies par l'utilisateur. Pour créer un m-file, utilisez le menu File --- new--- M-file.
Une fois le M-file crée, tapez ceci :

% Bonjour Monsieur
>> disp('Bonjour Monsieur')

Bonjour Monsieur

V.2 Les opérateurs logiques


Nous présentons quelques exemples des opérateurs logiques utilisés dans Matlab.

Opérateurs Définitions
< ………….est plus petit que………..
> ………….est plus grand que………
<= ………….est plus petit ou égal à….
>= ………….est plus grand ou égal à…
== ………….est égal à………………..
~= ………….n'est pas égal à………….
& ………….est vrai et ... aussi (pour tableaux)
| ………….est vrai ou ... est vrai, ou les deux (pour tableaux)
&& ………….est vrai et ... aussi…………..
|| ………….est vrai ou ... est vrai, ou les deux
~ …………..n'est pas vrai……………….
xor(x,y) …………..est vrai ou ... est vrai……….
Any(x) ................. vrai si un des éléments de x est non nul
All(x) ................. vrai si tous les éléments de x sont nuls

45
Programmation

V.3 Les mots gardés


Les mots ou caractères suivant ont une signification particulière dans le langage de
Matlab.

Mots Signification
: Créer des vecteurs, des tableaux en indice, spécifiez pour boucle itérations
() Passer des arguments de fonction, la priorité des opérateurs
[] Construire ensemble, concaténer éléments, spécifier plusieurs sorties
de fonction
{} Construire matrice de cellules, index dans matrice de cellules
. Insérez point décimal, de définir le champ de structure, les méthodes
de l'objet de référence
.() Référence domaine dynamique de la structure
.. Référence répertoire parent
… Continuer la déclaration à la ligne suivante
, Rangées séparées, des arguments d'entrée / de sortie fonction distincte,
commandes distinctes
; Des colonnes distinctes de tableau, supprimer la sortie de la commande de
courant
% Insérez la ligne de commentaire dans le code
%% Insérez bloc de commentaires dans le code
! Commande d'émission de système d'exploitation
'' Construire tableau de caractères
@ Répertoire de classe de référence

V.4 Entrées / sorties

V.4.1 Utilisateurs
Les commandes suivantes permettent l'interaction avec l'utilisateur lors de l'exécution
d'un script. L'utilisateur peut dans l'exemple ci-dessous saisir un nombre que le script
pourra alors utiliser. Dans le sens inverse la commande disp permet d'afficher des
variables à l'utilisateur.

% Exemple 1
n = input('Saisissez un nombre :') ; %Saisie de l'utilisateur
disp(n) ; %Sortie vers l'affichage Matlab

46
Programmation

V.4.2 Disques
Il est aussi possible d'exporter ou d'importer des données sur le disque dur via les deux
commandes suivantes.

% Exemple2
save 'D : ...save.txt' Sauvegarde le workspace
load 'D : ... save.txt' Charge le workspace

V.5 Le contrôle de l'exécution

V.5.1 la boucle FOR


La boucle FOR permet d'exécuter des opérations pour un nombre d'itérations définis.
(Par exemple : pour n = 0 jusqu'à 20 par pas de deux, exécuter les opérations suivantes).
L'avantage de la boucle FOR sur la boucle WHILE est sa simplicité d’écriture dans le cas
d'un nombre d'itérations définis et bien connu à l'avance (par exemple, le parcours d'un
tableau).
Autre remarque, lors de l'exécution de la boucle FOR, la variable qui sert à boucler est
accessible en lecture et en écriture. Il est donc possible de réduire ou d'augmenter le
nombre d'itérations au cours de l'exécution de la boucle.

%Exemple 1
for n = 1 :5 % Boucle pour n allant de 1à 5 inclus par pas de 1
disp(n) % Affichage
end % Fin de boucle

%Exemple 2
for n = 8 :-2 :0 % Boucle pour n allant de 8 à 0 par pas de -2
disp(n) % Affichage
end % Fin de boucle

% | Exemple 3
for n = [ 1 9 3 5 6 7 ] % Boucle pour n égal chaque valeur du vecteur
disp(n) % Affichage
end % Fin de boucle

47
Programmation

V.5.2 la boucle WHILE


La boucle Permet d'exécuter des opérations de manière répétée jusqu'à ce qu'une
condition soit falsifiée. (Par exemple : tant que la solution n'est pas précise à 4
décimales, continuer à chercher une solution plus précise.)

% Exemple 1
n=5;
m=8;
while (n < 10 && m > 0) % Boucle tant que n est inférieur à 10 et m est supérieur
à0
n=n+1; % Incrémente n
m=m-1; % Décrémente m
disp(n) ; % Affichage
disp(m) ; % Affichage
end % Fin de boucle

V.5.3 Instruction de choix IF

L'instruction IF est une instruction de choix. Autrement dit, en fonction que son gardien
sera évalué vrai ou faux, la commande exécutera un groupe d'instructions ou l'autre.

%Exemple
n=5;
m=8;
if (n > 0) % Gardien 1
if ( n > 5 && m < 0) % Gardien 1 et gardien 2
disp ('ici 1') % Affichage
elseif (n == 5) % Si gardien1 et non gardien2 et gardien 3
disp ('ici 2') % Affichage
else % Si gardien1 et non gardien2 et non gardien 3
disp('ici 3') % Affichage
end
else % Si gardien 1 est faux
disp('ici 4') % Affichage
end

48
Programmation

V.5.4 Instruction de choix SWITCH


L'instruction SWITCH est une instruction de choix comme le IF mais avec la particularité
de pouvoir exécuter plus de branchements que le IF.
La commande SWITCH doit être utilisée dans le cas ou, par exemple, en fonction de la
valeur d'une variable, on exécute différentes opérations. Attention toute fois, que le
nombre de valeurs possibles de cette variable doit être restreint pour conserver une
certaine lisibilité du code.
Le mot clé break signifie que l'on arrête la commande SWITCH et que l'on transfert
l'exécution au mot clé end.

%Exemple
n = input('Pour signaler l’arrivée de Ahmed tapez 1, Amine tapez 2, Salim tapez 3 :') ; %
Demande de saisie de l'utilisateur
switch n
case 1 % Si n vaut 1
disp('Ahmed est arrivé')
break
case 2
disp('Amine est arrivé') % Si n vaut 2
break
case 3
disp('Salim est arrivé') % Si n vaut 3
break
otherwise
disp('Autres personnes') % Si n est différent de 1,2,3
end

V.6 Les fonctions

V.6.1 Les fonctions simples


Matlab permet de définir des fonctions. Une fonction est un ensemble d'instructions
regroupées de manière à ne pas devoir les répéter régulièrement.
Une fonction peut prendre des arguments et renvoyer des valeurs. (Par exemple, si l'on
fourni à une fonction une date de naissance, cette fonction peut renvoyer l'âge de la
personne) La définition d'une fonction se fait de la manière suivante :
Function arguments de sortie = nomDeMaFonction (arguments d'entrée).
Attention, pour que Matlab reconnaisse une fonction et sache l'utiliser à partir de
l'espace de travail, il est obligatoire que le nom du M-file soit identique au nom donné à
la fonction.

49
Programmation

. %Fonction simple
% Fonction isOdd
% Cette fonction prend en argument un nombre et renvoie
% true si ce nombre est impair, false si non.
% Argument : un nombre
% Valeur de retour : un boolean
% Code placé dans isOdd.m

function p = isOdd(n)
if (mod(n,2) == 1) % Si la division modulaire laisse un reste
p = true ; % Renvoie vrai
else
p = false ; % renvoie faux
end

V.6.2 Les fonctions récursives


Une fonction est dite récursive si elle s'appelle elle-même. La fonction suivante est
récursive et permet de calculer la factoriel d'un nombre.

% Fonction récursive
% Fonction factorial
% Cette fonction prend en argument un entier positif et renvoie la factorielle correspondante.
% Argument : un entier positif
% Valeur de retour : un entier positif
clc
clear all
n=input('donner la valeur de n=');
y=factorial(n);
disp(y)

50
Problèmes avec Solutions

PROBLEMES AVEC SOLUTIONS

51
Problèmes avec Solutions

VI. Problèmes avec solutions

VI.1 Résolution d’une équation de second degré


𝑎𝑥 2 + 𝑏𝑥 + 𝑐 = 0

clc
clear all
a=input('introduire a=');
b=input('introduire b=');
c=input('introduire c=');
if a==0
x1=-c/b;
disp('solution x1')
disp([x1])
end
delta=b^2-4*a*c;
if a~=0
if delta >0
disp('2 racines réelles')
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
disp([x1 x2])
elseif delta==0
disp('racine double')
x=-b/(2*a);
disp(x)
else
disp('2 racines complexes')
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
disp([x1 x2])
end
end

VI.2 Méthode de la dichotomie


Cette méthode consiste en une succession de divisions par deux de l’intervalle pour
approcher de plus en plus à la racine de l’équation f(x) jusqu’à une précision soit
atteinte.

VI.2.1 Hypothèses sur la fonction

On se place dans le cas où la fonction f: [a, b] → ℝ


f vérifie les hypothèses :
(D1) f est continue sur [a, b]
(D2) f est strictement monotone sur [a, b]
(D3) f(a).f(b) < 0
Ce qui assure l’inexistence et l’iniquité de la racine c ∈ [a, b]

52
Problèmes avec Solutions

VI.2.2 Algorithme de la méthode


a+b a+b
On partage [a, b]en deux intervalles égaux [a, ] et [ , b]
2 2
a+b
Si le signe de f ( ) est le même que celui de f(a), la racine c appartient à l’intervalle
2
a+b a+b
[ , b]Sinon, elle appartient à l ‘intervalle [a, ]
2 2

On réitère le procédé avec l’intervalle obtenu contenant c.


On arrête l’itération lorsque la longueur de l’intervalle devient inférieure à un nombre ε
fixé au départ.

Remarque
b−a
A l’étape n, c appartient à l’intervalle de travail, qui a pour longueur
2n
D’une itération à la suivante, l’erreur est donc multipliée par 1/2

Exemple
On considère l’équation 10x − 9e−x = 0 La fonction f définie sur [0, 1] par f(x) =
10x − 9e−x est continue, dérivable, et sa dérivée f ‘ vérifie f ′ (x) = 10 + 9e−x > 0 donc f
est strictement croissante sur [0, 1]
De plus f(0) = −9 et f(1) = 10 − 9 /e ⋍ 6,69 sont de signes contraires.
On peut donc utiliser la méthode de dichotomie pour calculer à 10−6 prés la solution
de l’équation proposée.
Le nombre n de termes à calculer doit vérifier :
1−0
≤ 10−6
2n

Soit
ln(10−6 )
n≥
ln(2)

On crée le fichier dichotomie.m


On évalue le nombre de termes à calculer (sous Matlab, ceil(x) donne le plus petit
entier supérieur ou égal à x).

53
Problèmes avec Solutions

% Exemple dichotomie (création fichier f1.m)


function y=f1(x)
y=10*x-9*exp(-x) ;

% Exemple dichotomie (ce fichier dichotomie.m appelle pour exécution le


fichier f1.m)
n0=ceil(log(1e6)/log(2))
a=0 ;b=1 ;
for i=1 :20
m=(a+b)/2 ;
f1DeM=f1(m) ;
if (f1DeM>0)
b=m;
else a=m; end
end
format long
[a b] % On affiche l’intervalle obtenu
n0 =
20
ans =

0.529832839965820 0.529833793640137

Conclusion
La méthode de dichotomie sert parfois de moyen de calcul d’une initialisation pour les
algorithmes des autres méthodes. L’inconvénient majeur de cette méthode est la lenteur
de convergence de son algorithme.

VI.3 Méthode des approximations successives (ou du point fixe)


Parmi les méthodes de résolution de l’équation : 𝑓(𝑥) = 0
La méthode dite des approximations successives (ou du point fixe) est la plus
importante. Son principe est basé sur la construction d’une suite itérative approchant de
plus en plus la racine exacte, son premier élément (appelé initialisation) pouvant être
n’importe quel point de l’intervalle de travail [a, b].
La méthode du point fixe s’applique à des équations de la forme : 𝛗 = x
On peut toujours écrire l’équation sous une forme équivalente de ce type.
Par exemple, l’équation :

f(x) = 10x − 9e−x est équivalente à :


9
x = 10 e−x.

54
Problèmes avec Solutions

NB : On prendra garde de ne pas confondre la fonction f et la fonction φ.


VI.3.1 Hypothèses sur la fonction
On se place dans le cas où la fonction φ: [a, b] → ℝ vérifie les hypothèses :
1- : φ est continue et dérivable sur [a, b];
2- : φ prend ses valeurs dans [a, b] ;
3- : ∋ 𝑀 ∈ ]𝑎, 𝑏[ ∶ ∀ 𝑥 ∈ [𝑎, 𝑏] |𝜑̀ (𝑥)| ≤ 𝑀

VI.3.2. Théorème du point fixe


Lorsque φ vérifie les trois hypothèses, il existe une unique racine c de l’équation
(𝑥) = 𝑥 , appelé point fixe de 𝜑 .
Considérons en effet la fonction définie par : 𝑔(𝑥) = 𝜑(𝑥) − 𝑥 qui est strictement
décroissante puisque :𝑔′ (𝑥) = 𝜑 ′ (𝑥) − 1 < 0 (𝑔𝑟â𝑐𝑒 à 𝑙 ′ ℎ𝑦𝑝𝑜𝑡ℎè𝑠𝑒3)
Alors d’après hypothèse 2 on a :
𝑔(𝑎) = 𝜑(𝑎) − 𝑎 ≥ 0
{
𝑔(𝑏) = 𝜑(𝑏) − 𝑏 ≤ 0
Le théorème des valeurs intermédiaire donne alors l’existence d’un unique point c
appartenant à [a, b] tel que : 𝑔(𝑐) = 0

VI.3.3. Algorithme et estimation d’erreur


On construit la suite des itérés de la manière suivante :
- On fixe le point 𝑥0 quelconque de [a, b]
𝑥1 = 𝜑(𝑥0 )
𝑥2 = 𝜑(𝑥1 )
.
- Puis on définit
.
.
{𝑥𝑛+1 = 𝜑(𝑥𝑛 )

Majoration d’erreur
Si c est le point fixe de 𝜑 on a :
|𝑥1 − 𝑐| = |𝜑(𝑥0 ) − 𝜑(𝑐)| ≤ 𝑀|𝑥0 − 𝑐| < |𝑥0 − 𝑐|
|𝑥2 − 𝑐| = |𝜑(𝑥1 ) − 𝜑(𝑐)| ≤ 𝑀|𝑥1 − 𝑐| < |𝑥1 − 𝑐|

En réitérant, on voit bien qu’on s’approche de plus en plus de la racine : c’est le principe
des approximations successives. Plus précisément, on démontre par récurrence la
majoration d’erreur.

‖∀ 𝑛 ≥ 0 |𝑥𝑛 − 𝑐| ≤ 𝑀𝑛 |𝑥0 − 𝑐| ≤ 𝑀𝑛 |𝑏 − 𝑎|

55
Problèmes avec Solutions

En effet, la propriété est évidemment vérifiée pour n=0 et si on la suppose vérifiée à


un rang (n-1) donné, le théorème des accroissements finis implique l’existence d’un 𝜀 ∈
]𝑎, 𝑏[ tel que :
|𝑥𝑛 − 𝑐| = |𝜑(𝑥𝑛−1 ) − 𝜑(𝑐))|
|𝑥𝑛 − 𝑐| = |𝜑 ′ (𝜀)(𝑥𝑛−1 − 𝑐)|
≤ 𝑀|𝑥𝑛−1 − 𝑐|
≤ 𝑀𝑀𝑛−1 |𝑥0 − 𝑐|
≤ 𝑀𝑛 |𝑥0 − 𝑐|
≤ 𝑀𝑛 |𝑏 − 𝑎|

Ainsi, la suite (𝑥𝑛 ) converge vers c puisque, M appartenant à ]1, 2[, on a: lim 𝑀𝑛 = 0
𝑛→∞

Test d’arrêt : fixons 𝜀 > 0. Pour que 𝑥𝑛 soit une valeur approchée de c à 𝜀 près, il suffit
que :
𝑀𝑛 |𝑏 − 𝑎| ≤ 𝜀

ln 𝜀 − ln|𝑏 − 𝑎|
𝑛>
ln 𝑀

D’où l’algorithme de la méthode du point fixe :


Etant donné une fonction φ vérifiant les hypothèses 1, 2 et sur un intervalle [a, b], et
un nombre positif є :
ln 𝜀−ln|𝑏−𝑎|
• On calcule 𝑛0 = 𝐸 ( )+1
ln 𝑀
• On choisit 𝑥0 ∈ [𝑎, 𝑏]
• Pour 𝑛 de 1 à 𝑛0 on calcule 𝑥𝑛 = 𝜑(𝑥𝑛−1 )

Une valeur approchée à є près de la racine c est 𝑥𝑛0

Remarque
On peut construire graphiquement la suite des itérés (𝑥𝑖 ), à l’aide de la ligne polygonale
𝑥
[𝑀0 𝑁0 𝑀1 𝑁1 𝑀2 𝑁2 … ], où 𝑀𝑖 à pour coordonnées (𝑥𝑖 ) et 𝑁𝑖 à pour coordonnées
𝑖
𝑥𝑖
(𝜑(𝑥 )) = ( 𝑥𝑖 )
𝑖 𝑥𝑖+1

56
Problèmes avec Solutions

Exemple d’application
Pour calculer à 10−6 près la solution, dans l’intervalle [0,1] de l’équation :
9 −𝑥
𝑥= 𝑒
10
Par la méthode du point fixe, on procède comme suit :
Cette fonction est continue et dérivable sur [0,1] ;
Pour vérifier l’hypothèse 2, on étudie les variations de 𝜑 , en calculant 𝜑 ′

% vérification hypothèse 2
>> syms x ;
>> phiDeX = 9/10*exp(-x) ;
>> phiPrimeDeX = diff( phiDeX );
>> phiPrimeDeX = -9/10*exp(-x);
>> phiPrimeDeX = -9/10*exp(-x)

phiPrimeDeX =

-9/(10*exp(-x))

>> phiDe1= subs( phiDeX ,1)

phiDe1 =

0.3311

>> phiDe1= subs( phiDeX ,0)

phiDe1 =

0.9000

Donc, 𝜑(𝑥) prend ses valeurs dans l’intervalle [0.3311..., 0.9000...]⊂ [0,1], et
hypothèse 2 vérifiée.
Pour vérifier hypothèse 3, il faut en général étudier les variations de 𝜑 ′ , donc calculer
les 𝜑 ′′ , mais ici : |𝜑 ′ (𝑥)| = 𝜑(𝑥). Donc |𝜑 ′ (𝑥)| à pour maximum M=0.9.
Le nombre 𝑛0 de termes à calculer pour obtenir une valeur approchée de la solution
10 près est donné par :
−6

% vérification hypothèse 3

>> n0=ceil ((log(10^(-6))-log(1-0))/log(9/10))

n0 =
D’où 𝑛0 = 132 ; on calcule les itérés successifs :
132

57
Problèmes avec Solutions

% vérification hypothèse 3

>> X(1) = 0 ;
>> for i = 1 :132 X(i+1) = 9/10*exp(-X(i)) ; end
>> format short
>> X(1 :6)

ans =

0 0.9000 0.3659 0.6242 0.4821 0.5557

>> format long


>> X(133)

ans =

0.529832965633434

On retrouve la valeur approchée 0.529833 à 10−6 près.

Vitesse de convergence
Elle dépend de la valeur de M (voir hypothèse 3) :
– Si M est proche de 1, la convergence est lente. On a vu dans l’exemple précédent, où
M=0.9 qu’il fallait 132 termes pour obtenir une précision de є=10−6
– Si M=0.5, on retrouve la vitesse de convergence de la méthode de dichotomie.
– Si est proche de 0, on a une convergence rapide.

VI.4 Méthode de Newton (ou de la tangente)


On revient à la résolution de l’équation 𝑓(𝑥) = 0, et on suppose que la fonction vérifie
les hypothèses suivantes :
1- f est continue sur [a,b] ;
2- f est strictement monotone sur [a,b] ;
3- f(a).f(b)<0 ;
4- f est dérivable sur [a,b] et 𝑓 ′ (𝑥) ≠ 0 sur [a,b]
les trois premières hypothèses garantissent l’existence et l’unicité d’une racine c de
l’équation 𝑓(𝑥) = 0.

VI.4.1 Construction de l’algorithme


L’idée principale de la méthode de Newton est de dire qu’au voisinage de la racine c la
courbe représentative de la fonction peut être confondue avec la tangente en un point 𝑥0
proche de c. Cela revient à confondre f avec son développement limité à l’ordre 1 en 𝑥0 .

58
Problèmes avec Solutions

𝑓(𝑥) = 𝑓(𝑥0 ) + 𝑓 ′ (𝑥0 )(𝑥 − 𝑥0 )


La solution de l’équation f(x) = 0 peut donc être approchée par la résolution de
𝑓(𝑥0 ) + 𝑓 ′ (𝑥0 )(𝑥 − 𝑥0 ) = 0
Dont la solution est :
𝑓(𝑥0 )
𝑥1 = 𝑥0 −
𝑓 ′ (𝑥0 )
𝑥1 est une première approximation de c. En réitérant le procédé ci-dessus, on
construit la suite définie par :
𝑥0 𝑓𝑖𝑥é 𝑝𝑟𝑜𝑐ℎ𝑒 𝑑𝑒 𝑐
{ 𝑓(𝑥𝑛 )
𝑥𝑛+1 = 𝑥𝑛 − ′ , 𝑛≥0
𝑓 (𝑥𝑛 )

Appelée suite des itérés de l’algorithme de Newton.

Remarque
Cette suite est celle permettant de chercher le point fixe de la fonction
𝑓(𝑥)
𝜑: 𝑥 ⟼ 𝜑(𝑥) = 𝑥 −
𝑓 ′ (𝑥)
φ est dérivable si, et seulement si, f l’est. Cela conduit à ajouter l’hypothèse suivante
sur f :
f est deux fois dérivable sur [a, b] (Hypothèse 5.)

VI.4.2 Théorème
Sous les hypothèses 1, 2, 3, 4 et 5 et pour x0 choisi suffisamment proche de l’unique
racine c la suite des itérés de Newton converge vers c.
On admettra ce théorème dont l’idée de démonstration repose sur le fait que la
fonction φ vérifie toutes les hypothèses du point fixe dans un voisinage de c.

VI.4.3 Vitesse de convergence


Notons toujours
𝑓(𝑥)
𝜑(𝑥) = 𝑥 −
𝑓 ′ (𝑥)
On a :

59
Problèmes avec Solutions

𝑓(𝑥)𝑓 ′′ (𝑥)
𝜑 ′ (𝑥) =
(𝑓 ′ (𝑥))2
Et donc au point c 𝜑 ′ (𝑐) = 0

La formule de Taylor-Lagrange à l’ordre deux donne l’existence d’un 𝜂 Δ ∈ ]𝑎, 𝑏[ tel que :
1
𝜑(𝑥)= 𝜑(𝑐) + (𝑥 − 𝑐)𝜑 ′ (𝑐) + 2 (𝑥 − 𝑐)2 𝜑 ′′ (𝜂)
1
𝜑(𝑥) = 𝑐 + (𝑥 − 𝑐)2 𝜑 ′′ (𝜂)
2
1
D’où |𝜑(𝑥) − 𝑐| = 2 (𝑥 − 𝑐)2 |𝜑 ′′ (𝜂)|
1
≤ 𝑀 |𝑥 − 𝑐| 2
2 2
Où 𝑀2 = max |𝜑 ′′ (𝑥)|
𝑥∈[𝑎,𝑏]

En appliquant cette majoration aux itérés 𝑥𝑛 = 𝜑(𝑥𝑛−1 ) et en supposant que pour tout n,
𝑥𝑛 ∈ [𝑎, 𝑏], il vient :
1 1
𝑀2 |𝑥𝑛 − 𝑐| ≤ 𝑀2 |𝑥𝑛−1 − 𝑐| 2
2 2
On montre par récurrence sur n :
1 1 𝑛
𝑀2 |𝑥𝑛 − 𝑐| ≤ 𝑀2 |𝑥0 − 𝑐| 2
2 2
Par exemple, si on choisit l’initialisation 𝑥0 telle que :
1
|𝑥0 − 𝑐| ≤
5𝑀2

2 𝑛
|𝑥𝑛 − 𝑐| ≤ 10−2
𝑀2

Cette estimation traduit bien la vitesse de convergence de la méthode de Newton. Elle


signifie que le nombre de décimales exactes double d’une itération à la suivante.
Concrètement si on veut la racine c avec 1000 décimales exactes, 𝑥10 contiendrait ces
décimales.
La convergence de l’algorithme de Newton est donc très rapide.

60
Problèmes avec Solutions

Exemple d’application
L’étude de la fonction f définie sur [0,1] par : f(x) = 10x − 9e−x
Les hypothèses de 1 à 4 sont vérifiées : f ′ : x ↦ 10 + 9e−x
Est elle même dérivable, donc l’hypothèse 5 est vérifiée.
𝑥0 =0; on calcule les huit premiers itérés de la méthode de Newton :

>> syms x real

>> fDeX=10*x-9*exp(-x);

>> fPrimeDeX=diff(fDeX) ;

>> X(1)=1 ;

for i=1 :7

X(i+1)=X(i)-double(subs(fDeX,x,X(i))/subs(fPrimeDeX,x,X(i))) ;

end

>> format long

>> X

X =

Columns 1 through 4

1.000000000000000 0.497473686500143 0.529649765665131


0.529832959821225

Columns 5 through 8

0.529832965633434 0.529832965633435 0.529832965633434


0.529832965633435

61
Problèmes avec Solutions

VI.5 Introduction

Dans le domaine des sciences de l'ingénieur et parfois même dans le domaine des
sciences humaines, on a souvent besoin d’établir un modèle mathématique liant
plusieurs séries de données expérimentales. Dans le logiciel Matlab, diverses fonctions
(polyfit, interp1,..) ainsi que la commande cftool sont utilisées pour ajuster ces
données.

VI.5.1 Interpolation de Lagrange

On se donne une fonction f définie sur un intervalle fermé borné [ a, b ] ainsi qu’un
vecteur x=(x1, x2, …xn ) d’abscisses tel que x1=a, xn=b et xk<xk+1 avec k=1,…n-1. On
définit le vecteur y=(y1, y2,…yn) par yk=f(xk) pour k=1,…n. On se propose de chercher
l’unique polynôme P de degré inférieur ou égal à n-1tel que P(xk)=yk pour k=1,…n. Une
manière de le faire consiste à exprimer ce polynôme à l’aide des polynômes de Lagrange
basés sur les abscisses d’interpolation xi, i=1,…,n. Le ième polynôme de Lagrange s’écrit:
n x − xj
Li ( x) =  ; On remarque que Li (xi)=1 si i=1,…,n et que Li (xj)=0 si i  j .
j =1, j i xi − x j

n
Notre solution s’écrit alors:  y L ( x) .
i =1
i i

-Interpolation polynomiale de degrés 1, 2 et 3.


En observant le graphe, nous pouvons déduire que la courbe pourrait être estimée
comme une courbe de degré 1, 2 ou 3. Supposant du second degré, il nous faut donc
déterminer les trois coefficients c1, c2 et c3 de l’équation suivante: y = c1 x 2 + c2 x + c3 . Cela
peut être résolu en posant le problème comme un système d’équations où les inconnues
sont c1, c2 et c3. Sous forme matricielle, le système s’écrit:
 x12 x1 1   y1 
 2  y  c1 
 x2 x 2 1   2  
A= , Y=   , C= c2 
... ... ... ...  c 
   3
 xn n 
2 x 1  
 yn 
Où [x1,…xn] sont la variable indépendante (ex: température) et [y1,…,yn] sont la variable
dépendante. (ex: masse volumique). Ce système peut être résolu par une estimation aux
moindres carrées. Sous MATLAB, il existe une fonction qui génère la matrice A et les
vecteurs puis la résout pour Y. Les arguments de polyfit sont:
1-La variable indépendante ;
2-La variable dépendante ;
3-Le degré de la courbe à ajuster.

62
Problèmes avec Solutions

-Interpolation par splines


Les splines consistent à approximer localement les données par des courbes locales. Il
s’agit d’une interpolation qui passe par les données fournies.
-Régression de puissance
-Les courbes polynomiales ne sont les seules courbes utilisées pour ajuster des données.
Par exemple, certains phénomènes peuvent être modélisés par une fonction puissance:
y = ax b où a et b sont des constantes.
Cette équation caractérise généralement des processus croissant rapidement. De tels cas
peuvent se réduire à des régressions linéaires. Ils peuvent être résolus en considérant la
propriété des logarithmes naturels: ln y = ln a + b ln x
En posant u=lnx et v=lny, on se ramène à une régression d’ordre 1: v=lna+bu.

-Régression exponentielle
Nous voulons approximer des données par une loi exponentielle: y = aebx .
Elle peut être aussi réduite à une régression linéaire, en prenant le logarithme:
lny=lna+bx

Exemple d'application de l'interpolation

Les masses volumiques du matériau pour différentes températures sont données par le tableau
ci-dessous :

I 1 2 3
Température T(en°C) 94 205 371
Masse volumique R(T) (en kg/m3) 929 902 860

a) Écrire la formule d’interpolation de Lagrange qui permet d’interpoler les différents


points de données précédentes.

b) Trouver les masses volumiques du sodium pour T=251°C, T=305°C et T=800°C en


utilisant l'interpolation de Lagrange.

VI.5.2 Approximation

Exemple1

T [°C] 0 2 4 6 8 10 12 14 16 18
R 0.99987 0.99997 1.0000 0.99997 0.99988 0.99973 0.99953 0.99927 0.99897 0.99846
[kg/m3]
T [°C] 20 22 24 26 28 30 32 34 36 38
R 0.99805 0.99751 0.99705 0.99650 0.99664 0.99533 0.99472 0.99409 0.99333 0.99326
[kg/m3]

63
Problèmes avec Solutions

1°) Tracer le graphe R en fonction de T. Utiliser la fonction polyfit pour ajuster ces
données. Comparer les coefficients de ces polynômes du second et du troisième
degré avec ceux déterminés par cftool.

Exemple 2

Année 1961 1964 1967 1970 1973 1976 1979 1982 1984
Tonnes 1900 9500 21200 43300 80300 101600 154900 146300 154500

Solution de l'interpolation de Lagrange

%****************************************
% Interpolation polynomiale de Lagrange *
%****************************************
clc;
clear;
T=[94 205 371];
R=[929 902 860];
Ti=[251 305 800];
Ri=lag(T,R,Ti)

%Sous-programme lag.m
function Ri=lag(T,R,Ti)
Ri=zeros(size(Ti)); % Initialisation des Ti
n=length(R); % Nombre de points
for i=1:n
y=ones(size(Ti));
for j=1:n
if i~=j
y=y.*(Ti-T(j))/(T(i)-T(j));
end
end
Ri=Ri+y*R(i);
end

%Compilation de interpol.m

Ri = 890.5561 876.9316 742.4559

64
Problèmes avec Solutions

Solutions de l'approximation
Exemple1

>> T=[0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38];

>> rho=[0.99987 0.99997 1.00000 0.99997 0.99988 0.99973 0.99953 0.99927 0.99897
0.99846... 0.99805 0.99751 0.99705 0.99650 0.99664 0.99533 0.99472 0.99409
0.99333 0.99326];

>> C2=polyfit(T,rho,2)

C2 = -0.000005240800866 0.000007297049442 1.000056811688312

>> cftool(T,rho)

f(x) = p1*x^2 + p2*x + p3

p1 = -5.241e-006 (-6.141e-006, -4.341e-006)

p2 = 7.297e-006 (-2.812e-005, 4.272e-005)

p3 = 1 (0.9998, 1)

>> C3=polyfit(T,rho,3)

C3 = 0.000000094137804 -0.000010606655706 0.000086787011317 0.999837884810841

>> cftool(T,rho)

f(x) = p1*x^3 + p2*x^2 + p3*x + p4

p1 = 9.414e-008 (1.573e-008, 1.725e-007)

p2 = -1.061e-005 (-1.514e-005, -6.069e-006)

p3 = 8.679e-005 (1.37e-005, 0.0001599)

p4 = 0.9998 (0.9995, 1)

1
1 rho vs. T
rho vs. T
fit 1
fit 1 0.999
0.999

0.998 0.998

0.997 0.997

0.996 0.996

0.995 0.995

0.994 0.994

0.993
0.993
0 5 10 15 20 25 30 35 0 5 10 15 20 25 30 35

65
Problèmes avec Solutions

Exemple2

4
x 10

masse vs. x
16
fit 1

14

12

10

5 10 15 20

66
Problèmes avec Solutions

VI.6 Introduction

Dans cette partie, nous allons programmer quelques méthodes d’intégration numérique
élémentaires et plus élaborées d’une fonction entre deux bornes. On souhaite écrire un
algorithme permettant de résoudre numériquement les intégrales.

VI.6.1 Intégration en formule de trapèzes


b N −1

 f ( x)dx  I TN =
h
 f (a) + f (b) + h f ( xi )
a
2 i =1

VI.6.2 Intégration en formule des paraboles (Simpson)

2h M −1
b
h 4h M
a f ( x)dx  I SN =
3
( f ( a ) + f (b )) + 
3 i=1
f ( x2 i ) +  f ( x2i−1 )
3 i=1
VI.6.3 Intégration en formule de quadrature de Tchébychev:

(b − a ) n
b

 f ( x)dx  I TcN =
n i=1
 f ( xi )
a

b+a b−a
xi = + ti
2 2

VI.6.4 Intégration en formule de quadrature de Gauss-Legendre

(b − a ) n
b

 f ( x)dx  I TcN =
n
i =1
Ai f ( xi )
a

b+a b−a
xi = + ti
2 2

Exemple d'application
1

Calculer I = 
−1
2 + x dx par ces 4 méthodes.

Utiliser les fonctions quad, int de Matlab et comparer les résultats

67
Problèmes avec Solutions

%La fonction élémentaire


function I=integ_ELEM(type,a,b,N,f)
switch type
case 'trapeze'
I=integ_tra(a,b,N,f)
case 'simpson'
I=integ_simp(a,b,N,f)
end

function I=integ_tra(a,b,N,f)
%Détermination du pas
h=(b-a)/N;
NM1=N-1;
I=0;
for i=1:NM1
x=a+i*h;
I=I+feval(f,x);
end
I=h*(feval(f,a)+feval(f,b))/2+h*I;

function I=integ_simp(a,b,N,f)
%Détermination du pas
h=(b-a)/N;
M=N/2;
I1=0;
I2=0;
for i=1:M
x=a+h*(2*i-1);
I1=I1+feval(f,x);
end
MM1=M-1;
for i=1:MM1
x=a+h*2*i;
I2=I2+feval(f,x);
end
I=h*(feval(f,a)+feval(f,b)+4*I1+2*I2)/3;

function I=integ_Tche(f,a,b,T)
N=length(T);
x=zeros (1,N);
x=(a+b)/2+(b-a)/2*T;
s=0;
for i=1:N
s=s+feval(f,x(i));
end
I=(b-a)/N*s;

function I=integ_GaussLegendre(a,b,T,A,f)
N=length(T);
x=zeros(1,N);
x=((a+b)/2)+((b-a)/2)*T;
I=((b-a)/2)*sum(A.*feval(f,x));

68
Problèmes avec Solutions

%Calculs symboliques

%Calcul symbolique: trapèze

>> f=inline('sqrt(2+x)');
>> I=integ_ELEM('trapeze',-1,1,10,f)

I = 2.7967

%Calculs symbolique: simpson

>> f=inline('sqrt(2+x)');
>> I=integ_ELEM('simpson',-1,1,10,f)

I = 2.7974

%Calcul symbolique: Tchebechev

>> f=inline('sqrt(2+x)');
>> T=[-0.832498 -0.374541 0 0.374541 0.832498];
>> I=integ_Tche(f,-1,1,T)

I =2.7974

>> f=inline('sqrt(2+x)');quad(f,-1,1)

ans = 2.7974

%Calcul symbolique: GaussLegendre

>> f=inline('sqrt(2+x)');
>> T=[-0.90617985 -0.53846931 0 0.53846931 0.90617985];
>> A=[0.23692688 0.47862868 0.56888889 0.47862868 0.23692688];
>> I=integ_GaussLegendre(-1,1,T,A,f)

I = 2.7974

>> syms x f
>> f=sqrt(2+x);I=int(f,-1,1)
I = -2/3+2*3^(1/2)= 2.7974

69
Problèmes avec Solutions

VI.7 Introduction

On s’intéresse à un problème de Cauchy (Problème aux Conditions initiales). De très


nombreuses méthodes par pas peuvent être utilisées pour résoudre une éuqtion
différentielle ordinaire. On distingue les méthodes à pas séparés (un seul pas) qui
permettent de calculer yi+1 à partir de la seule connaissance de yi et les méthodes à pas
liés (plusieurs pas) qui nécessitent la connaissance de yi, yi-1, yi-2,…pour calculer yi+1.

Méthode à pas séparés

VI.7.1 Algorithme de Runge-Kutta

h
yi +1 = yi + (k1 + 2k 2 + 2k 2 + k 4 ) avec
6

k1 = f ( yi , ti )
k1
k 2 = f ( yi + , ti +1/ 2 ) ,
2
k
k3 = f ( yi + 2 , ti +1/ 2 ) et
2
k4 = f ( yi + k3 , ti+1 )

Méthode à pas liés

VI.7.2 Algorithme d’Adams-Bashford-Moulton

h
Prédiction (explicite): yi +1 = yi + (−9 f i −3 + 37 f i−2 − 59 f i−1 + 55 f i )
24

h
Correction (implicite): yi +1 = yi + ( f i−2 − 5 f i −1 + 19 f i + 9 f i+1 )
24

Exemple d'application
 dy (t − y )
 = f ( y, t ) =
 dt 2
 y (0) = 1

1-Résoudre numériquement cette équation à l’aide des


a) Des méthodes de Runge-Kutta et d’Adams-Bashford-Moulton
b) Du solveur ode45 implémenté dans Matlab
2-Résoudre analytiquement cette équation à l’aide du calcul symbolique.
3-Comparer les résultats

70
Problèmes avec Solutions

%******************************************
%RESOLUTION NUMERIQUE D'UNE EQUATION % DIFFERENTIELLE PAR LA
METHODE DE
% RUNGE-KUTTA
********************************************
format long
h=1/8;
t=0:h:3;
N=length(t);
NM1=N-1;
y(1)=1;
for i=1:NM1
k1=h*amine(t(i),y(i));
k2=h*amine(t(i)+h/2,y(i)+k1/2);
k3=h*amine(t(i)+h/2,y(i)+k2/2);
k4=h*amine(t(i)+h,y(i)+k3);
y(i+1)=y(i)+(k1+2*k2+2*k3+k4)/6;
end
[t;y]'

%********************************************************
%RESOLUTION NUMERIQUE D'UNE EQUATION DIFFERENTIELLE PAR
%LA METHODE PREDICTEUR-CORRECTEUR (ADAMS-BASHFORD-
MOULTON)
%*********************************************************
format long
h=1/8;
t=0:h:3;
N=length(t);
NM1=N-1;
y(1)=1;
% AMORCAGE PAR LA METHODE DE RUNGE-KUTTA
for i=1:3
k1=h*amine(t(i),y(i));
k2=h*amine(t(i)+h/2,y(i)+k1/2);
k3=h*amine(t(i)+h/2,y(i)+k2/2);
k4=h*amine(t(i)+h,y(i)+k3);
y(i+1)=y(i)+(k1+2*k2+2*k3+k4)/6;
end
%

71
Problèmes avec Solutions

% PREDICTION ET CORRECTION PAR LA METHODE


% d' ADAMS-BASHFORD-MOULTON
for i=4:NM1
% Prédiction ( Explicite ) Adams-Bashford
p1=-9*h*amine(t(i)-3*h,y(i-3));
p2=37*h*amine(t(i)-2*h,y(i-2));
p3=-59*h*amine(t(i)-h,y(i-1));
p4=55*h*amine(t(i),y(i));
y(i+1)=y(i)+(p1+p2+p3+p4)/24;
%
% Correction ( Implicite ) Adams-Moulton
c1=h*amine(t(i)-2*h,y(i-2));
c2=-5*h*amine(t(i)-h,y(i-1));
c3=19*h*amine(t(i),y(i));
c4=9*h*amine(t(i)+h,y(i+1));
y(i+1)=y(i)+(c1+c2+c3+c4)/24;
end
[t;y]'

%Sous-programme (fichier amine.m)

function dydt=amine(t,y)
dydt=(t-y)/2;

%Calcul symbolique

>> syms t y
>> y=dsolve('Dy=(t-y)/2','y(0)=1')
y =t-2+3*exp(-1/2*t)
>> t=0:1/8:3;
>> N=length(t) ;
>> for i=1:N
y(i)=t(i)-2+3*exp(-1/2*t(i));
end
>> [t;y]'

5°) Solveur ode45 (Matlab)

>> [t,y]=ode45(@amine,[0:1/8:3],1)

>> [t;y]'

72
Problèmes avec Solutions

Tableau de comparaison entre les différents résultats obtenus

T RK4 ABM Exacte Solveur ode45


Calcul symbolique Matlab
0 1.00000000000000 1.00000000000000 1.00000000000000 1.00000000000000
0.12500000000000 0.94323921203613 0.94323921203613 0.94323918844043 0.94323918849230
0.25000000000000 0.89749075208601 0.89749075208601 0.89749070775379 0.89749057819359
0.37500000000000 0.86208741701061 0.86208741701061 0.86208735454120 0.86208733352197
0.50000000000000 0.83640242746032 0.83640232327795 0.83640234921421 0.83640228335560
0.62500000000000 0.81984697872170 0.81984678391593 0.81984688683993 0.81984682379250
0.75000000000000 0.81186793995084 0.81186766577371 0.81186783637292 0.81186784113391
0.87500000000000 0.81194569280321 0.81194534952855 0.81194557928368 0.81194550063971
1.00000000000000 0.81959210101416 0.81959169802220 0.81959197913790 0.81959199497141
1.12500000000000 0.83434860299644 0.83434814878331 0.83434847419277 0.83434842124920
1.25000000000000 0.85578442000125 0.85578392225288 0.85578428555697 0.85578427226378
1.37500000000000 0.88349487284141 0.88349433850044 0.88349473391282 0.88349473053064
1.50000000000000 0.91709980059904 0.91709923592668 0.91709965822304 0.91709962046280
1.62500000000000 0.95624207513893 0.95624148577199 0.95624193024324 0.95624195731007
1.75000000000000 1.00058620562296 1.00058559662657 1.00058605903553 1.00058602323954
1.87500000000000 1.04981702757271 1.04981640348887 1.04981688003040 1.04981689396639
2.00000000000000 1.10363847135771 1.10363783625013 1.10363832351433 1.10363831482380
2.12500000000000 1.16177240529731 1.16177176279265 1.16177225773092 1.16177224901001
2.25000000000000 1.22395754885530 1.22395690218123 1.22395740207505 1.22395742410857
2.37500000000000 1.28994845168087 1.28994780370110 1.28994830613318 1.28994828757030
2.50000000000000 1.35951453450625 1.35951388775281 1.35951439058057 1.35951441551963
2.62500000000000 1.43243918815350 1.43243854485638 1.43243904618755 1.43243903758078
2.75000000000000 1.50851892712961 1.50851828924407 1.50851878741424 1.50851879654324
2.87500000000000 1.58756259450275 1.58756196373445 1.58756245728637 1.58756248166434
3.00000000000000 1.66939061495261 1.66938999278067 1.66939048044529 1.66939050503025

73
Références Bibliographiques

REFERENCES BIBLIOGRAPHIQUES

74
Références Bibliographiques

Références bibliographiques

1. Emmanuel Marin. "Introduction à Matlab". cours de Master. Université Jean


Monnet Saint-Étienne, année universitaire 2004-2005.

2. Alfio Quarteroni, Fausto Saleri , Paola Gervasio. "Calcul Scientifique Cours,


exercices corrigés et illustrations en MATLAB et Octave"., ISBN 978-88-470-
1675-0 e-ISBN 978-88-470-1676-Springer,2010.

3. M. Gagou Yaovi. "Cours méthodes numériques", http://www.u-


picardie.fr/gagou. 2010-2011.

4. Arnaud Brouwers. "Prise en main du logiciel Matlab"., Université de liège, 2009-


2010.

5. Yasmine Ariba, Jérome Cadieux. "Manuel Matlab", Icam de Toulouse Version


0.1. 2015.

6. Philippe Mullhaupt, Basile Graf, Willson Shibani, David Ingram. "Introduction


à la modélisation dynamique avec Matlab”, Ecole polytechnique fédérale de
Lausanne.

7. Eric Goncalvès Da Silva. "Méthodes et Analyse Numériques", HAL Id: cel-


00556967 https://cel.archives-ouvertes.fr/cel-00556967, 2011.

8. Khodja Benyoucef. "Fiche de TP Matlab", faculté de physique, université des


sciences et de la technologie, USTHB. 2015.

9. Jean-Louis Merrien. "Analyse Numérique avec Matlab", ISNB: 978-10-050863-


1, Dunod, Paris, 2007.

10. Luc Jolivet, Rabah Labbas. "Analyse et Analyse Numérique", ISBN: 2-7462-
0993-4, Lavoisier, Paris, 2005.

11. Ionut Danaila, Pascal Joly, Sidi Mahmoud Kaber, Marie Postel. "Introduction au
calcul scientifique par la pratique", ISBN : 2 10 0048709 4, Dunod, Paris, 2005.

75

Vous aimerez peut-être aussi