Vous êtes sur la page 1sur 42

COACHIN G SCHOOL

APPLICATION NUMERIQUE AVEC MATLAB

MATLAB

FOKAM TAGNE YVAN

Juillet - Août 2023


Table des matières

1 INTRODUCTION A L’ENVIRONNEMENT MATLAB 1


1 Introduction générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Installation du logiciel MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3 Environnement de MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.1 L’interface de MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
3.2 Première interaction avec MATLAB . . . . . . . . . . . . . . . . . . . . . . . 3
3.3 Les commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.4 Les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3.5 Edition des lignes de commande . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.6 Les appels de fonction MATLAB . . . . . . . . . . . . . . . . . . . . . . . . 6
3.7 Les nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.8 Les opérateurs mathématiques de base . . . . . . . . . . . . . . . . . . . . . 10
3.9 Les fonctions mathématiques de MATLAB . . . . . . . . . . . . . . . . . . . 11

2 LES VECTEURS ET LES MATRICES 13


1 Les vecteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1 Référencement et accès aux éléments d’un vecteur . . . . . . . . . . . . . . . 15
1.2 Les opérations élément par élément pour les vecteurs . . . . . . . . . . . . . 17
1.3 Fonctions utiles pour le traitement des vecteurs . . . . . . . . . . . . . . . . 18
2 Les matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.1 Référencement et accès aux éléments d’une matrice . . . . . . . . . . . . . . 19
2.2 Fonctions de création de matrices élémentaires . . . . . . . . . . . . . . . . . 20
2.3 Les opérations de base sur les matrices . . . . . . . . . . . . . . . . . . . . . 21
2.4 Fonctions utiles pour le traitement des matrices . . . . . . . . . . . . . . . . 21

3 PROGRAMMATION AVEC MATLAB 24


1 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2 Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3 Les opérateurs de logique et de comparaison . . . . . . . . . . . . . . . . . . . . . . 27
4 Les structures de contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.1 L’instruction if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.2 L’instruction switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.3 L’instruction for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.4 L’instruction while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2
4.5 Interruption d’une boucle de contrôle . . . . . . . . . . . . . . . . . . . . . . 30
5 Exercice récapitulatif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

4 METHODES NUMERIQUES DE RESOLUTION D’EQUATIONS DIFFEREN-


TIELLES 33
1 Problème de Cauchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2 Transformations vers un problème de Cauchy . . . . . . . . . . . . . . . . . . . . . 34
2.1 Traitement d’une équation différentielle d’ordre > 1 . . . . . . . . . . . . . . 34
2.2 Equations différentielles à coefficients constants . . . . . . . . . . . . . . . . 35
2.3 Exemple : Vol d’un point solide dans un champ de pesanteur . . . . . . . . . 35
2.4 Détermination des paramètres initiaux . . . . . . . . . . . . . . . . . . . . . 38
Chapitre 1

INTRODUCTION A
L’ENVIRONNEMENT MATLAB

1 Introduction générale
Matlab est un logiciel de calcul scientifique développé par la société Mathworks. Initialement
développé à la fin des années 70 pour effectuer le calcul matriciel, Matlab est utilisé aujourd’hui au-
tant pour le calcul matriciel que pour l’analyse des données, leur visualisation et le développement
d’algorithmes.

Ses avantages sont les suivant :

— Sa richesse fonctionnelle : Avec ses multiples fonctions intégrées, Matlab permet de réaliser
des manipulations mathématiques complexes en écrivant peu d’instructions.

— La simplicité de son langage de programmation

— Sa manière de tout gérér comme étant des matrices : Ce qui libère l’utilisateur de
s’occuper de typage de données et ainsi de lui éviter les problèmes de transtypage.

— La possibilité d’utiliser les boites à outils (toolboxes) : Ce qui encourage son uti-
lisation dans plusieurs disciplines (simulation, traitement de signal, imagerie, intelligence
artificielle,...etc.).

Domaine d’application de MATLAB


— Le calcul intégral ou la dérivation

— Le calcul des probabilités ou les statistiques

— Le traitement du signal

— Le traitement d’image

— L’automatisme

1
Cours : Application numérique avec MATLAB Coaching school

2 Installation du logiciel MATLAB

3 Environnement de MATLAB

3.1 L’interface de MATLAB


a. Command Window : C’est la fenêtre principale de l’environnement MATLAB ; elle permet
d’executer des commandes en dehors de programme et affiche les resultats.
b. Current Folder : Elle présente le contenu du repertoire courant où doit se situer tous nos
programmes en cours d’utilisation. Pour être executable, les programmes doivent se trouver
dans un même repertoire. Toutesfois, il est possible d’utiliser un programme contenu dans
un dossier différent de celui en cours d’utilisation ; il suffit de l’inclure dans l’ensemble des
documents accessibles par Matlab par la commande Set path.
c. Workspace : C’est l’espace de travail permettant de visualiser l’ensemble des variables
utilisés, leur type, leur espace occupé en mémoire...
d. Command History : Il permet de visualiser les dernières commandes utilisées.

Toutefois, il est possible de modifier l’interface de MATLAB à sa préference avec l’option Layout.

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 2


Cours : Application numérique avec MATLAB Coaching school

3.2 Première interaction avec MATLAB


Le moyen le plus simple d’utiliser MATLAB est d’écrire directement dans la fenêtre de com-
mande (Command Window) juste après le curseur (prompt) >>
Pour calculer une expression mathématique il suffit d’écrire le calcul à l’invite de commande avant
de valider en appuyant sur la touche «Entrer».

>> 5*9
ans =
45

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).

>> 5*9;
>>

Il est possible d’écrire plusieurs expressions dans la même ligne en les faisant séparées par des
virgules ou des points virgules.

>> 5+6,2*5-1;12-4
ans =
11
ans =
8
Il est également possible d’écrire une longue instruction sur plusieurs lignes en utilisant les trois
points de suspension (...)

>> s=1 - 1/2 + 1/3 - 1/4 + 1/5 - ...


1/6 + 1/7 - 1/8 + 1/9
s =
0.7456
>> montext=['Je respecte le developpement durable mais,'...
'je roule en diesel']
montext=
'Je respecte le developpement durable mais, je roule en diesel'

3.3 Les commentaires


Les commentaires sont des phrases explicatives ignorées par Matlab et destinées pour l’uti-
lisateur afin de l’aider à comprendre la partie du code commentée. En Matlab un commentaire
commence par le symbole % et occupe le reste de la ligne.
Par exemple :

>> A=B+C; % Donner à A la valeur de B+C

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 3


Cours : Application numérique avec MATLAB Coaching school

3.4 Les variables

3.3.1 Déclaration des variables


Pour créer une variable on utilise la structure simple : ‘variable = définition’ sans se préoc-
cuper du type de la variable. Le signe égale “=” dans cette syntaxe signifie l’opérateur d’affectation.

>> x=5
x =
5
L’opérateur d’affectation est utilisé d’une manière récursive comme dans l’exemple suivant :

>> x=5
x =
5
>> x=x+3
x =
8
>> x=2*x*x
x =
128

NB : Le nom d’une variable ne doit contenir que des caractères alphanumériques ou le symbole
«_» (underscore), et doit commencer par un alphabet. Nous devons aussi faire attention aux
majuscules car le MATLAB est sensible à la casse (A et a sont deux identifiants différents).

3.3.2 Les commandes who et whos


Dans l’environnement MATLAB, plusieurs variables de différentes types seront manipulées,
les commandes who et whos permettant de donner des informations sur l’ensemble des variables
stocké dans la mémoire depuis l’utilisation d’une session MATLAB.

>> x=3; y=2*x; z=1:y; V='MATLAB';


>> who
Your variables are:
V x y z
>> whos
Name Size Bytes Class Attributes
V 1x6 12 char
x 1x1 8 double
y 1x1 8 double
z 1x6 48 double

Dans cette exemple, V est une variable de type caractère affectée par le caractère ‘M AT LAB’,
x et y sont des variables numériques et z est une variable tableau. La commande whos fournie
plus d’informations que la commande who et la fenêtre W orkspace donne plus de détails sur les
variables.

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 4


Cours : Application numérique avec MATLAB Coaching school

Pour supprimer une variable de la mémoire, la commande suivante est peut être utilisée :
clear N om_variable

>> clear x

Et pour supprimer tous les variables, c’est la commande clear ou clear all qui est utilisée :

>> clear

3.3.3 Quelques commandes très utilisées


MATLAB offre beaucoup de commandes pour l’interaction avec l’utilisateur. Nous nous conten-
tons pour l’instant d’un petit ensemble, et nous exposerons les autres au fur et à mesure de l’avan-
cement du cours.
Commande Signification
exit, quit Fermer l’environnement MATLAB
help nom_commande Accès à l’aide sur une fonction ou sur un sujet
F5 Pour exécuter un programme
F9 Pour exécuter des lignes d’un programme

>> help cos


cos Cosine of argument in radians.
cos(X) is the cosine of the elements of X.

See also acos, cosd.

Reference page for cos


Other functions named cos
L’aide de MATLAB peut également être obtenu par le biais de la commande doc nom_commande
qui donne accès à une documentation complète des commandes intégrées dans MATLAB.

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 5


Cours : Application numérique avec MATLAB Coaching school

✠ La sauvegarde de la session de travail

La fonction « diary» permet de sauvegarder sa session de travail (commandes et réponses) dans


un fichier texte qui pourra être relu, corrigé, imprimé ou utilisé pour d’autres fins.
Pour commencer l’enregistrement, il faut utiliser la commande suivante :
diary nom_f ichier.txt

Pour mettre fin à l’enregistrement, il faut quitter MATLAB ou taper la commande suivante :
diary of f

>> diary testdiary.txt


>> a=1
s =
1
>> b=3
b =
3
>> x= 'Test de la commande'
b =
Test de la commande
>> c=b/a
c =
3
>> diary off

3.5 Edition des lignes de commande


Comme nous l’avons vu plus haut, la fenêtre de commande «Command W indow» est le moyen
le plus rapide d’utiliser MATLAB. Cependant, MATLAB dispose d’autres moyens pour executer
efficacement un ensemble d’instructions contenus dans un programme appelé script.
Il s’agit des méthodes New Script et New Live Script.

3.4.1 Méthode du New Script

3.4.2 Méthode du New Live Script

3.6 Les appels de fonction MATLAB


MATLAB fournit un grand nombre de fonctions qui effectuent des tâches de calcul. Les fonc-
tions sont équivalentes aux sous-routines ou méthodes dans d’autres langages de programmation.
Pour appeler une fonction telle que « max » et « mean », les arguments d’entrée sont écrits entre
parenthèses et s’il y a plusieurs arguments d’entrée, ceux-ci sont séparés par des virgules.

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 6


Cours : Application numérique avec MATLAB Coaching school

>> A=[1 3 9];


>> max(A)
ans =
9
>> mean(A)
ans =
4.3333

>> B=[10 44 0];

>> max(A,B)
ans =
10 44 9
Lorsqu’il y a plusieurs arguments de sortie, ceux-ci sont placés entre crochets

>> [val_max,position]= max(A)


val_max =
9
position =
3
Lorsque nous travaillons avec des chaînes de caractère, celles-ci sont ecrits entre les guillemets
simples

>> disp('Bonjour')
Bonjour

3.7 Les nombres


MATLAB utilise une notation décimale conventionnelle, avec un point décimal facultatif ‘.’
et le signe ‘+’ ou ‘–’ pour les nombres signés. La notation scientifique utilise la lettre ‘e’ pour
spécifier le facteur d’échelle en puissance de 10. Les nombres complexes utilise les caractères ‘i’ et
‘j’ (indifféremment) pour designer la partie imaginaire. Le tableau suivant donne un résumé :
Type Exemples
Entier 5 83
Réel en notation décimale 0.0205 3.1415926
1.60210e-20 6.02252e23
Réel en notation scientifique
(1.60210 × 10−20 ) (6.02252 × 1023 )
Complexe 5+3i -3.14159j

3.5.1 La commande format


La commande format de MATLAB concerne surtout la forme d’affichage des variables réelles.
Par défaut le format est le format court à 4 chiffres après la virgule, mais MATLAB dispose des
commandes pour modifier l’affichage des réels. Ces commandes sont les suivantes :

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 7


Cours : Application numérique avec MATLAB Coaching school

Commande Signification
format short Affiche les nombres avec 04 chiffres après la virgule

format short e Affiche les nombres avec 05 chiffres avec notation en virgule flot-
tante (Notation scientifique avec 04 chiffres après la virgule)

format long Affiche les nombres avec 15 chiffres après la virgule

format long e Affiche les nombres avec 16 chiffres avec notation en virgule flot-
tante (Notation scientifique avec 15 chiffres après la virgule)

format bank Affiche les nombres avec 02 chiffres après la virgule


format rat Affiche les nombres sous forme d’une ration (a/b)

MATLAB dispose également des formats format short g et format long g qui utilise la
meilleure des deux écritures à virgule fixe ou à virgule flottante.

>> pi
ans =
3.1416
>> format long
>> pi
ans =
3.141592653589793
>> format short e
>> pi^3
ans =
3.1006e+001
>> format short g
>> pi^3
ans =
31.006
>> format short
>> pi
ans =
3.1416
>> fraction = 7.2*3.1 ;
>> format rat
>> fraction
fraction =
558/25

La fonction vpa peut être utilisé afin de forcer le calcul et présenter plus de décimaux signifi-
catifs en spécifiant le nombre de décimaux désirés.

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 8


Cours : Application numérique avec MATLAB Coaching school

>> sqrt(2)
ans =
1.4142
>> vpa(sqrt(2),50)
ans =
1.4142135623730950488016887242096980785696718753769

3.5.2 Les principales constantes mathématiques de MATLAB


MATLAB définit les constantes suivantes :

Constante Valeur
pi π = 3.1415...
exp(1) e = 2.7183...
Inf ∞
N aN N ot a N umber (Pas un numéro)
eps ε ≈ 2 × 10−16

3.5.3 Les nombres complexes


Toutes les opérations qui concernent les nombres complexes sont utilisées dans MATLAB. Il
s’agit de l’addition, le produit, la division, ainsi que les opérateurs de détermination de l’argument,
le module, la partie réelle, la partie imaginaire etc. d’un nombre complexe.

>> a1=2; b1=3; Z1=a1+i*b1;


>> a2=5; b2=7; Z2=a2+i*b2;

Pour la somme de deux nombres complexes

>>Z1+Z2
ans =
7 + 10i

Pour le produit de deux nombres complexes

>> Z1*Z2
ans =
-11 + 29i

Pour la division d’un nombre complexe à un autre nombre complexe

>> Z1/Z2
ans =
0.4189 + 0.0135i

Pour calculer le module d’un nombre complexe

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 9


Cours : Application numérique avec MATLAB Coaching school

>> abs(Z1)
ans =
3.6056

Pour calculer l’argument d’un nombre complexe

>> angle(Z2)
ans =
0.9505

Pour extraire la partie réelle d’un nombre complexe

>> real(Z1)
ans =
2

Pour extraire la partie imaginaire d’un nombre complexe

>> imag(Z2)
ans =
7

3.8 Les opérateurs mathématiques de base


Dans MATLAB, certains opérateurs mathématiques sont très utiles, notamment les fameuses
opérateurs mathématiques utilisées dans les calculs numériques telles que l’addition ‘+’, la sous-
traction ‘-’, la multiplication ‘*’, la division ‘/’ et l’opération puissance ‘∧ ’. Il y a également d’autres
opérateurs mathématiques propres à MATLAB qui sont utilisés dans certains cas de manipulation
des scalaires et tableau, telles que la division inverse ‘\’ et le reste d’une division euclidienne ‘mod’
et les opérations liées aux calculs symboliques. . .

Opérateur Signification
+ Addition
- Soustraction
* Multiplication
/ Division
\ Division gauche (division inverse)

Puissance
’ Transposé
( et ) Les parenthèses spécifient l’ordre d’évaluation
mod Reste de la division euclidienne

>> D = 4;
>> V = (4/3)*pi*(D/2)^3
V =
33.5103

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 10


Cours : Application numérique avec MATLAB Coaching school

3.5.1 La priorité des opérations dans une expression

L’évaluation d’une expression s’exécute de gauche à droite en considérant la priorité des opé-
rations indiquée dans le tableau suivant :

Opérations Priorité (1=max, 4=min)


Les parenthèses (et) 1
La puissance ∧ et le transposé ’ 2
La multiplication * et la division / 3
L’addition + et la soustraction - 4

3.9 Les fonctions mathématiques de MATLAB

Les fonctions fréquemment utilisées sont les suivantes :

Fonction Signification
sin(x) Sinus de x (en radian)
cos(x) Cosinus de x (en radian)
tan(x) Tangente de x (en radian)
asin(x) Arcsinus de x (en radian)
acos(x) Arccosinus de x (en radian)
atan(x) Arctangente de x (en radian)

sqrt(x) Racine carrée de x ( x)
abs(x) Valeur absolue de x (|x|)
exp(x) ex
log(x) Logarithme naturel de x (ln(x) = loge (x)
log10(x) Logarithme à base 10 de x (log10 (x))
imag(x) Partie imaginaire du nombre complexe x
real(x) Partie réelle du nombre complexe x
round(x) Arrondi un nombre vers l’entier le plus proche
f loor(x) Arrondi un nombre vers l’entier le plus petit
(max{n tel que n ≤ x, n entier})
ceil(x) Arrondi un nombre vers l’entier le plus grand
(min{n tel que n ≥ x , n entier})
rem(m, n) Donne le reste de la division euclidienne de m par n
lcm(m, n) Donne le PPCM de m et n
gcd(m, n) Donne le PGCD de m et n
f actor(n) Donne la décomposition en facteurs premiers de n

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 11


Cours : Application numérique avec MATLAB Coaching school

>> cos(pi/4)
ans =
0.7071
>> sin(pi/3)
ans =
0.8660
>> tan(pi/3)
ans =
1.7321
>> atan(pi/3)
ans =
0.8084
>> format rat
>> atan(pi/3)
ans =
1110/1373

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 12


Chapitre 2

LES VECTEURS ET LES MATRICES

MATLAB était conçu à l’origine pour permettre aux mathématiciens, scientifiques et ingé-
nieurs d‘utiliser facilement les mécanismes de l’algèbre linéaire. Par conséquent, l’utilisation des
vecteurs et des matrices est très intuitif et commode en MATLAB. En d’autre terme, Matlab est
un logiciel de calcul matriciel. Maitriser la manipulation des matrices est essentiel pour la prise en
main de son langage.
Une matrice est un tableau rectangulaire avec m lignes et n colonnes et contenant des éléments
numérique de même type.

1 Les vecteurs
Un vecteur est une liste ordonnée d’éléments. Si les éléments sont arrangés horizontalement
on dit que le vecteur est un vecteur ligne, par contre si les éléments sont arrangés verticalement on
dit que c’est un vecteur colonne.
Pour créer un vecteur ligne il suffit d’écrire la liste de ses composants entre crochets [ et ] et de les
séparés par des espaces ou des virgules comme suit :

>> V=[5,2,13,-6]
V =
5 2 13 -6

3
>> W=[2 3 1]
W =
2 3 1

Pour créer un vecteur colonne il suffit :

— Soit d’écrire les composantes du vecteur entre crochets [ et ] et de les séparés par des points-
virgules ( ;) ;

— Soit d’écrire verticalement le vecteur ;

— Soit de calculer le transposé d’un vecteur ligne

13
Cours : Application numérique avec MATLAB Coaching school

>> U=[4;-2;1]
U =
4
-2
1
>> U=[4
-2
1]
U =
4
-2
1
>> U=[4 -2 1]'
U =
4
-2
1

Si les composants d’un vecteur X sont ordonnés avec des valeurs consécutives, nous pouvons
le noter avec la notation suivante :

X=Premier_élément : Dernier_élément
(Les crochets sont facultatifs dans ce cas)

>> n=0:5
n =
0 1 2 3 4 5
>> n=[0:5]
n =
0 1 2 3 4 5

Si les composants d’un vecteur X sont ordonnés avec des valeurs consécutives mais avec un pas
(d’incrémentation/décrémentation) différente de 1, nous pouvons spécifier le pas avec la notation
suivante :

X=Premier_élément : Pas : Dernier_élément


(Les crochets sont facultatifs dans ce cas)

>> n=0:2:10
n =
0 2 4 6 8 10

On peut également écrire des expressions plus complexes comme :

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 14


Cours : Application numérique avec MATLAB Coaching school

>> U=[1:2:5,-2:2:1]
U =
1 3 5 -2 0
>> A=[1 2 5]
A =
1 2 5
>> B=[A,4,6-15]
B =
1 2 5 4 6 -15

✠ La fonction linspace
La création d’un vecteur dont les composants sont ordonnés par intervalle régulier et avec un
nombre d’éléments bien déterminé peut se réaliser avec la fonction :

linspace (Début, Fin, Nombre d’éléments)

Le pas d’incrémentation est calculé automatiquement par Matlab selon la formule :

F in − Début
pas =
N ombre d′ éléments
>> V=linspace(3,9,7)
V =
3 4 5 6 7 8 9
>> W=linspace(9,3,7)
W =
9 8 7 6 5 4 3

Dans la commande linspace (Début, Fin), le nombre d’éléments est pris par défaut égale à 100,
c’est-à-dire :

linspace (Début, Fin) = linspace (Début, Fin, 100)

1.1 Référencement et accès aux éléments d’un vecteur

L’accès aux éléments d’un vecteur se fait en utilisant la syntaxe générale suivante :

Nom_vecteur (Position (s))


(Position : Simple numéro ou liste de numéros)

Ci-dessous quelques exemples de réferencement qu’on peut effectuer :

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 15


Cours : Application numérique avec MATLAB Coaching school

>> V=[5,-1,13,-6,7] %Création du vecteur V qui contient 5 éléments


V =
5 -1 13 -6

>> V=(3) %Extraction de l'élément situé à la 3e position

ans =
13

>> V=(2:4) %Extraction des éléments de la 2e position jusqu'à la 4e

ans =
-1 13 -6

>> V=(4:-2:1) %Extraction des éléments de la 4e position jusqu'à la 1ere avec le pas =-2
ans =
-6 -1

>> V=(3:end) %Extraction des éléments de la 3e position jusqu'à la dernière


ans =
13 -6 7

>> V=([1,3,4]) %Extraction des éléments de la 1ere, la 3e et la 4e position uniquement


ans =
5 13 -6

>> V(1)=8 %Augmente un élément à la 1ere position avec la valeure 8


V =
8 -1 13 -6 7

>> V(6)=-3 %Augmente un élément à la 6e position avec la valeure -3


V =
8 -1 13 -6 7 -3

>> V(9)=5 %Augmente un élément à la 9e position avec la valeure 5


V =
8 -1 13 -6 7 -3 0 0 5

>> V(2)=[] %Supprime le 2e élément du vecteur V


V =
8 13 -6 7 -3 0 0 5

>> V(3:5)=[] %Supprime du 3e jusqu'au 5e élément du vecteur V

V =
8 13 0 0 5

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 16


Cours : Application numérique avec MATLAB Coaching school

1.2 Les opérations élément par élément pour les vecteurs

Avec deux vecteurs → −


u et →−v , il est possible de réaliser des calculs élément par élément en
utilisant les opérations suivantes :

Exemple avec :
Opération Signification >> u=[-2,6,1];
>> v=[3,-1,4];

>> u+2
ans =
+ Addition des vecteurs 0 8 3
>> u+v
ans =
1 5 5

>> u-2
ans =
- Soustraction des vecteurs -4 4 -1
>> u-v
ans =
-5 7 -3

>> u*2
ans =
-4 12 2
>> u.*2
.* Multiplication élément par élément ans =
-4 12 2
>> u.*v
ans =
-6 -6 4

>> u/2
ans =
-1.0000 3.0000 0.5000
>> u./2
./ Division élément par élément ans =
-1.0000 3.0000 0.5000
>> u./v
ans =
-0.6667 -6.0000 0.2500

>> u.^2
ans =
.∧
Puissance élément par élément 4 36 1
>> u.^v
ans =
-8.0000 0.1667 1.0000

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 17


Cours : Application numérique avec MATLAB Coaching school

1.3 Fonctions utiles pour le traitement des vecteurs


Plusieurs commandes peuvent être utilisées pour manipuler les vecteurs, le tableau ci-dessous
nous donne quelques exemples.

Commande Utilité Exemple avec :


>> x=[1,0,2,3];
>> A=[1,3,9,0];
Classe les éléments d’un
>> w=sort(x)
sort (N om_V ecteur) vecteur par ordre w =
croissant 0 1 2 3

Donne le nombre
>> n=numel(x)
numel (N om_V ecteur) d’éléments qui existe
n =
dans un vecteur 4
Donne un autre vecteur
>> y=exp(x)
dont les valeurs sont les y =
2.7183 1.0000 7.3891 20.0855
exp (N om_V ecteur) exponentielles des
éléments du vecteur
initial
Donne l’élément
>> max(A)
max (N om_V ecteur) maximal d’un vecteur ans =
9

Calcule la moyenne
>> mean(A)
mean (N om_V ecteur) arithmétique des ans =
éléments d’un vecteur 3.2500

Calcule la somme des


>> sum(x)
sum (N om_V ecteur) éléments d’un vecteur
ans =
6

Calcule le produit des


>> prod(A)
prod (N om_V ecteur) éléments d’un vecteur ans =
0

Donne la taille d’un


>> length(A)
length (N om_V ecteur) vecteur (Nombre ans =
d’éléments) 4

renverse l’ordre des


>> fliplr(A)
fliplr (N om_V ecteur) éléments d’un vecteur ans =
0 9 3 1

Calcule le produit
>> dot(x,A)
dot scalaire de 2 vecteurs ans =
(N om_V ecteur1, N om_V ecteur2)
19

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 18


Cours : Application numérique avec MATLAB Coaching school

Calcule la norme d’un


>> norm(x)
norm (N om_V ecteur) vecteur
ans =
3.7417

Calcule le produit
>> a=[1,5,3];b=[4,9,8];
cross vectoriel de 2 vecteurs
>> cross(a,b)
(N om_V ecteur1, N om_V ecteur2) en dimensions 3 ans =
13 4 -11

2 Les matrices
Une matrice est un tableau rectangulaire d’éléments (bidimensionnels). Les vecteurs sont des
matrices avec une seule ligne ou une seule colonne (monodimensionnels).
Pour insérer une matrice, il faut respecter les règles suivantes :
• Les éléments doivent être mises entre des crochets [ et ]
• Les espaces ou les virgules sont utilisés pour séparer les éléments dans la même ligne
• Un point-virgule (ou la touche «entrer») est utilisé pour séparer les lignes
• Le nombre d’éléments dans chaque ligne (nombre de colonnes) doit être identique dans toutes
les lignes de la matrice
Pour illustrer cela, considéront la matrice suivante :

1 2 3
 

 4 5 6 
 
 
7 8 9

Cette matrice peut être écrite en Matlab avec l’une des syntaxes suivantes :

>> u=[1,2,3;4,5,6;7,8,9];
>> u=[1 2 3;4 5 6;7 8 9];
>> u=[1,2,3
4,5,6
7,8,9];
>> u=[[1;4;7],[2;5;8],[3;6;9]];

2.1 Référencement et accès aux éléments d’une matrice


L’accès aux éléments d’une matrice se fait en utilisant la syntaxe générale suivante :

Nom_matrice (Positions_lignes , positions_colonnes)


(Position : Simple numéro ou liste de numéros)

Il est utile de noter les possibilités suivantes :

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 19


Cours : Application numérique avec MATLAB Coaching school

— L’accès à un élément de la ligne i et la colonne j se fait par : A(i,j)

— L’accès à toute la ligne numéro i se fait par : A(i, :)

— L’accès à toute la colonne numéro j se fait par : A( :,j)

2.2 Fonctions de création de matrices élémentaires

En Matlab, il existe des fonctions qui permettent de générer automatiquement des matrices
particulières. Dans le tableau suivant nous présentons-les plus utilisées :

Commande Signification
zeros(n) Génère une matrice n × n avec tous les éléments = 0
zeros(m, n) Génère une matrice m × n avec tous les éléments = 0
ones(n) Génère une matrice n × n avec tous les éléments = 1
ones(m, n) Génère une matrice m × n avec tous les éléments = 1
eye(n) Génère une matrice identité de dimension n × n
magic(n) Génère une matrice magique de dimension n × n
rand(m, n) Génère une matrice de dimension m × n de valeurs aléatoires
pascal(n) Génère une matrice de Pascal d’ordre n
vander(V ) Génère une matrice de Vandermonde du vecteur V

NB :

— Une matrice magique d’ordre n est une matrice carrée n×n dont la somme de toutes les
valeurs d’une ligne, d’une colonne ou de la diagonale est la même.

>> magic3=magic(3)
magic3 =
8 1 6
3 5 7
4 9 2

— Une matrice de Pascal d’ordre n est la matrice issue du triangle de Pascal.

>> pascal(4)
ans =
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20

— Si V=[v1 , v2 , ...vn ] est un vecteur de dimension n, alors les éléments de la matrice de Van-
dermonde sont exprimés suivant la formule A(i, j) = vi n−j .

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 20


Cours : Application numérique avec MATLAB Coaching school

>> V=1:4
V =
1 2 3 4
>> vander(V)
ans =
1 1 1 1
8 4 2 1
27 9 3 1
64 16 4 1

2.3 Les opérations de base sur les matrices


Opérateur Signification
+ Addition
- Soustraction
.* Multiplication élément par élément
./ Division élément par élément
.\ Division gauche (division inverse)élément par élément
.∧ Puissance élément par élément
* Multiplication matricielle
/ Division matricielle (A/B)=A*B−1

Les opérations élément par élément sur les matrices sont les mêmes que ceux pour les vecteurs (la
seule condition nécessaire pour faire une opération élément par élément est que les deux matrices
aient les mêmes dimensions).

2.4 Fonctions utiles pour le traitement des matrices


Voici quelques fonctions parmi les plus utilisées concernant les matrices :

Commande Utilité
size (N om_M atrice) Donne la dimension d’une matrice
size (N om_M atrice, 1) Donne le nombre de lignes d’une matrice
size (N om_M atrice, 2) Donne le nombre de colonnes d’une matrice
det (N om_M atrice) Calcule le determinant d’une matrice
inv (N om_M atrice) Calcule l’inverse d’une matrice
rank (N om_M atrice) Calcule le rang d’une matrice
trace (N om_M atrice) Calcule la trace d’une matrice
eig (N om_M atrice) Calcule les valeurs propres d’une matrice
diag (N om_M atrice) Renvoie le diagonal d’une matrice
diag (N om_V ecteur) Crée une matrice ayant le vecteur dans la diagonal et 0
ailleurs.
tril (N om_M atrice) Renvoie la partie triangulaire inferieure d’une matrice

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 21


Cours : Application numérique avec MATLAB Coaching school

triu (N om_M atrice) Renvoie la partie triangulaire supérieure d’une matrice


fliplr (N om_M atrice) Retourne une matrice selon la direction droite / gauche
flipud Retourne une matrice selon la direction haut / bas
(N om_M atrice)
rot90 (N om_M atrice) Fait tourner une matrice de 90° (dans le sens trigono-
métrique direct)

NB : La commande eig (N om_M atrice) permet également de determiner des vecteurs propres
d’une matrice carrée. L’exemple ci-dessus explicite la méthode pour le faire.

>> A=[2 1 -1
3 2 -3
3 1 -2]
A =
2 1 -1
3 2 -3
3 1 -2
>> [V,D]=eig(A)
V =
0 -0.5774 0.7071
-0.7071 -0.5774 -0.0000
-0.7071 -0.5774 0.7071
D =
-1.0000 0 0
0 2.0000 0
0 0 1.0000

Les colonnes du tableau V sont les vecteurs propres normalisés V (:, 1), V (:, 2) et V (:, 3) et la
diagonale du tableau D est formé par les valeurs propres D(1, 1), D(2, 2) et D(3, 3).

2.4.1 Résolution d’un système linéaire


Les fonctions citées ci-dessus sont très utiles, surtout dans le cas de la résolution des systèmes
d’équations linéaires. En algèbre, si le déterminant de la matrice [A] est différent de zéro alors le
système [A]x = b possède une solution comme suit : x = [A]−1 b.
A titre d’exemple, soit le système d’équations linéaires suivante :

−1 
3x + 2y − 9z = −65 3 2 −9 3 2 −9
        
x −65 x −65





−9 5 2  y =  16  =⇒ y = −9 5 2 
−9x + 5y + 2z = 16  16 
          
⇐⇒         
 
6 7 3 5 6 7 3 5

z z

6x + 7y + 3z = 5

Le code MATLAB ci-dessous permet de ressoudre ce système :

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 22


Cours : Application numérique avec MATLAB Coaching school

>> A=[3 2 -9; -9 5 2; 6 7 3]; % Introduction de la matrice A


>> b=[-65; 16; 5]; % Introduction du vecteur colonne b
>> x=inv(A)*b % Résolution
x =
-1.0065
-1.2549
6.6078
Donc la solution de ce système est donc : x = −1.0065, y = −1.2549, z = 6.06078

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 23


Chapitre 3

PROGRAMMATION AVEC MATLAB

Il est possible d’enregistrer une séquence d’instructions (commandes et fonctions) dans un


fichier (appelé aussi M-File). Un tel fichier porte l’extension “.m” et est considéré par MATLAB
comme un fichier d’instructions qui peut être exécuté dans l’environnement MATLAB. Un fichier
M-File peut être un script ou fonction (function). Un fichier M-File est édité par un éditeur
incorporé dans MATLAB.

1 Fonctions
Le principe d’une fonction est d’effectuer des opérations à partir d’une ou plusieurs entrées et
fournir une ou plusieurs sorties (résultat). Les variables d’entrées sont des paramètres à spécifier
en argument de la fonction, tandis que les variables de sorties sont des valeurs qu’elle renvoie. Un
M-File f unction est tout à fait semblable aux fonctions intégrées de MATLAB.
Un fichier f unction à deux rôles, celui de définir des fonctions ou des procédures qui ne figurent
pas parmi les fonctions incorporées de MATLAB et celui de les utiliser de la même manière que
les fonctions utilisateur.
La structure générale d’un fichier fonction est :

function [sortie1,sortie2,sortie3]=Nom_fonction(arg1,arg2)
% Suite d'instructions
end

La fonction contient les entrées ou arguments (arg1,arg2) et les sorties


[sortie1,sortie2,sortie3]

24
Cours : Application numérique avec MATLAB Coaching school

Fonction qui calcule la racine carrée d’un nombre par la méthode de Newton

Dans le cas où la fonction possède qu’une seule sortie et plusieurs arguments d’entrées, il est
plus commode d’utiliser une fonction anonyme au lieu d’utiliser un fichier fonction.
2
L’exemple de la fonction : f (x, y) = (1 − x)2 e−x −(y+1) s’écit comme suit :
2

>> f=@(x,y) (1-x).^2.*exp(-(x.^2)-(y+1).^2)

f =

function_handle with value:

@(x,y) (1-x).^2.*exp(-(x.^2)-(y+1).^2)

Cette écriture signifie que x et y sont les arguments de la fonction f ; (x, y) pouvant être des
tableaux de même dimensions, à titre d’exemple :

>> f(2,5)
ans =
4.2484e-18
>> f(5,2)
ans =
2.7423e-14
>> x=[2 1]; y=[0 1];
>> f(x,y)
ans =
0.0067 0

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 25


Cours : Application numérique avec MATLAB Coaching school

2 Scripts
Un fichier script permet regrouper des séries de commandes MATLAB. Cela évite d’avoir à
saisir plusieurs fois de longues suites d’instructions. Si le script est écrit dans un fichier dont le
nom est Name_of_M-File.m alors, il peut être exécuté à partir de la fenêtre de commande de
MATLAB comme :
>> Name_of_M-file

Ou tout simplement par l’appui de la touche F 5 du clavier ou sur le bouton de la barre


d’outils de l’éditeur de MATLAB. A son lancement, les instructions qu’il contient s’exécutent
séquentiellement comme si elles étaient lancées depuis l’invite de commande. Un script stocke ses
variables dans le Workspace, lequel est partagé par tous les scripts. Ainsi, toutes les variables créées
dans les scripts sont visibles depuis la Command window et vice versa. Lorsque MATLAB détecte
une erreur, le programme s’arrête et un message d’erreur s’affiche à l’écran (avec le numéro de la
ligne où l’erreur est détectée).

Exemple de script qui vous définit en fonction de votre âge


NB :
— La lecture de la valeur d’une variable entrée par l’utilisateur se fait en utilisant la commande
input dont la syntaxe est la suivante :
Nom_variable= input (‘Une phrase indicative’)
(La phrase indicative aidant l’utilisateur à savoir quoi entrer)
— L’affichage d’un texte ou de la valeur d’une variable se fait en utilisant la fonction disp dont
la syntaxe est la suivante :
disp(Nom_variable)
ou
disp(‘Phrase à afficher’)

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 26


Cours : Application numérique avec MATLAB Coaching school

Note :
Concernant la gestion des variables entre le programme principale (script) ou le workspace et
les fonctions, toutes les variables définies à l’intérieur d’une fonction sont des variables locales à
cette fonction. La communication avec des variables du programme principal (ou du workspace)
ou avec des variables d’autres fonctions se fait uniquement par les variables d’entrée et sortie de
la fonction. Une alternative existe toutefois : il est possible de déclarer certaines variables comme
des variables globales. Une variable globale peut être partagée entre un programme principal et
plusieurs fonctions sans qu’il soit besoin de la spécifier parmi les variables d’entrée-sortie des
différentes fonctions. Une variable globale est déclarée grâce au mot clé global suivit par le nom
du variable dans chaque fonction qui utilise ce même variable.

Comparaison entre un programme et une fonction

Programme (script) Fonction

Execution Execution
>> programme >> racine(9)
Entrez un nombre positif: 6 ans =
2.4495 3
On ne peut pas écrire des expressions tel que : On peut écrire sans problème des expressions
comme :
>> 2*programme+4
>> 2*racine(16)+4

3 Les opérateurs de logique et de comparaison


Les opérateurs de logique et de comparaison sont utilisés essentiellement dans les instructions
de contrôle. Les opérateurs logiques sont :
Opérateur Signification
& et
| ou
∼ non
xor ou exclusif
any(x) Retourne 1 si un des éléments de x est non nul
all(x) Retourne 1 si tous les éléments de x sont nuls

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 27


Cours : Application numérique avec MATLAB Coaching school

Et les opérateurs de comparaison sont :

Opérateur Signification
== Egal à
> Strictement Supérieur à
< Strictement Inférieur à
>= Supérieur à
<= Inférieur à
∼= Différent de

4 Les structures de contrôle


Les structures de contrôle définissent l’ordre d’exécution des instructions d’un programme.
Dans sa forme la plus simple, le déroulement d’un programme est linéaire dans le sens où les
instructions qui le composent s’exécutent successivement. Les structures de contrôle sont des mé-
canismes qui permettent de modifier la séquence d’exécution des instructions. Plus précisément,
lors de l’exécution, en fonction des conditions réalisées certaines parties précises du code seront
exécutées.

4.1 L’instruction if
Cette structure permet d’exécuter un bloc d’instructions en fonction de la valeur logique d’une
expression. Sa syntaxe générale est la suivante :
if Expression_Logique
Bloc d’instructions
end
L’ensemble des instructions (Bloc d’instructions) est exécuté seulement si
(Expression_Logique) est vraie. Plusieurs tests exclusifs peuvent aussi être combinés en
utilisant la syntaxe suivante :
if Expression_Logique_1
Bloc d’instructions_1 …
elseif Expression_Logique_2
Bloc d’instructions_2 …
else
Bloc d’instructions_3 …
end
Plusieurs elseif peuvent être concaténés, leur bloc est exécuté si l’expression corres-
pondante est vraie et si toutes les conditions précédentes n’ont pas été satisfaites. Le
Bloc d’instructions_3 associé au else est quant à lui exécuté si aucune des conditions
précédentes n’a été réalisées. Soit l’exemple :

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 28


Cours : Application numérique avec MATLAB Coaching school

x =input('Entrer un nombre');
if x < 0
disp('x est négatif ')
elseif x > 1
disp('x est supérieur à 1')
else
x = 1
end

4.2 L’instruction switch

Dans cette structure, une expression numérique est comparée successivement à différentes va-
leurs. Dès qu’il y a identité, le bloc d’instructions correspondant est exécuté. Sa syntaxe est :

switch expression
case valeur1,
instructions_1. . .
case valeur2,
instructions_2. . .
. . . . . . . .
otherwise
instructions. . .
end

L’expression testée, expression, doit être un scalaire ou une chaîne de caractère. Une fois qu’un
bloc instructions_i est exécuté, le flux d’exécution sort de la structure et reprend après
end. Si aucune case vérifie l’égalité, le bloc qui suit otherwise est exécuté.
Soit l’exemple :

switch x
case 0,
resultat = a + b;
case 1,
resultat = a * b;
case 2,
resultat = a/b;
case 3,
resultat = a^b;
otherwise
resultat = 0;
end

En fonction de la valeur de x une opération particulière est effectuée. Par défaut, resultat
prend la valeur 0.

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 29


Cours : Application numérique avec MATLAB Coaching school

4.3 L’instruction for


La boucle itérative est très utilisée pratiquement dans tous les langages de programmation. La
boucle for exécute le bloc interne autant de fois que spécifié par une variable jouant un rôle de
compteur.
Sa syntaxe est :

for compteur = debut:increment:fin


instructions …
end
Le compteur est initialisé à la valeur debut et évolue jusqu’à la valeur fin par pas de
increment. A chaque itération, le bloc instructions est exécuté. Généralement, le comp-
teur est un scalaire, et souvent un entier. Soit l’exemple :

n = 11;
for k = 1:n
x(k)= (2*k+1)/k;
end

Cet exemple construit élément par élément un vecteur x de dimension 11.

4.4 L’instruction while


Ce mécanisme permet de répéter une série d’instructions tant qu’une condition est vérifiée.
Sa syntaxe est :

while expression
instructions …
end

Le terme expression est une expression logique. Si cette dernière est vraie, le bloc
instructions est exécuté. Puis, expression est de nouveau testée. L’exécution du bloc est
répétée tant que le test est vrai.
Soit l’exemple :

compteur = 0;
while compteur < 11
disp(‘toujours dans la boucle’) ;
compteur = compteur + 1;
end

Cet exemple affiche 11 fois la chaîne de caractère toujours dans la boucle.

4.5 Interruption d’une boucle de contrôle


Il est possible de provoquer une sortie prématurée d’une boucle de contrôle. L’instruction
break permet de sortir d’une boucle for ou d’une boucle while. L’exécution se poursuit
alors séquentiellement à partir de l’instruction suivant le mot clé end fermant la boucle. En

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 30


Cours : Application numérique avec MATLAB Coaching school

cas de boucles imbriquées, on interrompt seulement l’exécution de la boucle intérieure contenant


l’instruction break. L’instruction return provoque un retour au programme appelant (ou au
clavier). Les instructions suivant le return ne sont donc pas exécutées. L’instruction return
est souvent utilisée conjointement avec une instruction conditionnée par exemple pour tester dans
le corps d’une fonction si les paramètres d’entrée ont les valeurs attendues.
L’instruction error permet d’arrêter un programme et d’afficher un message d’erreur. La syn-
taxe est error (‘message d’erreur’). L’instruction warning permet d’afficher un
message de mise en garde sans suspendre l’exécution du programme. La syntaxe est warning
(‘message de mise en garde’). Il est possible d’indiquer à MATLAB de ne pas afficher
les messages de mise en garde d’un programme en tapant warning off dans la fenêtre de
commandes. L’affichage se rétablit suite à warning on.

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 31


Cours : Application numérique avec MATLAB Coaching school

5 Exercice récapitulatif
Il existe des fonctions prédéfinis en Matlab donnée dans le tableau ci-dessous. Essayons de les
programmer (pour un vecteur donnée V).

Fonction Description Programme qui la simule


n=length(V) ;
somme=0 ;
for i=1 : n
sum (V ) Somme des éléments d’un
somme=somme+V(i) ;
vecteur V
end
disp(somme)
n=length(V) ;
produit=1 ;
for i=1 : n
prod (V ) Le produit des éléments d’un
produit=produit*V(i) ;
vecteur V
end
disp(produit)
n=length(V) ;
moyenne=0 ;
for i=1 : n
mean (V ) La moyenne des éléments d’un
moyenne=moyenne+V(i) ;
vecteur V
end
moyenne=moyenne/n
n=length(V) ;
A=zeros(n) ;
Créer une matrice ayant le for i=1 : n
diag (V ) vecteur V dans le diagonale, A(i,i)=V(i) ;
et 0 ailleurs end
disp(A)
n=length(V) ;
for i=1 : n-1
for j=i+1 : n
if V(i)>V(j)
Ordonne les éléments du tmp=V(i) ;
sort (V ) vecteur V par ordre croissant V(i)=V(j) ;
V(j)=tmp ;
end
end
end
disp(A)

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 32


Chapitre 4

METHODES NUMERIQUES DE
RESOLUTION D’EQUATIONS
DIFFERENTIELLES

1 Problème de Cauchy
La plupart des méthodes numériques pour résoudre les équations différentielles s’appliquent
à des problèmes du type problème de Cauchy suivant le nom donné par les mathématiciens. Ce
problème se formule de la manière suivante :

Trouver y(t) définie et dérivable sur [t0 , t0 + T ] et à valeurs dans Rm telle que :

 dy(t)

= f (t, y(t)) ∀t ∈ [t0 , t0 + T ]
dt
(4.1)
y(t0 )

= y0

où f (t, y(t)) est une fonction de Rm+1 dans Rm et y0 ∈ Rm . Concrètement l’expression, “trouver
y(t) à valeurs dans Rm avec y0 ∈ Rm ” consiste à dire pour des applications comme Matlab, que
l’inconnue y(t) est un vecteur de m fonctions inconnues avec pour condition limite le vecteur y0 :

y1 (t) y1 (t0 )
     
y0,1
y2 (t) y2 (t0 )
     
     y0,2 

..

y0 = y(t0 ) = 
..

= 
..

. . .
     
     
     
ym (t) ym (t0 ) y0,m
De même, f (t, y(t)) est une fonction de t et du vecteur y(t) et doit retourner un vecteur colonne :
   
y1 f1
   
dy(t) d  y2   f2 
≡ .. = f (t, y(t)) ≡ ..
   
. .
   
dt dt 







ym fm
Pour la plupart des problèmes qui intéressent les scientifiques et les ingénieurs, des théorèmes

33
Cours : Application numérique avec MATLAB Coaching school

mathématiques assurent l’existence et l’unicité d’une solution au problème de Cauchy. Néanmoins,


souvent la solution ne peut être exprimée analytiquement. Pour de tels problèmes, on doit donc
chercher à déterminer la fonction y(t) par des méthodes numériques.

2 Transformations vers un problème de Cauchy


Dans Matlab (Octave), de puissant programmes (fonctions) existent sous le nom générique de
ODEs (Ordinary Differential Equation Solvers). Ils résolvent les systèmes de la forme de
l’équation (4.1). Le travail principal d’un utilisateur de Matlab consiste donc le plus souvent à
transformer son problème sous la forme de l’équation (4.1). Dans bien des domaines, surtout ceux
des équations à dérivées partielles, les transformations d’un problème donné sous la forme d’un
problème de Cauchy sont toujours d’actualité comme problèmes de recherche.

2.1 Traitement d’une équation différentielle d’ordre > 1


Dans ce cours, nous ne regarderons que la transformation d’une équation différentielle d’ordre
supérieur à 1, en problème de Cauchy. Considérons donc une équation différentielle d’ordre m de
la forme suivante :

dx(m−1)  
x(m) (t) ≡ = φ t, x(t), x(1) (t), ...., x(m−1) (t) ∀t ∈ [t0 , t0 + T ] (4.2)
dt

Posons de nouvelles fonctions yi (t) avec i ∈ [1, 2, ..., m] définies telles que :

y1 (t) ≡ x(t), y2 (t) ≡ x(1) (t) , ..., ym (t) ≡ x(m−1) (t) (4.3)

Grâce à ces définitions, l’équation (4.2) d’ordre m s’écrit comme un système de m équations
d’ordre 1 :
dy1 (t)

= y (2) (t)



dt

..



.




dym−1 (t)
= y (m) (t)




 dt
y (t)


 m = φ (t, y1 (t), y2 (t), ..., ym (t))



dt
Ce système a donc la forme d’un problème de Cauchy en posant :

y1 (t) y2 (t)
   
 ..   .. 

.  
. 
y(t) =   
et f (t, y(t)) =  
ym (t)
  

 ym−1  




ym (t) φ(t, y1 , ..., ym )

L’equation (4.2) s’écrira alors :

dy(t)
= f (t, y(t)) ∀t ∈ [t0 , t0 + T ]
dt
By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 34
Cours : Application numérique avec MATLAB Coaching school

Pour obtenir alors un problème de Cauchy, il faut spécifierr les conditions initiales
(y1 (t0 ), y2 (t0 ), ...ym (t0 )) ce qui revient à dire d’après l’équation (4.3) qu’il faut connaître x(t) et
ses dérivées jusqu’à l’ordre m − 1 au ‘temps’ initial t0 :(x(t0 ), x(1) (t0 ), ..., x(m−1) (t0 )). On remarque
qu’une équation différentielle d’ordre m d’une seule fonction inconnue, x(t), se traduit par un
problème de Cauchy avec m fonctions inconnues, yi (t) et m conditions initiales.

2.2 Equations différentielles à coefficients constants


En particulier, les équations différentielles à coefficients constants consituent une classe d’équa-
tions de la forme de l’equation (4.2). Notamment quant φ est de la forme :
 
φ t, x(t), x(1) (t), ..., x(m−1) (t) = s(t) − a1 x(t) − a2 x(1) (t) − ... − am x(m−1) (t)

L’equation (4.2) s’écrit alors de la façon suivante :

a1 x(t) + a2 x(1) (t) + ... + am x(m−1) (t) + x(m) (t) = s(t) (4.4)

où la fonction s(t) est communément appelée un terme source.


Pour des équations de la forme de l’équation (4.4) les substitutions de l’équation (4.3) amènent
à un système d’équations de forme matricielle.
Par exemple, une équation à coefficients constants d’ordre 4 s’écrit :

a1 x(t) + a2 x(1) (t) + a3 x(2) (t) + a4 x(3) (t) + x(4) (t) = s(t)

Après substitution de l’équation (4.3) cette équation s’écrit :

d
a1 y1 (t) + a2 y2 (t) + a3 y3 (t) + a4 y4 (t) + y4 (t) = s(t)
dt
Et on déduit alors l’équation sous forme matricielle suivante :

y1 (t) 0 1 0 0 y1 (t) 0
      

y2 (t) 0 0 1 0 y2 (t) 0
      
d       
= +
      
y3 (t) 0 0 0 1 y3 (t) 0
    
dt 







 
 


y4 (t) −a1 −a2 −a3 −a4 y4 (t) s(t)

2.3 Exemple : Vol d’un point solide dans un champ de pesanteur


Imaginons qu’on cherche à résoudre numériquement le problème du mouvement d’un point
−−→
−−→ ⃗ →
− dOM
solide de masse m à la position OM = xi + y j + z k ayant une vitesse v =
⃗ ⃗ dans un champ
dt
de pesanteur ⃗g .
La mécanique du point nous dit qu’il suffit d’appliquer la relation fondamentale de la dynamique
au point solide :
d⃗v
m = P⃗ = m⃗g
dt
Puisqu’il s’agit d’une équation vectorielle, nous avons en principe trois équations scalaires à

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 35


Cours : Application numérique avec MATLAB Coaching school

résoudre, mais nous savons que le vol du point s’effectue dans un plan parallèle au plan défini
par (xOz). On arrive donc à un système de deux équations différentielles de deuxième ordre à
résoudre : 
d2 x
=0



 dt2



(4.5)
2
 d z = −g





dt2
Avec les conditions limites
x(t0 ) = x0 x(1) (t0 ) = v0,x
z(t0 ) = z0 z (1) (t0 ) = v0,z
Nous connaissons la solution exacte de chacune de ces deux équations :

x(t) = x0 + v0,x t
1
z(t) = z0 + vo,z t − gt2
2
Pour résoudre les équations différentielles d’ordre 2 de l’équation (4.5) on va définir des fonctions
du système u(t) (pour ne pas confondre avec la position y(t)) et invoquer les substitutions de
l’équation (4.3) :

u1 (t) ≡ x(t)

u2 (t) ≡ x(1) (t) = vx (t)


d2 x
L’équation = 0 devient donc le syqtème matriciel :
dt2
    
d  u1 (t)   0 1   u1 (t) 
=
dt u2 (t) 0 0 u2 (t)

De même, on peut définir :

u3 (t) ≡ z(t)

u4 (t) ≡ z (1) (t) = vz (t)


d2 z
Et le système = −g devient :
dt2
      
d  u3 (t)   0 1   u3 (t)   0 
= +
dt u4 (t) 0 0 u4 (t) −g

On peut regrouper ces deux équations sous la forme d’une seule grande équation matricielle :

u1 (t) 0 1 0 0 u1 (t) 0
      

u2 (t) 0 0 0 0 u2 (t) 0
      
du d       
≡  
=  
+
  
u3 (t) 0 0 0 1 u3 (t) 0
    
dt dt 







 
 


u4 (t) 0 0 0 0 u4 (t) −g

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 36


Cours : Application numérique avec MATLAB Coaching school

Ou de manière équivalente :

u2 (t)
 

0
 
du  
= f (t, u(t)) = 
 
u4 (t)

dt 



−g

La solution de cette équation va donc nous fournir les fonctions : x(t) = u1 (t), vx (t) = u2 (t),
z(t) = u3 (t) et vz (t) = u4 (t).
Pour résoudre numériquement cette équation différentielle, nous pouvons utiliser la fonction
‘ode45’ de MatLab. Cette fonction prend en argument le nom de la fonction f (t, u(t)), un vecteur
contenant les valeurs de t = [t0 , t1 , ..., tN ] pour lesquelles on veut connaître les valeurs de u(t),
[u(t0 ), u(t1 ), ..., u(tN )]. Pour certaines applications, on ne s’intéressera qu’à une seule et unique
valeur u(tN ) ; dans ce cas, on donne simplement un vecteur t = [t0 , tN ]. Dans les cas où il faut
connaître une trajectoire, il faut que t = [t0 , t1 , ..., tN ] contienne suffisamment d’éléments pour que
les courbes générées par ‘plot’ paraissent lisses.

APPLICATION
Ecrivons un script permettant de résoudre l’équation différentielle (4.5) avec les conditions ini-
tiales suivantes : x0 = z0 = 0, v0 ≡∥ →

v0 ∥= 100ms−1 , θ0 ≡ (x̂, →

v0 ) = 30° et montre la position de
la particule pour N+1=31 temps compris entre 0 et 11s.

tmin=0;
tmax=11;
v0=100;
deg=30;
x0=0;
z0=0;
vx0 = v0*cos(deg*pi/180) ;
vz0 = v0*sin(deg*pi/180) ;
Nint=30;
t=linspace(tmin,tmax,Nint+1);
u0=[x0 vx0 z0 vz0];
[t usol]=ode45(@fprojectile,t,u0);
xpos=usol(:,1);
zpos=usol(:,3);
plot(xpos,zpos,'o-b'),grid
function dudt=fprojectile(t,u)
n=length(u);
dudt=zeros(n,1);
dudt(1)=u(2);
dudt(2)=0;
dudt(3)=u(4);
dudt(4)=-9.8;
end

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 37


Cours : Application numérique avec MATLAB Coaching school

Le graphe résultant de la résolution de cette équation différentielle est le suivant :

2.4 Détermination des paramètres initiaux


Un des buts souvent recherchés lors des calculs différentiels est de déterminer où “d’optimiser”
les paramètres initiaux afin d’obtenir un certain comportement désiré de la solution. Par exemple,
dans le cas d’un projectile on pourrait s’intéresser au problème suivant : pour quel angle de
lancement le projectile ira-t-il le plus loin ? Dans ce cas, on pourrait donc écrire une fonction
simple qui trouve de façon approximative, le point d’atterrissage du point solide. Une telle fonction
peut comporter d’abord une boucle qui permet de trouver les deux instants entre lesquels le
projectile a dû toucher le sol. Plus précisément, la boucle chercherait l’instant tn où z(tn ) > 0 et
z(tn+1 = tn + h) < 0. On peut ensuite faire une approximation linéaire entre ces deux points, i.e.
on cherche à déterminer les coefficients a et b d’une fonction linéaire z(t) = at + b tels que :

zn ≡ z(tn ) = atn + b (4.6)

zn+1 ≡ z(tn+1 ) = atn+1 + b (4.7)

En faisant (4.7) - (4.6), on obtient :

zn+1 − zn = a(tn+1 − tn )

d’où on tire
zn+1 − zn
a=
(tn+1 − tn )

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 38


Cours : Application numérique avec MATLAB Coaching school

En remettant l’expression de a ci-dessus dans l’école dans l’équation (4.6), on obtient :

(zn+1 − zn )tn + b(tn+1 − tn )


zn =
(tn+1 − tn )

Ce qui donne après simplification :

zn tn+1 − tn zn+1
b=
tn+1 − tn

Le point d’atterrissage ta est donc le zéro de la fonction linéaire z(t) = at + b


C’est à dire
z(ta ) = ata + b = 0
b
=⇒ ta = −
a
zn tn+1 − tn zn+1
=⇒ ta =
(zn − zn+1 )
En génnéral la vitesse sur x n’est pas constante, et on peut faire une approximation linéaire sur
x(t) :
xn ≡ x(tn ) = ctn + d

xn+1 ≡ x(tn+1 + d)

Une approximation à la position horizontale (des x) au point d’atterrissage est maintenant :

xn+1 − xn xn tn+1 − tn xn+1


x(ta ) = ta +
(tn+1 − tn ) tn+1 − tn

Et le point d’atterrissage est : (ta , x(ta ), za = 0)

APPLICATION
Le script suivant permet de déterminer la position du point d’atterrissage. Les arguments étant
les vecteurs : t = [t0 , t1 , .., tn ], x = [x(t0 ), x(t1 ), ..., x(tn )] et z = [z(t0 ), z(t1 ), ..., z(tn )].
Il est à noter que le script suivant ne fonctionne de manière satisfaisante que si l’intervalle
∆ ≡ ti+1 − ti est suffisamment petit.
function [ta,xa,n]=point_atterrissage(t,x,z)
nc=length(t);
n=1;
while (z(n+1)>0 & n<nc)% Determine l'intervalle [n,n+1] dans lequel se trouve ta
n=n+1;
end
if (n~=nc)
ta=(z(n)*t(n+1)-t(n)*z(n+1))/(z(n)-z(n+1));
xa=ta*(x(n+1)-x(n))/(t(n+1)-t(n))+(t(n+1)*x(n)-t(n)*x(n+1))/(t(n+1)-t(n));
else
disp('Pas de point datterrissage dans les données')
end
end

By : FOKAM TAGNE YVAN e-mail : yvanfokam65@gmail.com 39

Vous aimerez peut-être aussi