Vous êtes sur la page 1sur 194

REPUBLIQUE DU BENIN

MINISTERE DE L'ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE

UNIVERSITE D'ABOMEY CALAVI

ECOLE POLYTECHNIQUE D’ABOMEY CALAVI (EPAC)

DEPARTEMENT DE GENIE MECANIQUE ET ENERGETIQUE

Année d’étude : GME 3

COURS :
INFORMATIQUE APPLIQUEE

Cours présenté et animé par :


ZINSALO Joël M.

Année Académique : 2012 - 2013


Tapez une équation ici.

PARTIE B : PROGRAMMATION EN MATLAB

Enseignant : ZINSALO Joël M./EPAC - UAC Page 2


Tapez une équation ici.

PLAN

Chapitre 1 : Présentation générale


Chapitre 2 : Systèmes d'équations linéaires
Chapitre 3 : Polynômes et interpolation polynomiale
chapitre 4 : Intégration numérique des fonctions
Chapitre 5 : Résolution numérique des équations différentielles et des équations
aux dérivées partielles

Résumé

Cette deuxième partie du cours INFORMATIQUE APPLIQUEE, est composée de cinq


chapitres.

Dans le premier chapitre, on fait la Présentation générale de la syntaxe du langage


et des différentes opérations élémentaires ainsi que les fonctions de bases utilisées
dans Matlab. Un petit résumé succinct à la fin de ce chapitre permet de maîtriser la
visualisation graphique.

Le second chapitre concerne le calcul vectoriel et matriciel. Dans ce chapitre, une


application à la résolution numérique des systèmes linéaires par la méthode du
pivot et les méthodes itératives est présentée.

Le troisième chapitre combine à la fois les opérations sur les polynômes et


l’interpolation ainsi que l’approximation au sens des moindres carrés dans Matlab.

Dans le quatrième chapitre, on étudie l’intégration numérique des fonctions dans


Matlab. Quelques exemples concrets permettent de maîtriser les méthodes
d’intégration numérique vues en cours.

Enfin, le dernier chapitre est consacré à l’utilisation de Matlab pour la résolution


des équations différentielles et des équations aux dérivées partielles.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 3


Tapez une équation ici.

CHAPITRE 1 :

PRESENTATION DE MATLAB

1. Introduction - Historique

MATLAB est une abréviation de Matrix LABoratory. Écrit à l’origine, en Fortran, par
C. Moler, MATLAB était destiné à faciliter l’accès au logiciel matriciel développé
dans les projets LINPACK et EISPACK. La version actuelle, écrite en C par the
MathWorks Inc., existe en version professionnelle et en version étudiant. Sa
disponibilité est assurée sur plusieurs plates-formes : Sun, Bull, HP, IBM,
compatibles PC (DOS, Unix ou Windows), Macintoch, iMac et plusieurs machines
parallèles.

MATLAB est un environnement puissant, complet et facile à utiliser destiné au


calcul scientifique. Il apporte aux ingénieurs, chercheurs et à tout scientifique un
système interactif intégrant calcul numérique et visualisation. C'est un
environnement performant, ouvert et programmable qui permet de remarquables
gains de productivité et de créativité.

MATLAB est un environnement complet, ouvert et extensible pour le calcul et la


visualisation. Il dispose de plusieurs centaines (voire milliers, selon les versions et
les modules optionnels autour du noyau Matlab) de fonctions mathématiques,
scientifiques et techniques. L'approche matricielle de MATLAB permet de traiter les
données sans aucune limitation de taille et de réaliser des calculs numériques et
symboliques de façon fiable et rapide. Grâce aux fonctions graphiques de MATLAB,
il devient très facile de modifier interactivement les différents paramètres des
graphiques pour les adapter selon nos souhaits.

L'approche ouverte de MATLAB permet de construire un outil sur mesure. On peut


inspecter le code source et les algorithmes des bibliothèques de fonctions
(Toolboxes), modifier des fonctions existantes et ajouter d’autres.

MATLAB possède son propre langage, intuitif et naturel qui permet des gains de
temps de CPU (Central Processing Unit) spectaculaires par rapport à des langages

Enseignant : ZINSALO Joël M./EPAC - UAC Page 4


Tapez une équation ici.

comme le C, le TurboPascal et le Fortran. Avec MATLAB, on peut faire des liaisons


de façon dynamique, à des programmes C ou Fortran, échanger des données avec
d'autres applications (via la DDE (Dynamic Data Exchange) : MATLAB serveur ou
client) ou utiliser MATLAB comme moteur d'analyse et de visualisation.

MATLAB comprend aussi un ensemble d'outils spécifiques à des domaines, appelés


Toolboxes (ou Boîtes à Outils). Indispensables à la plupart des utilisateurs, les
Boîtes à Outils sont des collections de fonctions qui étendent l'environnement
MATLAB pour résoudre des catégories spécifiques de problèmes. Les domaines
couverts sont très variés et comprennent notamment le traitement du signal,
l'automatique, l'identification de systèmes, les réseaux de neurones, la logique
floue, le calcul de structure, les statistiques, etc.

MATLAB fait également partie d'un ensemble d'outils intégrés dédiés au Traitement
du Signal. En complément du noyau de calcul MATLAB, l'environnement comprend
des modules optionnels qui sont parfaitement intégrés à l'ensemble :

1) une vaste gamme de bibliothèques de fonctions spécialisées (Toolboxes)


2) Simulink, un environnement puissant de modélisation basée sur les
schémas-blocs et de simulation de systèmes dynamiques linéaires et non
linéaires
3) Des bibliothèques de blocs Simulink spécialisés (Blocksets)
4) D'autres modules dont un Compilateur, un générateur de code C, un
accélérateur,...
5) Un ensemble d'outils intégrés dédiés au Traitement du Signal : le DSP
(Digital Signal Processing ) Workshop.

Quelles sont les particularités de MATLAB ?

MATLAB permet le travail interactif soit en mode commande, soit en mode


programmation ; tout en ayant toujours la possibilité de faire des visualisations
graphiques. Considéré comme un des meilleurs langages de programmations (C ou
Fortran), MATLAB possède les particularités suivantes par rapport à ces langages :

• la programmation facile,

Enseignant : ZINSALO Joël M./EPAC - UAC Page 5


Tapez une équation ici.

• la continuité parmi les valeurs entières, réelles et complexes,


• la gamme étendue des nombres et leurs précisions,
• la bibliothèque mathématique très compréhensible,
• l’outil graphique qui inclut les fonctions d’interface graphique et les utilitaires,
• la possibilité de liaison avec les autres langages classiques de
programmations (C ou Fortran).

Dans MATLAB, aucune déclaration n’est à effectuer sur les nombres. En effet, il
n'existe pas de distinction entre les nombres entiers, les nombres réels, les nombres
complexes et la simple ou double précision. Cette caractéristique rend le mode de
programmation très facile et très rapide. En Fortran par exemple, une subroutine
est presque nécessaire pour chaque variable simple ou double précision, entière,
réelle ou complexe. Dans MATLAB, aucune nécessité n’est demandée pour la
séparation de ces variables.

La bibliothèque des fonctions mathématiques dans MATLAB donne des analyses


mathématiques très simples. En effet, l’utilisateur peut exécuter dans le mode
commande n’importe quelle fonction mathématique se trouvant dans la bibliothèque
sans avoir à recourir à la programmation.

Pour l’interface graphique, des représentations scientifiques et même artistiques


des objets peuvent être créées sur l’écran en utilisant les expressions
mathématiques. Les graphiques sur MATLAB sont simples et attirent l’attention des
utilisateurs, vu les possibilités importantes offertes par ce logiciel.

MATLAB peut-il s’en passer de la nécessité de Fortran ou du C ?

La réponse est non. En effet, le Fortran ou le C sont des langages importants pour
les calculs de haute performance qui nécessitent une grande mémoire et un temps
de calcul très long. Sans compilateur, les calculs sur MATLAB sont relativement
lents par rapport au Fortran ou au C si les programmes comportent des boucles. Il
est donc conseillé d'éviter les boucles, surtout si celles-ci sont grandes.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 6


Tapez une équation ici.

2. Démarrage de MATLAB

Pour lancer l’exécution de MATLAB :

• sous Windows, il faut cliquer sur Démarrage, ensuite Programme, ensuite


MATLAB,
• sous d’autres systèmes, se référer au manuel d’installation.

L’invite ‘>>’ de MATLAB doit alors apparaître, à la suite duquel on entrera les
commandes.

La fonction "quit" permet de quitter MATLAB :

>>quit

La commande "help" permet de donner l’aide sur un problème donné.

Exemple :

>> help cos

COS Cosine.

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

Autres commandes :

• what : liste les fichiers *.m et *.mat dans le directory utilisé


• who : liste les variables utilisées dans l’espace courant
• ans : réponse retournée après exécution d’une commande

Exemple :

>>x=[1:5,1]
x=
123451

ou bien :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 7


Tapez une équation ici.

>>[1:5,1]
ans =
123451

clock : affiche l’année, le mois, le jour, l’heure, les minutes et les secondes.

>>clock
ans =
1.0e+003 *
1.9980 0.0100 0.0180 0.0170 0.0020 0.0098

>>date
ans =
09-Oct-2013

3. Calcul en mode Commande dans MATLAB :

Soit à calculer le volume suivant :

4
= ù = 4
3

Pour calculer V, on exécute les commandes suivantes :

>>R=4
R=
4

>>V=4/3*pi*R^3
V=
268.0826

(Ici, pi=π).

3.1. Opérateurs mathématiques

On a :

+ addition
- soustraction
* multiplication
/ division
^ puissance

Enseignant : ZINSALO Joël M./EPAC - UAC Page 8


Tapez une équation ici.

>> (2 + 5.2)*10 / (5^3)


ans =
0.5760
>> -2.52e3
ans =
-2520
>> 2*pi
ans =
6.2832

Exemple :

4 2 3
1
= 2, =

>>x=2
x=
2

>>P=(4*x^2-2*x+3)/(x^3+1)
P=
1.6667

Test ‘if’ Ce test s'emploie, souvent, dans la plupart des programmes. Un test
‘if’ est toujours suivi par un ‘end’.

Exemple :

>>V=268.0826
V=
268.0826

>>if V>150, surface=pi*R^2, end


surface =
50.2655

L’opérateur ‘NON’ Il est noté (ou symbolisé) par ‘~=’

Exemple :

>>R=4
R=
4

>>if R~=2, V=4/3*pi*R^3; end

Enseignant : ZINSALO Joël M./EPAC - UAC Page 9


Tapez une équation ici.

L’opérateur ‘égal’ (= =) dans ‘if’ Il est noté (ou symbolisé) par ‘= =’.

Exemple :

>>R=4
R=
4

>>if R==4, V=4/3*pi*R^3;end

L’opérateur ‘ou’ Il est noté (ou symbolisé) par ‘|’

Exemple : Si R=4 ou m=1, alors

4
3

>>if R==4 | m==1, V=4/3*pi*R^3;end

Autres opérateurs :

> supérieur à

< inférieur à

>= supérieur ou égal

<= inférieur ou égal.

> supérieur à .* produit élément par élément de matrices


< inférieur à .^ puissance élément par élément de matrices
>= supérieur ou égal ./ division élément par élément de matrices
<= inférieur ou égal xor OU exclusif (XOR)
Error affiche le message : 'error' message spécifié, émet un 'bip' et interrompt l'exécution du programme

Exemples :

Si g>2 ou g<0, alors a=4

>> if g>2 |g<0, a=4, end

Si a>3 et C<0, alors b=15

>>if a>3 & c<0, b=15, end

Les opérateurs ‘&’ et ‘|’ peuvent être utilisés dans la même chaîne :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 10


Tapez une équation ici.

>>if ((a==2 | b==3)&(c<5),g=1,end

L’opérateur ‘if…….else…….elseif…….end’:

Exemples :

>>R=2, if R>3, b=1 ; elseif R==3, b=2, else b=0, end

L’instruction ‘elseif’ peut être répétée dans un programme autant de fois.

format long e affiche 16 chiffres :


>> format long e
>> 2*pi
ans =
6.283185307179586e+000

format short (format par défaut) affiche 5 chiffres :


>> format short
>> 2*pi
ans =
6.2832

>> 1 / 0
Warning: Divide by zero
ans =
Inf
>> -1 / 0
Warning: Divide by zero
ans =
-Inf
>> 0 / 0
Warning: Divide by zero
ans =
NaN

3.2. Fonctions mathématiques


On a :
sin(X) sinus
asin(X) sinus inverse
cos(X) cosinus
acos(X) cosinus inverse
tan(X) tangente
atan(X) tangente inverse

Enseignant : ZINSALO Joël M./EPAC - UAC Page 11


Tapez une équation ici.

avec X : argument en radians.

exp(X) exponentielle
log(X) logarithme naturel (base e)
log10(X) logarithme décimal (base 10)
sqrt(X) racine carrée
abs(X) valeur absolue

>> sin(2)
ans =
0.9093

sinus (45°) :

>> sin(45*pi/180)
ans =
0.7071

>> 1 + exp(2.5)
ans =
13.1825

>> 5*3
ans =
15

>> ans+4
ans =
19

>> a= 2 + log(15)
a=
4.7081

>> b = - 45
b=
-45

>> a * b
ans =
-211.8623

Enseignant : ZINSALO Joël M./EPAC - UAC Page 12


Tapez une équation ici.

>> c = a - sqrt(abs(b))
c=
-2.0002

3.3. Variables et noms de variables :

Les variables et les noms de variables n’ont pas à être déclarés, car dans
MATLAB, il n’y a aucune distinction entre variable ‘entière’, variable ‘réelle’ ou
variable ‘complexe’.

Variables complexes :

Traditionnellement, en Fortran les variables i, j, k, l, m et n sont réservées aux


variables entières. Dans MATLAB, i et j sont réservées aux unités imaginaires ( √ 1 ou
√ 1 ). Mais, on peut également les utiliser comme d'autres variables (entières
ou réelles) si on les précise.

Dans le tableau ci-dessous, on dresse les noms de variables et les nombres


spéciaux utilisés par MATLAB :

Nom de la variable Signification Valeur


Eps précision relative des nombres réels (distance entre 1.0 et 2.2204.10-16
le nombre réel flottant le plus proche)
π
√ 1
Pi 3.14159………..
i et j unités imaginaires
Inf nombre infini (1/0=inf)
NAN ce n’est pas un nombre : 0/0=NAN
date Date
nargin nombre d’arguments d'appel transmis à une fonction
flops compteur opérations en virgule flottante
nargout nombre d’arguments de retour demandés à une fonction

Opérateurs ‘for/end’ et ‘while/end’

Exemples :

>>for R=1:5, V=4/3*pi*R^3; disp([R,V]), end

Enseignant : ZINSALO Joël M./EPAC - UAC Page 13


Tapez une équation ici.

Dans ce cas, R varie de 1 à 5, et la commande "disp([R,V])" retourne la matrice suivante :


[R=1:5,V (V(1) :V(5)]

On peut définir également l’instruction ‘length’ qui représente la taille de la


variable. En effet, dans ce cas, on a :

length(R)=5 ; (R=1:5) et length(R)-1=4 (4 intervalles de pas 1).

>>while R<5, R=R+1; V=4/3*pi*R^3; disp([R,V]), end

while exécute l’instruction qui suit tant que le test logique est vrai.

Exemple de pas dans la boucle for :

>>for R=5 :-1 :1, V=4/3*pi*R^3; disp([R,V]), end

Ici, le pas utilisé est dégressif (=-1). On peut utiliser les imbrications de ‘for’ autant
de fois que l’on souhaite.

Exemple :

>> for i=0 :10, for j=1 :5, V=4/3*pi*R^3;disp([R,V]);end, end

* format :

>>format affiche les résultats avec 4 chiffres après la virgule.

>>format long affiche les résultats avec 16 chiffres après la virgule.

* break :

Interrompre l’exécution d’un ‘for’ ou d’un ‘while’

* goto :

Dans MATLAB l’instruction ‘goto’ est remplacée par ‘break’.

Exemple :

while R==1
.
.
.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 14


Tapez une équation ici.

if x>Xlimite, break, end


.
.
.
.
end

* clear :

Efface toutes les variables existantes en mémoire

* clc :

Efface l’écran (fenêtre) de MATLAB

* input(' ') :

Introduire une ou des variables par l’intermédiaire du clavier.

Exemple :

>>z=input(‘Longueur L=’);

retourne :
Longueur L=

>>y=input(‘Introduire votre nom’,’s’);

Le second argument indique que la variable à introduire peut être un (ou des)
caractère(s).

* fprintf(' ')

format de sortie sur écran

Exemples :

1. fprintf(‘La longueur L=%f\n’,L)

Dans cette chaîne, on a :

% pour la sortie de la variable,


f format de sortie

Enseignant : ZINSALO Joël M./EPAC - UAC Page 15


Tapez une équation ici.

\n retour à la ligne
L variable.

2. fprintf(‘La longueur L= %e%f\n’,L)

le résultat affiché est avec des puissances de 10 (exemple : 2.5e04)

3. fprintf(‘Nom_fichier’,’Volume= %e%12.5f\n’,V)

écrit la valeur = variable V dans un fichier Nom_fichier.


la variable V est avec 5 chiffres après la virgule.

Pour l’ouverture et la fermeture des fichiers, on peut utiliser également ‘fopen’ et


‘fclose’. Ainsi, on peut joindre à l’ouverture de fichier par exemple, la permission
d’ouvrir uniquement, de lire uniquement, de lire et écrire, etc.

Exemple :

>>fich=fopen(‘Nom_fichier’,’ ?’)

? représente la permission :
‘w’ écriture : créer si nécessaire,

‘r’ lecture uniquement (pas de création),

‘+r’ lecture et écriture.

Ecriture d’un fichier ou de variables dans un fichier :

Ouvrir tout d’abord le fichier :

>>fich=fopen(‘Nom_fichier’,’ r’) ; y=fscanf(fich,’%f’)

La variable y est maintenant égale à la (ou les) variable(s) de fich.

Produit factoriel :

La fonction ‘gamma’ donne le produit factoriel d’un nombre n.


Exemple : pour n=6, on a : 6!=6*5*4*3*2*1=720

>>factorielle=gamma(6+1)
factorielle =
720

Enseignant : ZINSALO Joël M./EPAC - UAC Page 16


Tapez une équation ici.

La fonction ‘gamma’ peut calculer la factorielle des nombres entiers et même des
nombres réels.

3.4. Utilisation de nombres ou de variables complexes :

MATLAB, peut utiliser et gérer les variables ou les nombres complexes. La plupart
des fonctions implicites définies pour les réels existent pour les complexes, y
compris la puissance.

• Fonctions :

I imaginaire pur
J imaginaire pur
conj(X) conjugué du nombre
complexe X
real(X) partie réelle
imag(X) partie imaginaire
abs(X) Module
angle(X) argument (en radians)

• Exemples :
>> (4 - 2.5i)*(-2 + i)/(1 + i)
ans =
1.7500 + 7.2500i
>> a = 1 + i
a=
1.0000 + 1.0000i
>> b = -2 + 3.5j
b=
-2.0000 + 3.5000i
>> a + b
ans =
-1.0000 + 4.5000i
>> a * b
ans =
-5.5000 + 1.5000i
>> a / b
ans =
0.0923 - 0.3385i
>> conj(a)
ans =

Enseignant : ZINSALO Joël M./EPAC - UAC Page 17


Tapez une équation ici.

1.0000 - 1.0000i
>> a * conj(a)
ans =
2
>> real(a)
ans =
1
>> imag(conj(a))
ans =
-1
>> abs(a)
ans =
1.4142
>> angle(a)
ans =
0.7854

sqrt : fonction racine carrée


>> c = 2 - sqrt(3)*i
c=
2.0000 - 1.7321i
>> abs(c)
ans =
2.6458
>> angle(c)
ans =
-0.7137

Argument en degrés :
>> angle(c)*180/pi
ans =
-40.8934

Exemple :

>>z=3.5-1.25i ;

>>log(z)
ans =
1.3128 - 0.3430i

>>cos(2-i)
ans =
-0.6421 + 1.0686i

L’imaginaire pur est noté par i ou j. Ainsi, i2 ou j2 donne :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 18


Tapez une équation ici.

>>i^2
ans =
-1.0000 + 0.0000i

Soit z un nombre complexe. Son conjugué est donné par la fonction ‘conj(z)’.

>>z=3.5-1.25i
z=
3.5000 - 1.2500i

>>conj(z)
ans =
3.5000 + 1.2500i

Opérations sur les nombres complexes :

1. Addition de nombres complexes :

>>z1
z1 =
3.5000 - 1.2500i

>>z2
z2 =
1.3140 - 0.0948i

>>z1+z2
ans =
4.8140 - 1.3448i

2. Soustraction de nombres complexes :

>>z1-z2
ans =
2.186 - 1.1552i

3. Multiplication de nombres complexes :

>>z1*z2
ans =
4.4805 - 1.9743i

4. Division de nombres complexes :

>>z1/z2
ans =
2.7181 - 0.7551i

5. Opération de puissance :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 19


Tapez une équation ici.

>>z1^z2
ans =
4.5587 - 2.9557i

5. Module et argument d’un nombre complexe :

Dans MATLAB, les fonctions ‘abs’ et ‘angle’ permettent l’obtention directe du


module et de l’argument d’un nombre complexe.

Exemple :

>>r=abs(z1)
r=
3.7165

>>theta=angle(z1)
theta =
-0.3430

L’angle theta est en radians.

Il est possible d’utiliser la notation exponentielle.

Exemple :

>>Z=exp(z1)

Z=
10.4420 -31.4261i

Comme on peut définir des tableaux ou des matrices de réels, il est aussi possible
de définir des tableaux ou de matrices complexes avec MATLAB.

Exemples :

>>Z=[1+2i 0 z1;1 z2 z1+z2;z1*z2 z1-z2 z1/z2]

Z=
1.0000 + 2.0000i 0 3.5000 - 1.2500i
1.0000 1.3140 - 0.0948i 4.8140 - 1.3448i
4.4805 - 1.9744i 2.1860 - 1.1552i 2.7181 - 0.7551i

On peut également faire des opérations arithmétiques sur les matrices :

>>A=Z^(-1)
A=
0.2279 - 0.1872i -0.2475 + 0.1665i 0.1564 - 0.0282i

Enseignant : ZINSALO Joël M./EPAC - UAC Page 20


Tapez une équation ici.

-0.6237 + 0.3429i 0.4146 - 0.4741i 0.0537 + 0.3314i


0.1251 - 0.0321i 0.1174 + 0.1358i -0.0282 - 0.0914i

>>A*Z
ans =
1.0000 + 0.0000i -0.0000 + 0.0000i -0.0000 + 0.0000i
0.0000 1.0000 - 0.0000i 0.0000 - 0.0000i
-0.0000 - 0.0000i 0.0000 - 0.0000i 1.0000 + 0.0000i

>>A/Z
ans =
0.1328 - 0.2826i -0.0267 + 0.2886i -0.0451 - 0.1223i
-0.1566 + 0.6725i 0.0057 - 0.5356i 0.1202 + 0.1689i
-0.1037 - 0.0857i 0.0965 + 0.0148i -0.0276 + 0.0428i

Déclarations et affectations des variables :

fprintf(‘caractère : %c\n’,c) ; c=’#’

fprintf(‘entier: %d\n’,i) ; i=1, 2, 3, … , n des entiers

fprintf(‘flottant: %f\n’,f) ; ⁄√ par exemple (si ≥ 0)

fprintf(‘flottant: %s\n’,s) ; s : la valur peut être la plus petite que


posssible.
Il existe également d’autres types Exemple : s=1.35e-17.
d’affectations. Ces dernières sont analogues
à celles du langage ‘C’.

Arrangement de variables :

Une matrice d’ordre 0 est un scalaire. Une matrice d’ordre 1 est un vecteur. Ce
vecteur peut être un vecteur ligne ou un vecteur colonne.

Exemples :

>>x=[0,1,2,3] retourne un vecteur ligne :


x =0 1 2 3

ou encore :

>>x=[0 1 2 3] retourne aussi un vecteur ligne.

x(2)=1 par exemple.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 21


Tapez une équation ici.

>>x=[0 ;1 ;2 ;3] retourne un vecteur colonne.


x=
0
1
2
3

>>x=[0 ;1 ;2 ;3]’ retourne un vecteur ligne.

>>x=[0 1 2 3]’ retourne un vecteur colonne. x(1)=0, x(2)=1, x(4)=3.

3.5. Calcul matriciel

• Fonctions :

+ addition de matrices
- soustraction de matrices
* produit de matrices

matrice unité (matrice identité) de taille n × n


^ puissance
eye (n)
inv (X) inverse de la matrice carrée X
rank (X) rang de la matrice X (nombre de colonnes ou de lignes
indépendantes)
det (X) déterminant de la matrice carrée X
X' transposée de la matrice X
/ division à droite : A / B est équivalent à A * inv(B)
\ division à gauche : A \ B est équivalent à inv(A) * B

• Exemples :

Saisie d'une matrice carrée de taille 3 x 3 :

>> A = [ 2 4 5 ; 1 5 7 ; -3 3 1]
A=
245
157
-3 3 1

Enseignant : ZINSALO Joël M./EPAC - UAC Page 22


Tapez une équation ici.

>> A(2 , 3)
ans =
7

>> A(2 , 3) = 6
A=
245
156
-3 3 1

>> A'
ans =
2 1 -3
453
561

>> inv(A)
ans =
1.0833 -0.9167 0.0833
1.5833 -1.4167 0.5833
-1.5000 1.5000 -0.5000

>> D = A * inv(A)
D=
1.0000 0.0000 0.0000
0.0000 1.0000 0.0000
0.0000 0.0000 1.0000

>> rank(A)
ans =
3

>> det(A)
ans =
-12

>> eye(7)
ans =
1 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 1 0 0
0 0 0 0 0 1 0
0 0 0 0 0 0 1
>> B = [ 1 1 0 ; 1 0 1 ; 0 1 1 ]

Enseignant : ZINSALO Joël M./EPAC - UAC Page 23


Tapez une équation ici.

B=
110
101
011

>> A + B
ans =
355
257
-3 4 2

>> 2 + A
ans =
467
378
-1 5 3

>> 2 * A
ans =
4 8 10
2 10 12
-6 6 2

>> A * B
ans =
679
6 7 11
0 -2 4

>> B * A
ans =
3 9 11
-1 7 6
-2 8 7

>> A*A*A
ans =
-88 304 262
-98 314 268
-18 18 10

Enseignant : ZINSALO Joël M./EPAC - UAC Page 24


Tapez une équation ici.

>> A^3
ans =
-88 304 262
-98 314 268
-18 18 10

Saisie d'une matrice à coefficients complexes de taille 2 x 3 :


>> C = [ 1 + i 0 0 ; 1 - i i 2]
C=
1.0000 + 1.0000i 0 0
1.0000 - 1.0000i 0 + 1.0000i 2.0000

>> C * A
ans =
2.0000 + 2.0000i 4.0000 + 4.0000i 5.0000 + 5.0000i
-4.0000 - 1.0000i 10.0000 + 1.0000i 7.0000 + 1.0000i

Remarque :

Dans MATLAB, les numéros de lignes ou de colonnes commencent toujours par


1 et non par zéro comme c’est le cas dans les autres langages de programmation.
Exemple : x(0) n’existe pas.

Matrice d’ordre supérieur à 1 :

Une matrice d’ordre supérieur à 1 est une matrice à deux dimensions. Exemple :
x(i,j).

Exemples :

>>x=[0 :2 ;4 :6] retourne :


x=
012
456

C’est une matrice à 2 lignes et 3 colonnes.

>>y=[0 :2 ;4 :6]’ retourne la matrice transposée :


y=
04
15
26

Enseignant : ZINSALO Joël M./EPAC - UAC Page 25


Tapez une équation ici.

La taille de la matrice y est donnée par la fonction ‘size(y)’ :


>>size(y)
ans =
32
La réponse est : 3 lignes et 2 colonnes.
La colonne j de la matrice x est donnée par : y(:,j)  pour j=2, on a :
y(:,2)=
4
5
6
La ligne i de la matrice x est donnée par : y(i,:)  pour i=2, on a :
y(2,:)=
5

Pour une matrice carrée A d’ordre n, on a sa matrice identité qui est donnée par
la fonction ‘eye’.

Exemple : pour n=3, on a :

>>A
A=
123
456
678

>>eye(size(A))
ans =
100
010
001

eye(size(A)) donne la matrice identité de même ordre que celle de A.

Aspect des nombres dans MATLAB :

Dans MATLAB, il n’existe aucune distinction entre les nombres entiers, les
nombres réels ou les nombres complexes. Les nombres sont donc traités
automatiquement. La précision des calculs est affectée par le nombre de variables
enregistrées et traitées.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 26


Tapez une équation ici.

Les paramètres essentiels qui déterminent cette précision dans un langage de


programmation sont :

• le plus petit nombre positif : x_min


• le plus grand nombre positif : x_max
• l’erreur de la machine (epsilon) : eps

Le tableau ci-dessous donne une comparaison des différents paramètres obtenus


par le langage Fortran et MATLAB :

Précision du langage MATLAB Fortran sur station Fortran (Cray)

(sur station) Simple (double)


x_min 4.5e-324 2.9e-39 (même) 4.6e-2476
x_max 9.9e+307 1.7e+38 (même) 5.4e+2465
eps 2.2ee-16 1.2e-7 (2.8e-17) 1.3e-29

Dans MATLAB, l’infini est représenté par ‘inf’ (= ). Si on exécute la commande


x=1/inf, la réponse sera ‘NAN’ c’est à dire : ‘Not A Number’.

Pour chercher x_min, x_max et eps, on peut utiliser les programmes suivants :

Cherche de x_min :
% Recherche de x_min
x=1 ; while x>0, x=x/2, end

Cherche de x_max :
% Recherche de de x_max
x=1 ; while x<inf, x= x*2, end

Cherche de eps :
% Recherche de de eps
x=1 ; while x>0, x=x/2 ; ex=0.98*x+1,ex=ex-1, if ex>0,ex ;end,end

Enseignant : ZINSALO Joël M./EPAC - UAC Page 27


Tapez une équation ici.

Fonctions Mathématiques dans MATLAB :

Fonctions trigonométriques Remarques


sin(x)
cos(x)
tan(x)
asin(x)
acos(x)
atan(x)
atan2(x,y) :
sinh(x)
cosh(x)
tanh(x)
asinh(x)
acosh(x)
atanh(x)
Autres fonctions mathématiques Remarques
(élémentaires)
abs(x) Valeur absolue de x

é
angle(x) Valeur complexe de l’angle de phase :
Si angle = 0

Si √ 1 angle = π/2
sqrt(x) Racine carrée de x
real(x) Partie réelle de la valeur complexe de x
imag(x) Partie imaginaire de la valeur complexe de x
conj(x) Complexe conjugué de x
round(x) Arrondi entier de x

Arrondi au voisinage de ∞ du réel x


fix(x) Arrondi par défaut du réel x

Arrondi au voisinage de ∞ du réel x


floor(x)
ceil(x)
sign(x) =+1 six>0 ; =-1 si x<0
rem(x,y) Le reste de la division : = x-y*fix(x/y)
exp(x) Exponentielle (de base e)
log(x) Log (de base e)
log10(x) log (de base 10)

Autres fonctions :

Soit x=[2 15 0] une matrice ligne (vecteur ligne)

sort(x) donne une matrice ligne dont les éléments sont en ordre croissant :

>>sort(x)
ans =
0 2 15

sort(x’) donne une matrice colonne dont les éléments sont en ordre croissant :
Enseignant : ZINSALO Joël M./EPAC - UAC Page 28
Tapez une équation ici.

>>sort(x’)
ans =
0
2
15

sum(x) calcule la somme des éléments de la matrice x.

>>sum(x)
ans =
17

>>sum([4 2 1 0;8 9 3 12])


ans =
12 11 4 12

Pour trouver le maximum et le minimum du vecteur x, on utilise les fonctions max(x) et min(x) :

>>max(x)
ans =
15

>>min(x)
ans =
0

pour une matrice y quelconque, le max(y) et min(y) donnent :

>>y
y=
4210
8 9 3 12

>>max(y)
ans =
8 9 3 12

>>min(y)
ans =
4210

Pour trouver la valeur moyenne d’un vecteur de la matrice x par exemple, on


utilise la fonction ‘mean(x,i)’ où i est le numéro de la colonne :

Exemple : si

0 1 2
" $
3 4 5

Enseignant : ZINSALO Joël M./EPAC - UAC Page 29


Tapez une équation ici.

Alors mean(x,1) est :

>>mean(x,1)
ans =
1.5000 2.5000 3.5000

et mean(x,2) est :

>>mean(x,2)
ans =
14

* Nombres aléatoires :

Les nombres aléatoires peuvent être générés par la fonction ‘rand’. Son
expression est ‘rand(n)’ où n est le rang de la matrice. Si n=3 par exemple, rand(3)
va générer 3 lignes et 3 colonnes de la matrice dont les coefficients sont aléatoires
et compris entre 0 et 1.

Exemple :

>> rand(3)
ans =
0.4154 0.0150 0.9901
0.3050 0.7680 0.7889
0.8744 0.9708 0.4387

On peut donner à la variable z une initialisation dans un programme. Pour cela,


on peut générer des valeurs aléatoires grâce à la fonction ‘seed’ (c’est à dire
ensemencer) rand(‘seed’,z)

Enseignant : ZINSALO Joël M./EPAC - UAC Page 30


Tapez une équation ici.

3.6. Résolution d'un système d'équations linéaires

• Fonction :

division à gauche de matrices


\
A \ B est équivalent à : inv(A)*B

• Exemple n°1 :

Soit à résoudre un système de 3 équations à 3 inconnues x1, x2 et x3 :

3 &+2 + = 4
%− &+5 + 2 = −1
4 &−2 + 3 = 3

On saisit les différents coefficients dans une matrice 3 x 3 :

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

On complète avec un vecteur colonne 3 x 1 :

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

La solution est donnée sous la forme d'un vecteur colonne :

>> A \ B
ans =
1.3279
0.2951
-0.5738

Enseignant : ZINSALO Joël M./EPAC - UAC Page 31


Tapez une équation ici.

Autre méthode :

>> inv(A) * B
ans =
1.3279
0.2951
-0.5738

>> format long e

>> A \ B
ans =
1.327868852459016e+000
2.950819672131148e-001
-5.737704918032788e-001

>> X = A \ B

X=
1.327868852459016e+000
2.950819672131148e-001
-5.737704918032788e-001

>> X(1)
ans =
1.327868852459016e+000

>> X(2)
ans =
2.950819672131148e-001

>> X(3)
ans =
-5.737704918032788e-001

Vérification :
>> 3*X(1) + 2*X(2) + X(3)
ans =
4

Enseignant : ZINSALO Joël M./EPAC - UAC Page 32


Tapez une équation ici.

>> -X(1) + 5*X(2) + 2*X(3)


ans =
-9.999999999999998e-001
>> 4*X(1) -2*X(2) + 3*X(3)
ans =
3.000000000000000e+000

• Exemple n°2 :

Soit le système d'équations paramétriques :

− &+2 + = '&
%− &+ +2 = '
&−2 + = '

On cherche à exprimer x1, x2 et x3 en fonction de b1, b2 et b3 :

>> A = [ -1 2 1 ; -1 1 2 ; 1 -2 1 ]
A=
-1 2 1
-1 1 2
1 -2 1

>> inv(A)
ans =
2.5000 -2.0000 1.5000
1.5000 -1.0000 0.5000
0.5000 0 0.5000

>> format rational


>> inv(A)
ans =
5/2 -2 3/2
3/2 -1 1/2
1/2 0 1/2

Enseignant : ZINSALO Joël M./EPAC - UAC Page 33


Tapez une équation ici.

>> format short

>> inv(A)
ans =
2.5000 -2.0000 1.5000
1.5000 -1.0000 0.5000
0.5000 0 0.5000

5 3
Finalement, on trouve :
+ = '& − 2' + '
)
&
2 2
3 1
= '& − ' + '
* 2 2
) 1 1
( = '& + '
2 2

3.7. Matlab - Création du fichier .m d’une fonction

• Fonction :

function

• Exemple

Soit la fonction :

2
,=-. +2 +
+1

a) Commencez pour ouvrir un éditeur de texte :


Dans la fenêtre de commande de Matlab :
File -> New -> M-file
Avec la version 4.2. l'éditeur de texte par défaut est l'application "Bloc-
notes".
Avec la version 6.5. l'éditeur de texte par défaut est l'application "M-File
Editor".

Enseignant : ZINSALO Joël M./EPAC - UAC Page 34


Tapez une équation ici.

b) Donnez un nom à cette fonction (dans cet exemple fonc) et saisissez son
expression mathématique :

Attention : il faut mettre un point devant les opérateurs multiplication, division


et puissance :

.*
./
.^

c) Sauvegardez le fichier dans votre répertoire de travail (par exemple c:\USERS)

Nom : fonc
Extension : .m

d) Ajoutez le chemin du répertoire où se trouve votre fichier fonc.m

Avec la version 4.2. :

>> path(path,'c:\USERS')

Avec la version 6.5. :


File -> Set Path -> Add Folder
-> Save -> Close

Remarque : Vous pouvez utiliser n'importe quel nom pour les variables.

Le fichier suivant donne le même résultat :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 35


Tapez une équation ici.

• Evaluation d'une fonction

Calcul de y ( x = 0 ) :

>> fonc(0)

ans =

Calcul de y ( x = 5 ) :

>> fonc(5)

ans =

10.2010

>> fonc(-1)

Warning: Divide by zero

ans =

Inf

Avec en argument un vecteur, la fonction retourne un vecteur :

>> fonc( [0 1 2 3 4 5] )

ans =

2.0000 3.8415 3.9099 6.9121 8.1121 10.2010

>> x = 0 : 5

x=
012345

>> y = fonc(x)

y=
2.0000 3.8415 3.9099 6.9121 8.1121 10.2010

Avec en argument une matrice, la fonction retourne une matrice :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 36


Tapez une équation ici.

>> fonc( [ 1 2 3 ; 4 5 6] )
ans =
3.8415 3.9099 6.9121
8.1121 10.2010 11.2939

3.8. Matlab - Création du fichier .m d'une fonction définie par morceaux

• Exemple :

Soit la fonction y = f(x) :

= 0, / 0
+
) = , 0 0 /1
2
* 1
) , ≥ 1
( 2

Le fichier f5.m associé à cette fonction s'écrit :

>> f5 (0)
ans =
0

>> f5 (1)
ans =
0.5000

>>f5 (-10)
ans =
0

Enseignant : ZINSALO Joël M./EPAC - UAC Page 37


Tapez une équation ici.

>> f5 (3)
ans =
0.0556

>> fplot ( 'f5' , [ -2 4 ] )

>> grid on

3.9. Écriture de fonctions personnelles :

Dans MATLAB, les programmes qui sont sauvegardés comme des fichiers_.m sont
équivalentes à des sous-programmes et des fonctions dans d’autres langages.

Fonction retournant une seule variable :

Exemple :

2 +7 +3 +1
=
− 3 + 5 23

Supposons que le programme MATLAB correspondant est sauvegardé sous le


nom demof_.m. ce programme est le suivant :

function y=demof_(x)
y=(2*x.^3+7*x.^2+3*x-1)/(x.^2-3*x+5*exp(-x)) ;

Pour déterminer f(x=3) par exemple, il suffit d’exécuter la commande :


"y=demof_(3), et la réponse sera :

>>y=
502.1384

* Fonction retournant plusieurs variables :

Une fonction peut retourner plus qu’une variable. Considérons la fonction qui
permet d’évaluer la moyenne et l’écart type de données.

Pour retourner les 2 variables, un vecteur est utilisé du côté gauche de la


fonction, comme l’illustre le cas suivant :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 38


Tapez une équation ici.

function [mean, stdv]=mean_st(x)


n=length (x) ;
mean=sum(x)/n ;
stdv=sqrt(sum(x.^2)/n-mean.^2) ;

Exemple :

>>x=[1 5 3 4 6 5 8 9 2 4];
>>[m,s]=mean_st(x)

La réponse est : m=4.7000 et s=2.3685

* Fonction pouvant utiliser une autre :

Exemple :

6 +2 ' +
=
45
4

Le sous programme de la fonction 45 est donné ci-dessous :

function wa=f_av(f_nom,a,b,c)
wa=(feval(f_nom,a)+2*feval(f_nom,b)+feval(f_nom,c))/4 ;
où f_nom est le nom de la fonction f(x).

la fonction ‘feval’ est une commande de MATLAB qui évalue la fonction de nom
f_nom et d’argument x. Exemple : y=feval(‘sin’,x) est équivalente à y=sin(x).

3.10. Écriture d’un programme MATLAB :

En MATLAB, les programmes se terminent par une extension ‘.m’ dans le nom du
fichier programme. Aucune compilation n’est à faire avant l’exécution du
programme. Au cours de l’exécution, un message d’erreur apparaît et indique les
lieux où se trouvent les erreurs.
Pour lancer l’exécution du programme, il faut se mettre toujours dans le même
répertoire où se trouve ce programme.
Exemple : ce dernier se trouve dans c:\utilisateur ; il faut changer tout d’abord de
répertoire après avoir lancé MATLAB en tapant : "cd c:\utilisateur"
Les fichiers de données sont enregistrés avec une extension ‘.mat’ et les variables
sont enregistrées en double précision.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 39


Tapez une équation ici.

4. Génération de graphique avec MATLAB

MATLAB est un outil très puissant et très convivial pour la gestion des
graphiques, que ce soit en une dimension, en deux dimensions ou en trois
dimensions. Pour tracer une courbe y=sin(x) par exemple, où x=0 :50 ; il suffit de
faire :

>>x=0:50;y=sin(x);plot(x,y)

Ci-dessous, un petit résumé très succinct est donné pour tracer, concernant le
traçage des graphiques et la manipulation des axes et des échelles :

• xlabel(‘temps’) pour donner un titre à l’axe x,


• ylabel(‘vitesse’) pour donner un titre à l’axe y,

2

text(2,4,’+++Température T1’) au point 7 " $ , écrire la légende de la courbe tracée
title(‘évolution de la vitesse’) pour donner un titre au graphique,

4

avec "+++",
• loglog(x,y) tracer la courbe en échelle logarithmique (log-log),
• semilogx(t,f(t)) tracer la courbe seulement en échelle logarithmique suivant x,
• semilogy(t,f(t)) tracer la courbe seulement en échelle logarithmique suivant y,
• grid on afficher le quadrillage dans le graphique,
• grid off masquer le quadrillage dans le graphique,
• clf effacer le graphique,
• close figure(i) fermer (ou quitter) la figure (i),
• close all fermer tous les graphiques ouverts,
• plot(x,y,x,z,x,w) tracer y, z et w en fonction de x sur le même graphe,
• polar(x,y) tracer la courbe y en fonction de x en coordonnées polaires,
• plot(x,y,’+g’) tracer y en fonction de x avec des marques ‘+’ en couleur verte,
• fplot(‘f_nom’,[x-mini, x-maxi]) tracer la fonction f_nom selon les axes données (x),
• axis(‘square’) tracer un graphe géométriquement carré,
• axis(‘off’) masque les axes x et y,
• axis(‘on’) affiche les axes x et y,
• axis([x-mini, x-maxi, y-mini,y-maxi]) affiche le graphique selon les limites données des
axes x et y,
• hold(‘on’) traçage des courbes sur le même graphique à chaque fois qu’on exécute la
fonction plot,
• hold(‘off’) traçage de chaque courbe sur un nouveau graphique à chaque fois qu’on
exécute la fonction plot,
• plot3(x,y,z) tracer z en fonction de x et de y en 3D,
• la fonction ‘meshgrid’ est utilisée pour créer un maillage 2D (x,y) ; si on se donne
xa=[… : …] et ya=[… : …], ceci est très important sont des valeurs complexes
[x,y]=meshgrid(xa,ya),

• mesh(xa,ya,z) tracer le graphique en 3D de z,

Enseignant : ZINSALO Joël M./EPAC - UAC Page 40


Tapez une équation ici.

:
quiver(x,y,u,v,s) tracer le champ vectoriel 89 " $ dans le plan (x,y) où ‘s’ est la taille de
;

base à donner aux vecteurs,
• contour(x,y,z,’niveau’) tracer les lignes iso-valeurs de z dans le plan (x,y) où le niveau
représente le nombre de lignes iso-courbes.

Exemple : x=0 :50 ; y=sin(x) ; z=cos(y) +4*x ; contour(x,y,z,40) on obtient 40 iso-courbes.

2
écrire sur le graphique au point 7 " $
0
• text(2,0,’a-b’,’FontName’,’symbol’)

α-β, (a-b en police symbol),

• subpot(m,n,k) tracer mxn graphiques séparés dans la feuille, où k est le numéro de chaque
graphiques. Exemple :

x=0 :25 ;y=x ;


subplot(2,2,1),plot(x,y) ;ylabel(‘y’) ;title(‘(2,2,1)’) ;
subplot(2,2,2),plot(x,2*y) ;ylabel(‘y’) ;title(‘(2,2,2)’) ;
subplot(2,2,3),plot(x,3*y) ; ;xlabel(‘x’) ;ylabel(‘y’) ;title(‘(2,2,3)’) ;
subplot(2,2,4),plot(x,4*y) ; ;xlabel(‘x’) ;ylabel(‘y’) ;title(‘(2,2,4)’) ;

Enseignant : ZINSALO Joël M./EPAC - UAC Page 41


Tapez une équation ici.

4.1. Graphe d’une fonction à une variable y = f (x)

• Fonctions

fplot trace point par point le graphe d'une fonction


grid ajoute une grille
xlabel ajoute une légende pour l'axe des abscisses
ylabel ajoute une légende pour l'axe des ordonnées
title ajoute un titre
axis modifie les échelles des axes
zoom effectue un zoom
gtext place une légende avec la souris
hold ajoute un graphe dans la fenêtre courante
figure crée une nouvelle fenêtre

• Première méthode :

On veut tracer le graphe de la fonction :

>> fplot('1+ 2*x + sin(x*x)', [ 1 5 ])

Remarque : la variable doit nécessairement s'appeler x

>> fplot('1+ 2*x + sin(x*x)', [ 2 3 2 10 ])

>> grid on

>> grid off

>> xlabel('axe des abscisses')

>> ylabel('axe des ordonnées')

>> title('y=f(x)')

Enseignant : ZINSALO Joël M./EPAC - UAC Page 42


Tapez une équation ici.

>> zoom on

click droit : zoom arrière

click gauche : zoom avant

click gauche et glissé : zoom d’une zone

>> zoom off

Pour tracer plusieurs graphes dans la même fenêtre :

>> fplot('[1+ 2*x + sin(x*x) , 1+ 2*x - sin(x*x) ]', [ -2 2.5 ])

>> gtext('fonction 1')

>> gtext('fonction 2')

• Deuxième méthode :

cos 3 sin 5
,= = sin +
2 5

Nous allons créer le fichier .m de la fonction :

>> fplot('f2', [ 0 10])

>> hold on

>> fplot('sin(x) ', [ 0 10 ] ,'b')

>> hold off

>> [X Y] = fplot ( 'sin(x) ' , [ 0 10 ] )

Enseignant : ZINSALO Joël M./EPAC - UAC Page 43


Tapez une équation ici.

X=
0
0.0200
0.0600
...
9.8700
9.9350
10.0000

Y=

0
0.0200
0.0600
...
-0.4307
-0.4884
-0.5440

>> fplot ( 'sin(x) ' , [ 0 10 ] , '.' )

Autres options :

y Jaune
m Magenta
c Cyan
r Rouge
g Vert
b Bleu
w Blanc
k Noir

.
o
x
+
-
*
:
-.
--

Enseignant : ZINSALO Joël M./EPAC - UAC Page 44


Tapez une équation ici.

4.2. Matlab - Graphe en deux dimensions

• Fonctions :

plot trace point par point un graphe 2D


semilogx identique à plot mais avec échelle logarithmique pour l'axe des abscisses
semilogy identique à plot mais avec échelle logarithmique pour l'axe des
ordonnées
loglog identique à plot mais avec échelles logarithmiques pour les deux axes
grid ajoute une grille
xlabel ajoute une légende pour l'axe des abscisses
ylabel ajoute une légende pour l'axe des ordonnées
title ajoute un titre
axis modifie les échelles des axes
zoom effectue un zoom
gtext place une légende avec la souris
hold ajoute un graphe dans la fenêtre courante
figure crée une nouvelle fenêtre

• Exemple 1

Temps (heures) 0 2 4 6 8 10 12 14 16
Température (°C) 20 23 30 33 32 37 34 39 36

>> temps = [0 2 4 6 8 10 12 14 16]

temps =

0 2 4 6 8 10 12 14 16

>> temperature = [20 23 30 33 32 37 34 39 36]

temperature =

20 23 30 33 32 37 34 39 36

>> plot (temps , temperature)

>> grid on

>> xlabel ( 'temps (en heures)' )

>> ylabel ( 'température (en °C)' )

>> title ( 'Suivi de température' )

Enseignant : ZINSALO Joël M./EPAC - UAC Page 45


Tapez une équation ici.

>> axis ( [ 0 18 10 40 ] )

>> plot ( temps , temperature ,'+' )

>> plot ( temps , temperature , 'co' )

>> plot ( temps , temperature , ':' )

>> plot ( temps , temperature , '--' )

Autres options :

y Jaune
m Magenta
c Cyan
r Rouge
g Vert
b Bleu
w Blanc
k Noir

.
o
x
+
-
*
:
-.
--

• Exemple 2 : graphe d’une fonction à une variable

A 1+A
,=
10

>> t = 0 : 0.01 : 1

Attention : ne pas oublier le point devant les opérateurs multiplication, puissance et


division :
.*
.^
./

Enseignant : ZINSALO Joël M./EPAC - UAC Page 46


Tapez une équation ici.

>> y = t.*(1 + t.^2)./10

>> plot ( t , y )

>> grid on

Remarque : il est plus efficace d’utiliser la fonction fplot

• Exemple 3 : équations paramétriques d'une ellipse

x = 4cos(t)

y = sin(t)

>> t = 0 : pi/100 : 2*pi

>> x = 4*cos(t)

>> y = sin(t)

>> plot ( x , y )

4.3. Matlab- Graphe en trois dimensions

• Fonctions

plot3 trace point par point un graphe 3D


grid ajoute une grille
xlabel ajoute une légende pour l'axe des abscisses
ylabel ajoute une légende pour l'axe des ordonnées
zlabel ajoute une légende pour l'axe des z
title ajoute un titre
hold ajoute un graphe dans la fenêtre courante
figure crée une nouvelle fenêtre
view ajuste l'angle de vue

• Exemple 1

>> x = [ 1 2 3 4 ]

x=

1234

Enseignant : ZINSALO Joël M./EPAC - UAC Page 47


Tapez une équation ici.

>> y = [ 2 4 6 7]

y=

2467

>> z = [ 3 8 5 6 ]

z=

3856

>> plot3 (x , y , z ,'r*')

>> grid on

>> xlabel('axe des x')

>> ylabel('axe des y')

>> zlabel('axe des z')

>> title('plot3')

• Exemple 2 : équations paramétriques

x = cos (t)

y = sin (t)

z=t

>> t = 0 : pi/100 : 5*pi

>> plot3 (cos(t) , sin(t) , t)

Enseignant : ZINSALO Joël M./EPAC - UAC Page 48


Tapez une équation ici.

4.4. Matlab- Graphe d’une fonction à deux variables z = f(x,y)

• Fonctions

meshgrid (voir l'exemple)


mesh (voir l'exemple)
meshc (voir l'exemple)
meshz (voir l'exemple)
contour (voir l'exemple)
view ajuste l'angle de vue
grid ajoute une grille
xlabel ajoute une légende pour l'axe des abscisses
ylabel ajoute une légende pour l'axe des ordonnées
zlabel ajoute une légende pour l'axe des z
title ajoute un titre
hold ajoute un graphe dans la fenêtre courante
figure crée une nouvelle fenêtre

• Exemple 1

B= ,, = C + 2,

>> x = -2 : 2

x=

-2 -1 0 1 2

>> y = -3 : 3

y=

-3 -2 -1 0 1 2 3

>> [X , Y] = meshgrid(x , y)

X=

-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2

Y=
Enseignant : ZINSALO Joël M./EPAC - UAC Page 49
Tapez une équation ici.

-3 -3 -3 -3 -3
-2 -2 -2 -2 -2
-1 -1 -1 -1 -1
00000
11111
22222
33333

>> Z = sqrt (X.^2 + 2.*Y.^2)

Z=

4.6904 4.3589 4.2426 4.3589 4.6904


3.4641 3.0000 2.8284 3.0000 3.4641
2.4495 1.7321 1.4142 1.7321 2.4495
2.0000 1.0000 0 1.0000 2.0000
2.4495 1.7321 1.4142 1.7321 2.4495
3.4641 3.0000 2.8284 3.0000 3.4641
4.6904 4.3589 4.2426 4.3589 4.6904

>> mesh (X , Y , Z)

>> grid on

Pour une meilleure résolution :

>> x = -2 : 0.1 : 2

>> y = -3 : 0.1 : 3

>> [X , Y] = meshgrid(x , y)

>> Z = sqrt (X.^2 + 2.*Y.^2)

>> mesh (X , Y , Z)

>> meshc (X , Y , Z)

>> contour (x , y , Z)

>> mesh (X , Y , Z)

>> grid on

Enseignant : ZINSALO Joël M./EPAC - UAC Page 50


Tapez une équation ici.

>> view(-80 , 10)

• Exemple 2

z = f (x , y ) = y.exp( - x² - y² )

>> x = -2 : 0.1 : 2

>> y= -2 : 0.1 : 2

>> [X , Y] = meshgrid(x , y)

>> Z = Y.*exp ( -X.^2 - Y.^2)

>> mesh (X , Y , Z)

>> meshc (X , Y , Z)

>> contour (x , y , Z)

5. Matlab – Calcul sur les polynômes

• Fonctions :

Conv produit de polynômes


Residue décomposition en éléments
simples
Roots trouve les racines d'un
polynôme
poly trouve le polynôme à partir
des ses racines
polyval évalue le polynôme

5.1. Racines d’un polynôme

• 1er exemple :

3x² - 5x + 2 = 0

On commence par définir un " vecteur " qui contient les coefficients du polynôme :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 51


Tapez une équation ici.

>> p = [ 3 -5 2 ]

p=

3 -5 2

>> roots(p)

ans =

1.0000

0.6667

>> roots( [ 3 -5 2 ])

ans =

1.0000

0.6667

• 2ème exemple :

x² - 4x + 4 = 0

>> p= [ 1 -4 4 ]

p=

1 -4 4

>> roots(p)

ans =

• 3ème exemple :

x² + 3x + 8 = 0

>> p= [ 1 3 8 ]

Enseignant : ZINSALO Joël M./EPAC - UAC Page 52


Tapez une équation ici.

p=

138

>> roots(p)

ans =

-1.5000 + 2.3979i

-1.5000 - 2.3979i

• 4ème exemple :

>> p = [ 1 2 -2 4 3 5 ]

p=

1 2 -2 4 3 5

>> roots(p)

ans =

-3.0417

0.9704 + 1.0983i

0.9704 - 1.0983i

-0.4495 + 0.7505i

-0.4495 - 0.7505i

>> format long e

>> roots(p)

ans =

-3.041684725314715e+000

9.703604093970790e-001 +1.098343294996758e+000i

9.703604093970790e-001 -1.098343294996758e+000i

Enseignant : ZINSALO Joël M./EPAC - UAC Page 53


Tapez une équation ici.

-4.495180467397220e-001 +7.504870344729816e-001i

-4.495180467397220e-001 -7.504870344729816e-001i

• 5ème exemple :

polynôme à coefficients complexes :

(1+i)x² + (2-5i)x + 3,5 = 0

>> format short

>> p = [ 1+i 2-5i 3.5]

p=

1.0000 + 1.0000i 2.0000 - 5.0000i 3.5000

>> roots(p)

ans =

1.7116 + 4.0248i

-0.2116 - 0.5248i

5.2. Détermination des coefficients d’un polynôme à partir des ses racines

• 1er exemple :

>> a = [ 2 1 ]

a=

21

>> poly(a)

ans =

1 -3 2

(c’est-à-dire : x² -3x +2)

Enseignant : ZINSALO Joël M./EPAC - UAC Page 54


Tapez une équation ici.

• 2ème exemple :

>> a = [ 2 2 3 -5 ]

a=

2 2 3 -5

>> poly(a)

ans =

1 -2 -19 68 -60

• 3ème exemple :

>> a = [ 2+i 2-3i 5]

a=

2.0000 + 1.0000i 2.0000 - 3.0000i 5.0000

>> poly(a)

ans =

1.0000 -9.0000 + 2.0000i 27.0000 -14.0000i -35.0000 +20.0000i

Vérification :

>> p = ans

p=

1.0000 -9.0000 + 2.0000i 27.0000 -14.0000i -35.0000 +20.0000i

>> roots(p)

ans =

2.0000 - 3.0000i

5.0000 - 0.0000i

2.0000 + 1.0000i

Enseignant : ZINSALO Joël M./EPAC - UAC Page 55


Tapez une équation ici.

5.3. Produit de polynômes

• 1er exemple

( x –2 )( x – 1 ) = ?

>> p1=[ 1 -2 ]

p1 =

1 -2

>> p2=[ 1 -1 ]

p2 =

1 -1

>> conv( p1 , p2 )

ans =

1 -3 2

Autrement dit :

( x –2 )( x – 1 ) = x² -3x +2

• 2ème exemple

(3x² - 5x + 2)( x² + 3x + 8) = ?

>> p1=[ 3 -5 2 ]

p1 =

3 -5 2

>> p2=[ 1 3 8 ]

p2 =

138

>> conv( p1 , p2 )

Enseignant : ZINSALO Joël M./EPAC - UAC Page 56


Tapez une équation ici.

ans =

3 4 11 -34 16

Autrement écrit :

(3x² - 5x + 2)( x² + 3x + 8) = 3x4 + 4x3 + 11 x² -34 x +16

5.4. Décomposition en éléments simples

On a :

.(
= + + ⋯ ⋯ + G(
&
D( − E& −E

p1 , p2 … désignent les " pôles ".

• Exemple :
6
=?
I +6 + 11 +6

polynôme du numérateur :

>> n =[ 6 ]

n=

polynôme du dénominateur :

>> d =[ 1 6 11 6 0 ]

d=

1 6 11 6 0

>> [ r , p , k ] = residue ( n , d)

r=

-1.0000

Enseignant : ZINSALO Joël M./EPAC - UAC Page 57


Tapez une équation ici.

3.0000

-3.0000

1.0000

p=

-3.0000

-2.0000

-1.0000

k=

[]

Finalement :

6 −1 3 −3 1
= + + +
I +6 + 11 +6 +3 +2 +1

6. Matlab – minimum d’une fonction f(x)

• Fonction :

Fmin (version 4.2.)

Fminbnd (version 6.5.)

• Exemple :

1 1 1
,=− + +
10 2 + (5 − 1 + (1 +

Il faut commencer par créer le fichier .m associé à cette fonction :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 58


Tapez une équation ici.

Dessinons maintenant le graphe de cette fonction :

>> fplot( 'f1' , [ -10 10 ] )

>> grid on

Cherchons le minimum de cette fonction dans l’intervalle 0 à 5 :

>> fmin ( 'f1' , 0 , 5 )

ans =

2.1177

>> f1(ans)

ans =

0.0903

7. Matlab - Equation non linéaire à une inconnue & Racines d’une fonction

• Fonction :

fzero

• Exemple :

Soit à résoudre l’équation :

−6 + 2A -. A 0

Cela revient à trouver les racines de la fonction :

Il faut commencer par créer le fichier .m de cette fonction :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 59


Tapez une équation ici.

Représentation graphique de la fonction :

>> fplot('f3', [ 0 5 ])

>> grid on

Cela fait apparaître 3 racines, aux environs de 2,7 3,1 et 3,4.

>> fzero('f3', 2.7)

ans =

2.6545

Pour les maniaques de la précision :

>> format long e

>> fzero('f3', 2.7)

ans =

2.654461193307640e+000

>> format short

>> fzero('f3', 3.1)

ans =

3.1039

>> fzero('f3', 3.4)

ans =

3.4078

Enseignant : ZINSALO Joël M./EPAC - UAC Page 60


Tapez une équation ici.

Vérification :

>> f3(ans)

ans =

5.5511e-016

8. Dérivée d’une fonction K


(

• Prenons l'exemple suivant :

cos (3 sin 5
,= ( = sin( +
2 5

Commençons par créer le fichier .m de la fonction :

>> [ x y ] = fplot ( 'f2' , [ 0 2*pi ] )

x=

0.0126

0.0251

6.2455

6.2643

6.2832

y=

0.5000

Enseignant : ZINSALO Joël M./EPAC - UAC Page 61


Tapez une équation ici.

0.4997

0.4986

0.4966

0.4992

0.5000

Une approximation de la dérivée est donnée par :

>> dy = diff(y)./diff(x)

dy =

-0.0276

-0.0804

-0.1292

0.1370

0.0438

>> plot (x , dy)

??? Error using ==> plot

Vectors must be the same lengths.

>> length(x)

ans =

307

>> length(dy)

ans =

Enseignant : ZINSALO Joël M./EPAC - UAC Page 62


Tapez une équation ici.

306

Problème !

Le vecteur dy a un élément de moins que le vecteur x, ce que n'apprécie pas la


fonction plot.

Nous allons contourner la difficulté en ignorant le dernier élément du vecteur x :

>> plot ( x (1 : length(x)-1 , : ) , dy , '. ')

>> grid on

9. Matlab - Calcul d'intégrale

• Fonctions :

quad : algorithme de Simpson

quad8 : algorithme de Newton-Cote (version 4.2.)

quadl (version 6.5.)

• Exemple :
&
4
L D
3MN 1

Il faut commencer par créer le fichier .m de la fonction à intégrer :

>> fplot( 'f4', [ 0 1 ])

>> grid on

Enseignant : ZINSALO Joël M./EPAC - UAC Page 63


Tapez une équation ici.

>> quad( 'f4' , 0 , 1 )

ans =

3.1416

>> format long e

>> quad( 'f4' , 0 , 1 )

ans =

3.141592502458707e+000

La valeur exacte de cette intégrale est pi.

>> pi

ans =

3.141592653589793e+000

Il y a un petit écart ...

Améliorons la précision avec une tolérance de calcul de 1e-10 (la tolérance par
défaut est 1e-3) :

>> quad( 'f4' , 0 , 1 , 1e-10 )

ans =

3.141592653589792e+000

... ce qui est beaucoup mieux !

>> quad8( 'f4' , 0 , 1 , 1e-10)

ans =

3.141592653589793e+000

Enseignant : ZINSALO Joël M./EPAC - UAC Page 64


Tapez une équation ici.

10. Matlab - Résolution d’équations différentielles

• Fonctions (Matlab version 4.2.)

ode23 : algorithme de Runge-Kutta du 2ème et 3ème ordres

ode45 : algorithme de Runge-Kutta du 4ème et 5ème ordres

• Exemple 1 : équation différentielle du premier ordre

Soit une fonction y1(t) soumise à l’équation différentielle :

2,&O ,& 10

Alors, on a :

10 ,&
,&O
2

Condition initiale : ,& A 0 5.

Créons le fichier f10.m :

>> [ t , y ] = ode23 ( 'f10' , 0 , 20 , [ 5 ] )

t=

0
0.1562
0.4833
...
18.0327
19.2827
20.0000

Enseignant : ZINSALO Joël M./EPAC - UAC Page 65


Tapez une équation ici.

y=
5.0000
5.3758
6.0735
...
9.9995
9.9997
9.9998

>> plot ( t , y )

>> grid on

Pour avoir une tolérance sur les calculs de 1e-7 :

>> [ t , y ] = ode23 ('f10' , 0 , 20 , [ 5 ] , 1e-7)

A tester :

>> [t , y ] = ode45 ( 'f10' , 0 , 20 , [ 5 ] )

QR S + T. UQO S + SQS = T
• Exemple 2 : équation différentielle du deuxième ordre

QO S = ,&
On pose :

,O = −0.5,& 2,
V &
On a :

,O ,&

, A 0 ,O A 0 0
Conditions initiales :
V &
, A 0 2
Créons le fichier f11.m :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 66


Tapez une équation ici.

>> [ t , y ]=ode23 ( 'f11' , 0 , 10 , [ 0 2 ] )

t=

0
0.0781
0.1858
...
9.7555
9.9671
10.0000

y=
0 2.0000
-0.3058 1.9880
-0.7017 1.9334
...
-0.2114 0.1188
-0.2284 0.0719
-0.2291 0.0644

>> plot ( t , y )

Pour n'afficher que la première colonne, c'est-à-dire y1(t) ou dy2(t)/dt :

>> plot ( t , y ( : , 1 ) )

Pour n'afficher que la deuxième colonne, c'est-à-dire y2(t) :

>> plot ( t , y ( : , 2 ) )

• Exemple 3 : équation différentielle du troisième ordre

Enseignant : ZINSALO Joël M./EPAC - UAC Page 67


Tapez une équation ici.

Créons le fichier f12.m :

>> [ t , y ] = ode23 ( 'f12' , 0 , 2 , [ 2 1 1 ] )


Enseignant : ZINSALO Joël M./EPAC - UAC Page 68
Tapez une équation ici.

t=

0.0156

0.1290

...

1.8692

1.9942

2.0000

y=

2.0000 1.0000 1.0000

2.0938 1.0320 1.0159

2.7741 1.3080 1.1478

...

13.2149 15.2195 12.8932

13.9649 16.9183 14.9009

14.0000 17.0000 15.0000

>> plot ( t , y )

Pour n'afficher que la troisième colonne, c'est-à-dire y3(t) :

>> plot ( t , y ( : , 3 ) )

Nous allons comparer avec la solution exacte : y3(t) = t^3 + t^2 + t + 1

>> hold on

Enseignant : ZINSALO Joël M./EPAC - UAC Page 69


Tapez une équation ici.

>> fplot ( 'x^3 + x^2 + x + 1 ' , [ 0 2 ] , 'b--' )

Les deux courbes sont superposées.

• Exemple 4 : Equation non linéaire du 2ème ordre

Equation de Van der Pol

Créons le fichier f9.m :

>> [ t , y ]=ode23 ( 'f9' , 0 , 20 , [ 0 0.25 ] )

>> plot ( t , y )

Enseignant : ZINSALO Joël M./EPAC - UAC Page 70


Tapez une équation ici.

11. Diagramme de Bode

• Fonctions :

Log10 : logarithme décimal

Semilogx : identique à la fonction plot mais avec une échelle logarithmique pour
l’axe des abscisses

Loglog : identique à la fonction plot mais avec une échelle logarithmique pour
l’axe des abscisses et des ordonnées

• Premier exemple

Considérons un filtre passe-bas du 2ème ordre, de fonction de transfert :

XY 1 1
W( = =[∙ ∙
XZ ] ]
1 1
&

avec : K = 10, f1 = 1 kHz et f2 = 10 kHz.

Il faut commencer par créer le fichier t4.m de la fonction de transfert :

Valeur de la fonction de transfert pour f = 0 Hz (régime continu) :

>> t4(0)

ans =

10

Enseignant : ZINSALO Joël M./EPAC - UAC Page 71


Tapez une équation ici.

Valeur de la fonction de transfert pour f = 100 Hz :

>> t4(100)

ans =

9.8901 - 1.0890i

Le module donne l'amplification :

>> abs(t4(100))

ans =

9.9499

L'argument donne le déphasage (en radians) :

>> angle(t4(100))

ans =

-0.1097

Etudions la fonction de transfert sur la gamme de fréquence 100 Hz à 100 kHz :

>> log10(100)

ans =

>> log10(100000)

ans =

Nous allons créer un vecteur logf :

>> logf = 2 : 0.01 : 5

>> f = 10.^logf

f est un vecteur qui nous donne 300 points uniformément répartis de 100 Hz à
100 kHz (compte tenu de l’échelle logarithmique).

Enseignant : ZINSALO Joël M./EPAC - UAC Page 72


Tapez une équation ici.

G est un vecteur qui nous retourne le gain (en dB) pour les fréquences
précédentes :

>> G = 20.*log10 (abs (t4(f)) )

>> semilogx ( f , G )

>> ylabel ( 'gain (dB)' )

>> xlabel ( 'fréquence (Hz)' )

>> title ( 'diagramme de Bode du gain' )

>> grid on

Déphasage en degrés :

>> dephasage = angle(t4(f))*180/pi

>> semilogx ( f , dephasage )

>> grid on

• Deuxième exemple : système du deuxième ordre

XY ^N
W(^ = =[∙
XZ −^ + 2]_^N ^ ^N

Fichier de définition de la fonction t2 :

>> logpulsation = 3 : 0.01 : 6

Enseignant : ZINSALO Joël M./EPAC - UAC Page 73


Tapez une équation ici.

>> pulsation = 10.^logpulsation

>> G = 20.*log10(abs(t2(pulsation)))

>> semilogx ( pulsation , G )

>> grid on

>> dephasage = angle(t2(pulsation))*180/pi

>> semilogx ( pulsation , dephasage )

>> grid on

>> amplification = abs(t2(pulsation))

>> loglog ( pulsation , amplification)

>> grid on

>> xlabel ( 'pulsation(rad/s)' )

>> ylabel ( 'amplification' )

>> title ( 'Diagramme de Bode' )

12. Matlab - Remarques à propos des scalaires, vecteurs, matrices et


tableaux

Où l'on verra également la différence entre :

* .*
/ ./
^ .^

• 1- Matlab manipule des scalaires, vecteurs et matrices.

>> a = 6

a=
6

>> b = [ 1 3 8 ]

b=
138

Enseignant : ZINSALO Joël M./EPAC - UAC Page 74


Tapez une équation ici.

>> c = [ 2 10 ; 3 8]

c=
2 10
38

>> d = [ 1 2 ; 3 4 ]

d=
12
34

>> e = [ -2 -8 –3 ]

e=

-2 -8 -3

>> f = [ 8 ; 5 ; 2 ]

f=
8
5
2

>> whos

Name Size

a 1 by 1
b 1 by 3
c 2 by 2
d 2 by 2
e 1 by 3
f 3 by 1

a est un scalaire (autrement dit une matrice 1x1)

b est un vecteur ligne (autrement dit une matrice 1x3)

c est une matrice (2x2)

d est une matrice (2x2)

e est un vecteur ligne (autrement dit une matrice 1x3)

f est un vecteur colonne (autrement dit une matrice 3x1)

Enseignant : ZINSALO Joël M./EPAC - UAC Page 75


Tapez une équation ici.

• 2- Tableau (Array) et matrice

Multiplication de matrice *
Multiplication de tableau (élément par élément) .*
Puissance de matrice ^
Puissance de tableau (élément par élément) .^
Division de matrice /

B / A est équivalent à B * inv(A)


Division de tableau (élément par élément) ./

* est le produit matriciel :

>> [ 2 10 ; 3 8] *[ 1 2 ; 3 4 ]

ans =

32 44
27 38

.* désigne la multiplication élément par élément, ce qui est complètement


différent :

>> [ 2 10 ; 3 8] .* [ 1 2 ; 3 4 ]

ans =
2 20
9 32

>> [ 2 10 ; 3 8] / [ 1 2 ; 3 4 ]

ans =
11 -3
6 -1

>> [ 2 10 ; 3 8] ./ [ 1 2 ; 3 4 ]

ans =
25
12

Enseignant : ZINSALO Joël M./EPAC - UAC Page 76


Tapez une équation ici.

>> [ 2 10 ; 3 8] ^2

ans =
34 100
30 94

>> [ 2 10 ; 3 8] .^2

ans =
4 100
9 64

>> 6*[ 1 3 8 ]

ans =
6 18 48

>> 6.*[ 1 3 8 ]

ans =
6 18 48

>> 6*[ 2 10 ; 3 8]

ans =
12 60
18 48

>> 6.*[ 2 10 ; 3 8]

ans =
12 60
18 48

>> [ 1 3 8 ].*[ -2 -8 –3 ]

ans =
-2 -24 -24

Le calcul suivant n'a pas de sens :

>> [ 1 3 8 ] *[ -2 -8 –3 ]

??? Error using ==> *

Enseignant : ZINSALO Joël M./EPAC - UAC Page 77


Tapez une équation ici.

Inner matrix dimensions must agree.

>> [ 1 3 8 ] .^2

ans =
1 9 64

Le calcul suivant n'a pas de sens :

>> [ 1 3 8 ] ^2

??? Error using ==> ^

Matrix must be square.

Soit un vecteur ligne 1x7 :

>> x = 0 : 6

x=
0123456

>> y = (x+1).^2

y=
1 4 9 16 25 36 49

y est un vecteur ligne 1x7.

>> y = (x+1)^2

??? Error using ==> ^

Matrix must be square.

Testons avec une matrice carrée 2x2 :

>> x = [ 1 2 ; 3 4 ]

x=
12
34

Enseignant : ZINSALO Joël M./EPAC - UAC Page 78


Tapez une équation ici.

>> y = (x+1).^2

y=
49
16 25

>> y = (x+1)^2

y=
16 21
28 37

>> t = 0 : 5

t=
012345

>> u = t.^2 + 3.*t./ (5 + 2.*t)

u=
0 1.4286 4.6667 9.8182 16.9231 26.0000

>> u = t^2 + 3*t /(5 + 2*t)

??? Error using ==> ^

Matrix must be square.

>> z = 2 : 2 : 12

z=
2 4 6 8 10 12

>> t./z

ans =
0 0.2500 0.3333 0.3750 0.4000 0.4167

Enseignant : ZINSALO Joël M./EPAC - UAC Page 79


Tapez une équation ici.

Chapitre 2 :

Le langage de programmation Matlab :

Utilisation des scripts

Un script se présente sous la forme d'un fichier texte avec l'extension .m


Quand on lance un script, Matlab exécute une à une les commandes.
Un script est un programme.
Un script est une séquence d’expressions ou de commandes. Un script peut se
développer sur une ou plusieurs lignes. Les différentes expressions ou
commandes doivent être séparées par une virgule, un point-virgule ou par le
symbole de saut de ligne constitué de trois points . . . suivis de <entrer> (le rôle
des trois points et d’inhiber le mécanisme d’´evaluation lors d’un passage à la
ligne). Comme pour une expression unique, la frappe de <entrer> déclenche le
processus d’évaluation. Les expressions sont évaluées dans leur ordre d’´ecriture.
Seule la valeur des expressions suivie d’une virgule ou d’un saut de ligne est
affichée, celle des expressions suivies d’un point-virgule, ne l’est pas.

Convention de couleurs :

• en bleu : commandes, données ... saisies par l'utilisateur (dans la fenêtre


de commande)
• en noir : résultat fourni par Matlab (dans la fenêtre de commande)
• en rouge : script (programme)

1. Premier script : Graphe d'une fonction à une variable

Au lieu de taper la série de commandes qui permet de tracer le graphe de la


fonction y(x) =100x/((50+x)2) :

>> fplot('100*x/((50+x)^2)',[0 200])


>> grid on
>> xlabel('R (en ohms)')
>> ylabel('P (en watts)')

Enseignant : ZINSALO Joël M./EPAC - UAC Page 80


Tapez une équation ici.

>> title('Courbe P(R)')

Vous pouvez une fois pour toute, écrire un script.

Pour cela, il vous faut un éditeur de texte (le bloc-notes par exemple) :

Le signe % signifie que le reste de la ligne est un commentaire.

Pour exécuter le script, il suffit de taper son nom dans la fenêtre de commande :

>> script1

La commande ECHO ON permet d'afficher à l'écran, les commandes exécutées


par le script :

>> echo on

>> script1

% script1.m
fplot('100*x/((50+x)^2)',[0 200]);
grid on;
xlabel('R (en ohms)');
ylabel('P (en watt)');
title('Courbe P(R)');

>> echo off

Enseignant : ZINSALO Joël M./EPAC - UAC Page 81


Tapez une équation ici.

2. Affichage à l'écran : fonction DISP

Cette fonction permet d'afficher proprement des valeurs numériques ou bien du


texte (chaîne de caractères) à l'écran.

• Affichage de nombres :

>> a=15;
>> disp(a)
15
>> b=[1 8 9];
>> disp(b)
189
>> disp([17 -25.36 sqrt(6)])
17.0000 -25.3600 2.4495
>> disp([17 ; -25.36 ; sqrt(6)])
17.0000
-25.3600
2.4495
>> a=12;
>> disp([17 a sqrt(a+13)])
17 12 5

• Affichage de textes :
>> c='Bonjour';
>> disp(c)
Bonjour
>> disp('Bonjour')
Bonjour
>> disp(['Pierre' 'Paul' 'Jacques'])
PierrePaulJacques
La commande BLANKS(n) affiche n espaces :
>> disp(['Pierre' blanks(1) 'Paul' blanks(1) 'Jacques'])
Pierre Paul Jacques

Enseignant : ZINSALO Joël M./EPAC - UAC Page 82


Tapez une équation ici.

• Affichage combiné de textes et de nombres :

La fonction NUM2STR convertit un nombre en une chaîne de caractères.

>> disp(['Il est ' num2str(12) ' heures'])


Il est 12 heures
>> a=18;
>> disp(['Il est ' num2str(a) ' heures ' num2str(58)])
Il est 18 heures 58

3. Saisie au clavier : fonction INPUT


Cette fonction effectue la saisie de valeurs numériques ou bien de textes.
• Saisie de nombres :
% script2.m
disp('Bonjour!');
x0=input('Taper la valeur de R min : ');
x1=input('Taper la valeur de R max : ');
disp(['R min =' num2str(x0)]);
disp(['R max =' num2str(x1)]);
fplot('100*x/((50+x)^2)',[x0 x1]) ;
grid on ;
xlabel('R (en ohms)') ;
ylabel('P (en watt)') ;
title('Courbe P(R)')
disp('Au revoir.');

>> script2
Bonjour!
Taper la valeur de R min : 20
Taper la valeur de R max : 100
R min =20
R max =100
Au revoir.
• Saisie de textes :
Enseignant : ZINSALO Joël M./EPAC - UAC Page 83
Tapez une équation ici.

% scrip2_1.m
nom=input('Taper votre nom : ','s');
prenom=input('Taper votre prénom : ','s');
age=input('Taper votre âge : ');
disp([nom blanks(1) prenom]);
disp(['Age : ' num2str(age)]);

>> scrip2_1
Taper votre nom : Dupont
Taper votre prénom : Jérôme
Taper votre âge : 21
Dupont Jérôme
Age : 21

4. Boucle FOR
Cette instruction permet de répéter un bloc d'instructions, un nombre déterminé
de fois.
Synthaxe :
for expression ,
bloc d'instructions ;
end

Exemples :
% script3.m
for i=1:5,
disp([i i*i]);
end

>> script3
11
24
39

Enseignant : ZINSALO Joël M./EPAC - UAC Page 84


Tapez une équation ici.

4 16
5 25
% scrip3_1.m
n=input('Nombre de boucles = ? ');
for i=1:n,
disp(i);
end

>> scrip3_1

Nombre de boucles = ? 4

1
2
3
4

% script4.m
for i=1:2:10,
disp(i);
end

>> script4
1
3
5
7
9

% script5.m

Enseignant : ZINSALO Joël M./EPAC - UAC Page 85


Tapez une équation ici.

for i=1:3,
for j=1:6,
a(i,j)=i+10*j ;
end
end
disp(a);

>> script5
11 21 31 41 51 61
12 22 32 42 52 62
13 23 33 43 53 63

5. Boucle WHILE

Synthaxe :
while condition ,
bloc d'instructions ;
end

Le programme teste la condition :

Si la condition est fausse, le programme saute à l'instruction qui suit END.

Si la condition est vraie, le bloc d'instructions est exécuté, puis le programme


teste à nouveau la condition ...

Attention aux bugs de programmation !

si la condition est toujours vraie, la boucle s'exécute indéfiniment : le programme


est "planté".

Enseignant : ZINSALO Joël M./EPAC - UAC Page 86


Tapez une équation ici.

• Opérateurs de comparaison :

== Egal
> supérieur
< inférieur
>= supérieur ou égal
<= inférieur ou égal
~= différent

Exemples :

% script6.m
n=0 ;
while (n<10),
n=n+1;
disp(n);
end

La boucle est exécutée tant que n est inférieur à 10 :

>> script6
1
2
3
4
5
6
7
8
9
10

• Opérateurs logiques :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 87


Tapez une équation ici.

& ET logique
(AND)
| OU logique
(OR)
~ NON logique

% script7.m
note=-1;
while ((note<0) | (note>20)),
note=input('taper la note (0 à 20) : ');
end
disp(['note = ' num2str(note)]);

La boucle est exécutée tant que la note est inférieure à 0 ou bien supérieure à 20.
Cela permet de saisir une note forcément comprise entre 0 et 20 :
>> script7
taper la note (0 à 20) : 30
taper la note (0 à 20) : 17
note =17

6. Instructions IF ELSE ELSEIF

Synthaxe :
• IF
if condition ,
bloc d'instructions ;
end

Le bloc d'instructions est exécuté si la condition est vraie.


Enseignant : ZINSALO Joël M./EPAC - UAC Page 88
Tapez une équation ici.

Autrement, il est ignoré.

• IF ELSE

if condition ,

bloc d'instructions 1 ;

else

bloc d'instructions 2 ;

end

Le bloc d'instructions 1 est exécuté si la condition est vraie.

Sinon, c'est le bloc d'instructions 2 qui est exécuté.

• IF ELSE IF

if condition1 ,

bloc d'instructions 1 ;

else if condition2 ,

bloc d'instructions 2 ;

end

Le bloc d'instructions 1 est exécuté si la condition 1 est vraie.

Sinon, si la condition2 est vraie, le bloc d'instructions 2 est exécuté.

% script8.m

Enseignant : ZINSALO Joël M./EPAC - UAC Page 89


Tapez une équation ici.

note=-1;
while ((note<0) | (note>20)),
note=input('Taper la note (0 à 20) : ');
if (note<0),
disp ('Valeur invalide (note < 0)');
end
if (note>20),
disp ('Valeur invalide (note > 20)');
end
end
disp('note = ');
disp(note);

>> script8
Taper la note (0 à 20) : -5
Valeur invalide (note < 0)
Taper la note (0 à 20) : 25
Valeur invalide (note > 20)
Taper la note (0 à 20) : 12
note =
12

7. Instruction BREAK

L'instruction BREAK permet de sortir d'une boucle FOR ou d'une boucle WHILE.
% script11.m
for i=1:10,
if i==5,
break;
end
disp(i);
Enseignant : ZINSALO Joël M./EPAC - UAC Page 90
Tapez une équation ici.

end

>> script11
1
2
3
4

% script12.m
i=0;
while 1,
i=i+1;
if i>5,
break;
end
disp(i);
end

La condition while 1 est toujours vraie.

Le seul moyen de sortir de la boucle est d'utiliser l'instruction BREAK.


>> script12
1
2
3
4
5

Enseignant : ZINSALO Joël M./EPAC - UAC Page 91


Tapez une équation ici.

8. Exemples de scripts

8.1. Résolution d'une équation du 2ème degré (dans R, espace des


nombres réels)

% trinome.m
disp('Calcul dans R des racines de ax²+bx+c=0');
choix='Y';
while (choix~='N' & choix~='n'),
a=0;
while (a==0),
a=input('a=? ');
if (a==0),
disp ('Valeur non valide !');
end
end
b=input('b=? ');
c=input('c=? ');
delta=b*b-4*a*c;
if (delta<0),
disp('Pas de racine réelle.');
end
if (delta==0),
disp('Une racine double :');
racine=-b/(2*a);
disp(racine);
end
if (delta>0),
disp('Deux racines :');
racine1=(-b+sqrt(delta))/(2*a);
racine2=(-b-sqrt(delta))/(2*a);
disp(racine1);
disp(racine2);
end
Enseignant : ZINSALO Joël M./EPAC - UAC Page 92
Tapez une équation ici.

choix=input('Un autre calcul (O/N)? ','s');


end

>> trinome

Calcul dans R des racines de ax²+bx+c=0


a=? 0
Valeur non valide !
a=? 1
b=? 2.36
c=? -4.5
Deux racines :
1.2474
-3.6074
Un autre calcul (O/N)? n

8.2. Résolution d'une équation du 2ème degré (dans C, espace des


nombres complexes)

% trinome1.m
disp('Calcul dans C des racines de ax²+bx+c=0');
p(1)=input('a=? ');
p(2)=input('b=? ');
p(3)=input('c=? ');
disp('Racines :');
disp(roots(p));

>> trinome1
Calcul dans C des racines de ax²+bx+c=0
a=? 2+i
b=? -5
c=? 1.5-5i

Enseignant : ZINSALO Joël M./EPAC - UAC Page 93


Tapez une équation ici.

Racines :
0.8329 + 0.6005i
-0.2079 - 0.6005i

8.3. Calcul de la factorielle n!

% facto.m
disp('Calcul de la factorielle') ;
n=input('n = ? ') ;
fact=1;
for i=1:n,
fact=fact*i;
end
disp([num2str(n) '!=']);
format long e;
disp(fact);
% (C) Fabrice Sincère

>> facto

Calcul de la factorielle
n = ? 134
134!=
1.992942746161518e+228

Enseignant : ZINSALO Joël M./EPAC - UAC Page 94


Tapez une équation ici.

Chapitre 3 :

Systèmes d'équations linéaires

Avant de commencer les calculs numériques relatifs à l’application directe du


cours de « Méthodes Numériques », il est indispensable de savoir les informations
nécessaires concernant l’algèbre linéaire sur MATLAB. L’objectif de cette étude est
de donner à l’étudiant les bases fondamentales de l’algèbre linéaire concernant la
résolution des systèmes d’équations linéaires.

1. Matrices et Vecteurs dans MATLAB

En mathématique, une matrice est constituée de n lignes et de m colonnes. Les


coefficients de la matrice sont situés entre 2 parenthèses. Dans MATLAB, les
parenthèses n’y figurent pas.

Une matrice carrée est une matrice dont le nombre de lignes est égal au nombre
de colonnes (n=m). Une matrice ligne est une matrice d’ordre 1 appelée vecteur
ligne. Une matrice colonne est une matrice d’ordre 1 appelée vecteur colonne. Une
matrice d’ordre 0 est un scalaire.

Dans le cas général, une matrice de n lignes et de m colonnes a pour coefficients


6`a , où b ≤ ≤ . et b ≤ ] ≤ . Si cette matrice est appelée c, ses coefficients sont
les suivants :

6&& 6& 6& . . . 6&g


6 & 6 6 . . . 6 g
f 6 & 6 6 . . . 6 g k
e j
c = e . . . . . . . j
e . . . . . . . j
. . . . . . .
d6h& 6h 6h . . . 6hg i

Si l est autre matrice à E lignes et m colonnes, alors le produit de n c ∗ l n’est


possible que si E. Dans ce cas, le coefficient && , par exemple de cette matrice
n s’écrit :

&& 6&& . '&& 6& ' & ⋯ 6&g 'p& 6; E


Enseignant : ZINSALO Joël M./EPAC - UAC Page 95
Tapez une équation ici.

Dans Matlab, la matrice produit n (= c ∗ l a pour coefficients `a . Ces coefficients


sont calculés en fonction de 6`a et de '`a :

`a = q 6`r . 'ra

Une matrice d’ordre zéro est une matrice à une ligne et une colonne : elle
représente un scalaire. Une matrice nulle est une matrice dont les coefficients
sont tous nuls. En attribuant le nom « A » à cette matrice, alors dans Matlab A
s’écrit :

>>c B - .,

Où n et m sont respectivement le nombre de lignes et le nombre de colonnes.

La matrice identité est définie dans Matlab par la fonction : « eye »

Exemple :

1 0 0 0 0
f 0 1 0 0 0k
l = e0 0 1 0 0j = s D
0 0 0 1 0
d0 0 0 0 1i

C’est une matrice carrée d’ordre 5. Dans Matlab, on peut l’écrire :

>> l = , (5
B=
10000
01000
00100
00010
00001

Si l u est la matrice transposée de B, cette dernière s’écrit dans Matlab :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 96


Tapez une équation ici.

>> n = l′ ⇒ (l’apostrophe représente la transposée).

C=
10000
01000
00100
00010
00001

Le déterminant d’une matrice carrée (C par exemple) est donné par :

>> D A(n)
ans =

Soit A une matrice non nulle. La matrice inverse c2& de A (si elle existe) est telle
que :

c ∗ c2& = s D

Dans Matlab, cette matrice inverse est donnée par :

c2& =A^(-1)=inv(A)=pinv(A)

Exemple :

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

A=
135
2 -1 0
543

La matrice inverse de A est :


>>inv(A)
ans =

Enseignant : ZINSALO Joël M./EPAC - UAC Page 97


Tapez une équation ici.

-0.0682 0.2500 0.1136


-0.1364 -0.5000 0.2273
0.2955 0.2500 -0.1591

ou encore :

>>pinv(A)
ans =
-0.0682 0.2500 0.1136
-0.1364 -0.5000 0.2273
0.2955 0.2500 -0.1591

2. Equations et systèmes linéaires dans MATLAB

Considérons le système suivant de n équations à m inconnues :

6&& . & 6& . ⋯ ⋯ ⋯ 6&g . g ,&


+6 . 6 . ⋯ ⋯ ⋯ 6 g. g ,
)
& &
) 6 &. & 6 . ⋯ ⋯ ⋯ 6 g. g ,
6I& . & 6I . ⋯ ⋯ ⋯ 6Ig . g ,I ⟹ c. ,
* ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯… ⋯
)
) ⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯… ⋯
(6h& . & 6h . ⋯ ⋯ ⋯ 6hg . g ,g

Dans ce système, on a c y6`a z connue, , ,` connues et ` inconnues.

• Si . > ⟹ système sur-déterminé,


• Si . ⟹ système de Cramer ⟶ une solution unique (si det c ≠ 0),
• Si . < ⟹ système sous-déterminé
La solution numérique du système (pour . ) donne les inconnues ` :
c/,
6
Pour un vecteur colonne y donné •, • 0 ‚ par exemple‚, la solution par Matlab
1
est :
>> = c^(−1 ∗ ,
x=
-0.5227

Enseignant : ZINSALO Joël M./EPAC - UAC Page 98


Tapez une équation ici.

-1.0455
1.9318
Notation :

1 3 5
Soit la matrice :

c = •2 −1 0‚
5 4 3
Dans Matlab, la Matrice A peut être écrite sous les deux formes :
>> c = [1,3,5; 2, −1,0; 5,4,3] ;
ou bien :
>> c = [1 3 5; 2 − 1 0; 5 4 3] ;
La séparation des lignes se fait par un point virgule et la séparation des colonnes
se fait par un espace ou une virgule.
Exemple :
>> c = [1 3 5 ; 2 − 1 0 ; 5 4 3]
A=
135
2 -1 0
543

Problèmes mal conditionnés :


Il existe un certain nombre d’équations linéaires solvables, mais leurs solutions
sont incertaines à cause des erreurs d’arrondi lors des calculs. Les problèmes de
ce type sont appelés ‘problèmes mal conditionnés’. L’arrondi durant les calculs ou
les petits changements dans les coefficients calculés peuvent induire des erreurs
significatives dans la résolution d’un problème (mal conditionné).

Cet effet d’arrondi, peut être illustré par le système des 2 équations suivantes,
par exemple :
0,12065 & + 0,98775 = 2,01045
%
0,12032 & + 0,98755 = 2,00555

= 14,7403
La solution de ce système est :
&
%
= 0,23942

Enseignant : ZINSALO Joël M./EPAC - UAC Page 99


Tapez une équation ici.

Pour monter l’erreur introduite sur les solutions en modifiant les coefficients
(arrondi), on donne au coefficient « 2,01045 » de la première équation une légère
augmentation de « 0,001 ».

Dans ce cas, le système devient :

0,12065 & + 0,98775 = 2,01145


%
0,12032 & + 0,98755 = 2,00555

= 17,9756
V &
= −0,15928

Ceci met en évidence l'erreur engendrée par un arrondi.

La matrice C correspondant au système précédent est :

0,12065 0,98775
n=" $
0,12032 0,98755

La norme de C s’écrit :

&/

‖n‖ = •q‘n`a ‘ ’ =( && + & + & + &/


⟹ ‖n‖ = 1,97993839
`a

Dans Matlab on définit le nombre-condition de la matrice C [notation cond(C)] par :

.D(n = ‖n‖. ‖n 2& ‖

Ce nombre satisfait toujours la condition :

.D n ≥ 1

Pour les matrices inconditionnées, ce nombre-condition atteint des grandes


valeurs, mais ne donne pas une estimation directe de l’erreur sur la solution.

Dans Matlab, ce nombre se calcule par la fonction « cond(C) » où C est la matrice.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 100


Tapez une équation ici.

Exemple1 :
>>C
C=
0.1206 0.9878 0.9876

>>cond(C)
ans =
6.5598e+003
Exemple 2 :
L'exemple de la matrice d’Hilbert représente un problème à matrice mal

1
conditionnée. Cette matrice est définie par :

c = y6`a z, ù 6`a =
+]−1
Programmer le nombre-condition (cond(A)) ainsi que det(A) pour une matrice
d’Hilbert de 5 par 5 à 14 par 14 :
Solution :

clear;
for n=5:14
for i=1:n
for j=1:n
a(i,j)=1/(i+j-1);
end
end
C=cond(a);
d=det(a)*det(a^(-1));
fprintf('n=%3.0f\t cond(a)=%e\t det*det=%e\n',n,C,d);
end

Après exécution du programme, on obtient les résultats suivants :

n= 5 cond(a)=4.766073e+005 det*det=1.000000e+000
n= 6 cond(a)=1.495106e+007 det*det=1.000000e+000
n= 7 cond(a)=4.753674e+008 det*det=1.000000e+000
n= 8 cond(a)=1.525758e+010 det*det=9.999999e-001
n= 9 cond(a)=4.931532e+011 det*det=1.000001e+000
n= 10 cond(a)=1.602534e+013 det*det=9.999812e-001
n= 11 cond(a)=5.218389e+014 det*det=1.000119e+000
n= 12 cond(a)=1.768065e+016 det*det=1.015201e+000

Enseignant : ZINSALO Joël M./EPAC - UAC Page 101


Tapez une équation ici.

n= 13 cond(a)=3.682278e+018 det*det=9.707419e-001
n= 14 cond(a)=1.557018e+018 det*det=-4.325761e+000

Durant l’exécution du programme, un message s’affiche sur l’écran pour n=11 à


n=14 : Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND
= 3.659249e-017.

Ce qui signifie qu’à partir de n=11 jusqu’à n=14, on a det(a)*det(a-1) différent de 1,


donc les erreurs d’arrondi commencent leurs apparitions.

3. Méthode directe (Méthode du pivot)


Soit à résoudre le système suivant de 3 équations à 3 inconnues par la méthode

−0.04 0.04
du pivot (dans Matlab) :
0.12 & 3
• 0.56 −1.56 0.32 ‚ • ‚ = •1‚
−0.24 1.24 −0.28 0
déterminer &, , .
Solution :
1. On définit tout d’abord la matrice argument dans Matlab par :
>>A=[-0.04 0.04 0.12 3;0.56 -1.56 0.32 1; -0.24 1.24 -0.28 0] ;

2. On choisit la ligne 1 comme ligne pivot : a(1,1)=-0.04,


on divise la ligne 1 par a(1,1) b(1,:)=a(1,:)/a(1,1) ⟶ nouvelle ligne,
on annule le 1er terme de la ligne 2 et le 1er terme de la ligne 3 :
… ⟶ b(2,:)=a(2,:)-b(1,:)*a(2,1),
… ⟶ b(3,:)=a(3,:)-b(1,:)*a(3,1).
On obtient après calculs :
b=
1 -1 -3 -75
0 -1 2 43
0 1 -1 -18

3. On choisit la ligne 2 comme ligne pivot.


On divise cette ligne par b(2,2)=-1, on obtient :
… ⟶ c(2,:)=b(2,:)/b(2,2) ⟶ nouvelle ligne = 0 1 -2 -43

Enseignant : ZINSALO Joël M./EPAC - UAC Page 102


Tapez une équation ici.

on annule le terme b(1,2) de la ligne 1 et le terme b(3.2) de la ligne 3 :


… ⟶ c(1,:)=b(1,:)-c(2,:)*b(1,2) ⟶ 1 0 -5 118,
… ⟶ c(3,:)=b(3,:)-c(2,:)*b(3,2) ⟶ 0 0 1 25.

4. On choisit la ligne 3 comme ligne pivot c(3, :).


On divise cette ligne par c(3,3)=1, on obtient :
⟶d(3,:)=c(3,:) ⟶ nouvelle ligne = 0 0 1 25
on annule dans la ligne 1 c(1,3) et dans la ligne 2 c(2,3) :
… ⟶(1,:)=c(1,:)-d(3,:)*c(1,3) ⟶1 0 0 7,
… ⟶ d(2,:)=c(2,:)-d(3,:)*c(2,3) ⟶ 0 1 0 7.
D’où la matrice d s’écrit :
d=
1007
0107
0 0 1 25

=7
et la solution est :
&
% =7
= 25
L’algorithme suivant (dans Matlab) permet de résoudre le système précédent :

clear %effacer toutes les variables en mémoire dans Matlab


a=[-0.04 0.04 0.12 3;0.56 -1.56 0.32 1;-0.24 1.24 -0.28 0];a
x=[0 0 0]'; %x est le vecteur colonne de composantes xi qui est
initialisé ici
% 1er point pivot ligne 1 -calculs sur les lignes 2 et 3
b(1,:)=a(1,:)/a(1,1);
b(2,:)=a(2,:)-b(1,:)*a(2,1);
b(3,:)=a(3,:)-b(1,:)*a(3,1);b
% 2ème pivot ligne 2 - calculs sur les lignes 1 et 3
c(2,:)=b(2,:)/b(2,2);
c(1,:)=b(1,:)-c(2,:)*b(1,2);
c(3,:)=b(3,:)-c(2,:)*b(3,2);c
% 3ème pivot ligne 3 - calculs sur les lignes 1 et 2
d(3,:)=c(3,:)/c(3,3);
d(1,:)=c(1,:)-d(3,:)*c(1,3);
d(2,:)=c(2,:)-d(3,:)*c(2,3);d
%Solutions recherchées
x(1)=d(1,4);

Enseignant : ZINSALO Joël M./EPAC - UAC Page 103


Tapez une équation ici.

x(2)=d(2,4);
x(3)=d(3,4);x

après l’exécution de ce programme, on obtient :

a=
-0.0400 0.0400 0.1200 3.0000
0.5600 -1.5600 0.3200 1.0000
-0.2400 1.2400 -0.2800 0

b=
1.0000 -1.0000 -3.0000 -75.0000
0 -1.0000 2.0000 43.0000
0 1.0000 -1.0000 -18.0000

c=
1.0000 0 -5.0000 -118.0000
0 1.0000 -2.0000 -43.0000
0 0 1.0000 25.0000

d=
1.0000 0 0 7.0000
0 1.0000 0 7.0000
0 0 1.0000 25.0000

x=
7.0000
7.0000
25.0000

4. Méthodes itératives
4.1. Méthode de Jacobi

+ + = 1
Résoudre le système suivant par la méthode itérative de Jacobi :
&
% 2 & − + 3 = 4
3 & + 2 − 3 = −2

Écrire un algorithme permettant de calculer &, et par itérations. Déterminer

=| h•& ( h( | = 102&N
le nombre d’itérations nécessaires pour obtenir :
“( −

Appelons l’algorithme permettant de calculer la solution – ` — « jacobi.m ». Dans cet


Solution :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 104


Tapez une équation ici.

algorithme, nous avons utilisé un facteur de relaxation "˜" pour réaliser la


convergence, car sinon le système diverge.

4.2. Méthode de Gauss-Seidel


Résoudre le même système précédent par la méthode de Gauss-Seidel. Écrire un
algorithme (Matlab) permettant de résoudre ce système et déterminer le nombre
d’itérations nécessaires pour obtenir une erreur :

“( =| h•& ( − h( | = 102&N

Comparer les résultats avec la méthode de Jacobi et conclure.


Représenter sur le même graphe l’évolution des solutions ` en fonction du
N
nombre d’itérations. Changer les valeurs initiales `, exécuter le programme puis
conclure.
Solution :

solution – ` —
* Méthode itérative générale :
Appelons l’algorithme permettant de calculer la « G-seid.m »
On se donne des valeurs arbitraires N
` : par exemple N
` = 0. Le système à
résoudre est :
c∗ = , ; où c = y6`a z, = ` A , = ,` .
La matrice A et le vecteur colonne y sont connus, le vecteur colonne x reste

,( − 6( , ] .
inconnu. Ainsi, la méthode itérative générale consiste à écrire :
]
( =
6 ,
Pour ≠ ] et 6 , ≠0

,(1 − 6(1,2 . 2 − 6 1,3 .


En particulier, pour un système de 3 équations à 3 inconnues, on a :
3
= 1 → ] = 2 A 3 ⟹ (1 =
6 1, 1

,(2 − 6(2,1 . 1 − 6 2,3 . 3
= 2 → ] = 1 A 3 ⟹ (2 =
6 2, 2
,(3 − 6(3,1 . 1 − 6 2,3 . 3
= 3 → ] = 1 A 2 ⟹ (3 =
6 3, 3

Enseignant : ZINSALO Joël M./EPAC - UAC Page 105


Tapez une équation ici.

et ceci pour chaque itération.


Programme itmg.m :

%******************************
% Résolution d'un système linéaire *
% par la méthode itérative générale *
%******************************

clear all;
clc;
fprintf('Méthode itérative générale\n');
n=30000;
a=[1 1 1;2 -1 3;3 2 -2];
y=[1 4 -2];
x=zeros(1,3);

w=0.2; % facteur de relaxation : 0<w<1

epsilon=1e-10;
for k=1:n
erreur=0;
for i=1:3
s=0;
xb=x(i);
for j=1:3
if i~=j
s=s+a(i,j)*x(j);
end
end
x(i)=w*(y(i)-s)/a(i,i)+(1-w)*x(i);
erreur=erreur+abs(x(i)-xb);
end
if (erreur/3<epsilon)
fprintf('Itération no. : %d\t Erreur = %7.2e\n',k,erreur);
break;
end
end
x

* Méthode de Jacobi :
Modifier le programme précédent pour résoudre le système par la méthode de
Jacobi. Exécuter le programme et comparer le nombre d'itérations par rapport à
celui de la méthode générale.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 106


Tapez une équation ici.

Chapitre 4 :
Polynômes et interpolation polynomiale
Résolution des équations non linéaires

L’objectif principal de l’interpolation est d’interpoler des données connues à partir


des points discrets. Dans ce cas, la valeur de la fonction entre ces points peut
être estimée. Cette méthode d’estimation peut être étendue et utilisée dans divers
domaines ; à savoir la dérivation et l’intégration numérique des polynômes.

1. Opérations sur les polynômes dans MATLAB


Dans MATLAB, les polynômes sont représentés sous forme de vecteurs lignes
dont les composantes sont données par ordre des puissances décroissantes. Un
polynôme de degré n est représenté par un vecteur de taille (n+1).
Exemple :
Le polynôme : ( = 8. š
+ 2. − 3. + 4. − 2 est représenté par :
>>f=[8 0 2 -3 4 -2]
f =8 0 2 -3 4 -2

D’autres fonctions dans MATLAB telles que : ‘conv’, ‘deconv’, ‘roots’, etc. peuvent
être utilisées en plus des opérations propres aux vecteurs (cf. chapitre précédent).

1.1. Multiplication des polynômes


La fonction ‘conv’ donne le produit de convolution de deux polynômes. L’exemple
suivant montre l’utilisation de cette fonction.
Soient :
= 3. + 2. − + 4
V
› = 2. I
− 3 + 5. − 1

Le produit de convolution : ℎ = .› est donné par :


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

Enseignant : ZINSALO Joël M./EPAC - UAC Page 107


Tapez une équation ici.

>>h=conv(f,g)
h=

Ainsi, le polynôme ℎ(
6 4 -11 17 10 -19 21 -4
obtenu est :
ℎ( =6 •
+4 ž
− 11 š
+ 17 I
+ 10 − 19 + 21 − 4

1.2. Division des polynômes


La fonction ‘deconv’ donne le rapport de convolution de deux polynômes
(déconvolution des coefficients du polynôme). L’exemple suivant montre
l’utilisation de cette fonction.
Soient les mêmes fonctions précédentes et › :
=3 +2 − +4
V
› =2 I
−3 +5 −1
La division de › par :

ℎ =
Ÿ 3
3
est donnée par la fonction ‘deconv’ :

>>f=[3 2 -1 4];
>>g=[2 0 -3 5 -1];
>>h=deconv(g,f)
h = 0.6667 -0.4444
et le polynôme ℎ obtenu est :
ℎ = 0,6667 − 0,4444

2. Manipulation de fonctions polynomiales dans MATLAB


Soit le polynôme suivant :

= 6h h
+ 6h2& . h2&
+ ⋯+ 6 . + 6& . + 6N

où n est le degré du polynôme et 6` = 0,1,2, … , . sont les coefficients du


polynôme.
Ce polynôme peut être écrit sous la forme :
= ¡ … … 6h . + 6h2& . + 6h2 . … + 6& . + 6N ¢

Après factorisation, on a :
= 6h . − & . − . − … − h

Enseignant : ZINSALO Joël M./EPAC - UAC Page 108


Tapez une équation ici.

où N, &, ,…, h sont les racines du polynômes ( .

(
Exemple :
= I
+ 2. − 7. − 8 + 12

Ce polynôme est équivalent à :

= £"¡ +2 − 7¢ − 8$ + 12¤

ou encore :
= −1 −2 +2 +3

Un polynôme d’ordre n possède n racines qui peuvent être réelles ou complexes.


Dans MATLAB, un polynôme est représenté par un vecteur contenant les
coefficients dans un ordre décroissant.

Exemple :
Le polynôme : =2 + + 4 + 5 qui est représenté dans MATLAB par :

>>P=[2 1 4 5];
a pour racines `. Pour trouver ces racines, on doit exécuter la fonction ‘roots’.
D’où :
>>r=roots(P);

et le résultat donné est :

>> r
r=
0.2500 + 1.5612i
0.2500 - 1.5612i
-1.0000

Les trois racines de ce polynôme (dont 2 sont complexes) sont données sous
forme d’un vecteur colonne. Quand les racines ` sont connues, les coefficients
peuvent être recalculés par la commande ‘poly’.

Exemple :
>>poly(r)
ans =
1.0000 0.5000 2.0000 2.5000

Enseignant : ZINSALO Joël M./EPAC - UAC Page 109


Tapez une équation ici.

La fonction ‘poly’ accepte aussi une matrice comme argument dont elle retourne
le polynôme caractéristique.
Exemple :
>>A =[3 1;2 4];
>>p =poly(A)
p=
1 -7 10
Ainsi, le polynôme caractéristique de la matrice A est :
E( = − 7 + 10
Les racines de ce polynôme sont les valeurs propres de la matrice A. ces racines
peuvent être obtenues par la fonction ‘eig’ :
>>Val_prop =eig(A)
Val_prop =
2
5

2.1. Évaluation d’un polynôme


• Pour évaluer le polynôme ( en un point donné, on doit utiliser la fonction
‘polyval’. On évalue ce polynôme pour = 1, par exemple :
>>polyval(P,1)
ans =
12
• Exemple :
On veut évaluer en =2.5 le polynôme suivant :
,=3 I
−7 +2 + +1
>>C=[3 -7 2 1 1];
>> =2.5;
>> , =polyval(C,x)
, =
23.8125

Si x est un vecteur contenant plusieurs valeurs, y sera aussi un vecteur qui


contiendra le même nombre d’éléments que x.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 110


Tapez une équation ici.

2.2. Interpolation au sens des moindres carrés

Dans le domaine de l’analyse numérique des données, on a souvent besoin


d’établir un modèle mathématique liant plusieurs séries de données
expérimentales. L’interpolation polynomiale consiste à approcher la courbe liant
les deux séries de mesures par un polynôme. Les coefficients optimaux de ce
polynôme sont ceux qui minimisent la variance de l’erreur d’interpolation. Ce
principe (voir cours) est connu sous le nom de la méthode des moindres carrés.

courbe , = (
La fonction ‘polyfit’ retourne le polynôme P de degré n permettant d’approcher la
au sens des moindres carrés.

Exemple :
>> x=[1.1 2.3 3.9 5.1];
>>y=[3.887 4.276 4.651 2.117];
>>a=polyfit(x,y,length(x)-1)
a=
-0.2015 1.4385 -2.7477 5.4370
Ainsi, le polynôme d’interpolation de y (d’ordre length(x)-1=3) est :

( = −0,2015 + 1,4385 − 2,7477 + 5,4370

Pour déduire l’erreur entre les valeurs expérimentales et le modèle obtenu par la
fonction ‘polyfit’, on dispose de la fonction ‘polyval’ qui retourne la valeur du
polynôme P pour toutes les composantes du vecteur (ou de la matrice) x.

Ainsi, cette fonction donne :

>>yi=polyval(a,x)
yi =
3.8870 4.2760 4.6510 2.1170

On remarque ici que les valeurs expérimentales de y sont bien restituées (y=yi).
Dans ce cas, on a un coefficient de corrélation qui est égal à 1 (voir la définition
de ce coefficient dans le cours).

Enseignant : ZINSALO Joël M./EPAC - UAC Page 111


Tapez une équation ici.

Pour mieux comprendre ces fonctions prédéfinis dans MATLAB, on va simuler


une courbe expérimentale par une sigmoïde à laquelle on superpose un bruit du
type Gaussien. Cette courbe sera donnée par :

1
,= + 0,05 6.D.¡1, .›Aℎ( ¢
1+ 23

Le programme correspondant à l’approximation des ces données dans MATLAB


(regres.m, par exemple) est le suivant :

%******************************************
% Génération de données expérimentales: *
% y=1./(1+exp(-x))+0.05*randn(1,length(x))*
%******************************************

clc; % Effacer l'écran


clear all; % Effacer des variables de l'espace de travail
x=-5:0.1:5; % Intervalle de définition et de calcul de la sigmoïde

% Fonction sigmoïde bruitée


y=1./(1+exp(-x))+0.05*randn(1,length(x));
plot (x,y); % Tracé de la sigmoïde bruitée
title('Fonction sigmoïde bruitée - Polynôme d''interpolation');
xlabel('x');ylabel('y');

% Polynôme d'interpolation d'ordre 1


P=polyfit(x,y,1);

% Valeurs du polynôme d'interpolation


Vp=polyval(P,x);

% Tracé du polynôme d'interpolation


hold on;

plot(x,Vp,'--');
% Calcul de l'erreur d'interpolation
erreur=y-Vp;
% Tracé de la courbe de l'erreur
plot(x,erreur,':')
grid

gtext('Mesures')
gtext('Erreur')
gtext('Modèle')
hold off
% Affichage du polynôme d'interpolation
disp('Polynôme d''interpolation')
P
Var_erreur=num2str(std(erreur).^2);
disp(['La variance de l''erreur d''interpolation est : ',Var_erreur])

Enseignant : ZINSALO Joël M./EPAC - UAC Page 112


Tapez une équation ici.

Après exécution du programme, on obtient à l’ordre 1 (droite affine : fig. 1 ci-


dessous) les résultats suivants :
>> regres
Polynôme d'interpolation
P=
0.1309 0.5008
La variance de l'erreur d'interpolation est : 0.011277
On remarque ici que le polynôme d’interpolation d’ordre 1 n’est pas une bonne
approximation pour ces données. En effet, un polynôme d’ordre 5 donne une
meilleure approximation de la sigmoïde (fig. 2). Ainsi, dans le programme
précédent (sigreg.m), on change donc le ‘1’ par ‘5’ dans la fonction ‘polyfit’, et on
obtient les résultats suivants :

>> regres
Polynôme d'interpolation
P=
0.0002 -0.0000 -0.0111 0.0008 0.2326 0.4844

La variance de l'erreur d'interpolation est : 0.002279

Fig.1 : Interpolation linéaire

Enseignant : ZINSALO Joël M./EPAC - UAC Page 113


Tapez une équation ici.

Fig.2 : Interpolation par un polynôme d’ordre 5

3. Interpolation linéaire et non linéaire

Une interpolation consiste à relier les points expérimentaux par une courbe sous
forme de segments de droites ou de courbes polynomiales. Ceci peut être réalisé
par la fonction ‘interp1’. La commande ‘interp1(x, y, xi, ’type’)’ retourne un
vecteur de mêmes dimensions que ` et dont les valeurs correspondent aux
images des éléments de ` déterminées par interpolation sur x et y. Si f est
l’interpolation de y, la chaîne ‘type’ spécifie alors le type d’interpolation qui doit
être parmi les suivants :

• ‘linear’ → interpolation linéaire


• ‘spline’ → interpolation par splines cubiques,
• ‘cubic’ → interpolation cubique.

Si on ne spécifie pas le type, l’interpolation linéaire est choisie par défaut.

Exemple 1 :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 114


Tapez une équation ici.

>>x = 0:10; y = sin(x); xi = 0:.25:10;


>>yi = interp1(x,y,xi,’cubic’); plot(x,y,'o',xi,yi)

Fig. 3 : Interpolation cubique

Exemple 2 :
Dans le cas suivant, on étudiera ces différents types d’interpolation sur un même
exemple de valeurs discrètes de la fonction ‘cosinus’. On appellera l’algorithme :
‘interpol.m’.

%*************************************
% Utilisation de la fonction interp1 *
%*************************************

clear all;
clc;
x=0:10;
y=cos(x); % Points à interpoler
z=0:0.25:10; % Le pas du vecteur z est inférieur à celui de x

% Interpolation linéaire
figure(1);
f=interp1(x,y,z);

% Tracé des valeurs réelles et de la courbe d'interpolation


plot(x,y,'*r',z,f);
grid on;
xlabel('Interpolation');

Enseignant : ZINSALO Joël M./EPAC - UAC Page 115


Tapez une équation ici.

% Interpolation par splines cubiques


figure(2);
f=interp1(x,y,z,'spline');
plot(x,y,'*r',z,f);
grid on;
xlabel('Interpolation par splines cubiques');

En exécutant ce programme, on obtient les courbes suivantes :

Fig. 4 : Interpolation linéaire

Enseignant : ZINSALO Joël M./EPAC - UAC Page 116


Tapez une équation ici.

Fig. 5 : Interpolation par splines cubiques

La fonction ‘interp2’ réalise l’interpolation dans l’espace trois dimensions (3D).

4. Interpolation de Lagrange
Exemple :
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

• Écrire la formule d’interpolation de Lagrange qui permet d’interpoler les


différents points de données précédentes.
• Trouver les masses volumiques du sodium pour T=251 °C, T=305 °C et
T=800 °C en utilisant l'interpolation de Lagrange.

Solution :
a) Puisque le nombre de points est égal à 3, alors le polynôme de Lagrange
sera de degré 2. Ce polynôme s’écrit :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 117


Tapez une équation ici.

¡W − Wa ¢
(W = q (W` ¥
aM&
¡W` − Wa ¢
`M&
a¦`

(W − 205 . W − 371
Soit :
W − 94 W − 371
(W = . 929 + 902
94 − 205 94 − 371 205 − 94 . 205 − 371
W − 94 . W − 205
+ . 860
371 − 94 . 371 − 205

D’où pour T=251 °C, on obtient R(251) = 890.5 kg/m3.


L'algorithme de calcul de R(251), R(305) et R(800) est : ‘polylag.m’ qui est listé ci-
dessous :

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

La fonction ‘lag.m’ est un sous programme permettant de donner l’interpolation


de Lagrange. La liste de ce sous programme est :

%***************************
% Sous-programme Lagran_.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
Ri=Ri+y*R(i)
end
end
return

Enseignant : ZINSALO Joël M./EPAC - UAC Page 118


Tapez une équation ici.

Il suffit maintenant d’exécuter le programme ‘polylag.m’ pour obtenir les résultats


de Ri. Ces résultats sont les suivants :

>>Ri
Ri =
890.5561 876.9316 742.45559

5. Résolution d’équations et de Systèmes d’équations non Linéaire


5.1. Résolution d’équations non Linéaires

Dans cette partie, on s’intéressera à la méthode de Newton-Raphson pour la

qui annulera la fonction ( .


résolution des équations non linéaires à une ou à plusieurs variables. On

cherchera ensuite à trouver la valeur

La méthode de Newton-Raphson permet d’approcher par itérations la valeur au

(
moyen de la relation suivante :

= −
h
h•& h K(
h

Dans toutes les méthodes itératives, il est nécessaire pour éviter une divergence
de la solution, de bien choisir la valeur initiale N. Celle-ci peut être obtenue
graphiquement.
On se propose d’appliquer cette méthode pour la recherche des racines de la

(
fonction non linéaire suivante :
= 3
− 2. cos
Dans un premier temps, on se propose de tracer la courbe représentative de cette
fonction en utilisant le programme ci-dessous ‘pnum1.m’:

%*************************
% Etude de la fonction : *
% f(x)=exp(x)-2.cos(x) *
%*************************

x=-1:0.1:1;
f=exp(x)-2*cos(x);
plot(x,f); grid on;
title('Fonction : f(x)=exp(x)-2.cos(x)');

judicieux de choisir un N = 0,5 ; car 0,5 est proche de zéro pour avoir une convergence rapide.
Après exécution du programme, on obtient la courbe sur la figure 6. D’après cette courbe, il est

Enseignant : ZINSALO Joël M./EPAC - UAC Page 119


Tapez une équation ici.

La fonction dérivée ( a pour expression : K(


= 3
+ 2 sin .

fig. 6 : Localisation de la valeur N où N §0

Pour chercher la solution de , on peut rajouter au programme précédent


‘pnum1.m’ quelques lignes :

%*************************
% Etude de la fonction : *
% f(x)=exp(x)-2.cos(x) *
%*************************
clf;
x=-1:0.1:1;
f=exp(x)-2*cos(x);
figure(1);
plot(x,f); grid on;
title('Fonction : f(x)=exp(x)-2.cos(x)');

clear all;
clc;
x(1)=input('Donner la valeur initiale x(1): \n');
e=1e-10;
n=5000;
for i=2:n
f=exp(x(i-1))-2*cos(x(i-1));
diff=exp(x(i-1))+2*sin(x(i-1));
x(i)=x(i-1)-f/diff;
if abs(x(i)-x(i-1))<=e
xp=x(i);
fprintf('xp=%f\n',x(i));
break;
end
end

Enseignant : ZINSALO Joël M./EPAC - UAC Page 120


Tapez une équation ici.

j=1:i;
figure(2);
plot(j,x(j),'*r',j,x(j));
xlabel('Nombre d''itérations');
title('Convergence de la solution : Méth. de Newt.-Raph.');
disp('Les valeurs successives de x(i) sont :');
x'

successives de (
Ainsi, après exécution de ce programme, on obtient alors toutes les valeurs
pour chaque itération. Les résultats sont donnés ci-dessous.
On remarque qu’il y a convergence après 5 itérations :

>>pnum1
Donner la valeur initiale x(1):
0.5
xp=0.539785
Les valeurs successives de x(i) sont :
ans =
0.5000
0.5408
0.5398
0.5398
0.5398

Fig. 7 : Évolution de la solution x(i) en fonction du nombre d’itérations


Dans MATLAB, on peut obtenir la même solution avec la fonction ‘fzero’. Pour

programmé ( .
cela, il faut créer le fichier.m MATLAB (‘f.m’, par exemple) dans lequel sera

Enseignant : ZINSALO Joël M./EPAC - UAC Page 121


Tapez une équation ici.

%***********************************
% Fichier MATLAB représentant f(x) *
%***********************************
function f=f(x)
f=exp(x)-2*cos(x)

Pour obtenir la solution de ( = 0 au voisinage de = 0,5 on exécute la


commande ‘fzéro(‘f’,0.5)’. Cette fonction affiche les valeurs obtenues de ( à

chaque itération pour donner à la fin la solution recherchée .

>>d=fzero('f',0.5)
f=
-0.1064
-0.1430
-0.0692
-0.1579
-0.0536
-0.1788
-0.0313
-0.2080
5.8950e-004
-3.0774e-005
-4.1340e-009
2.2204e-016
-8.8818e-016

d=
0.5398

5.2. Résolution de systèmes d’équations non Linéaires

Nous allons appliquer cette méthode à un cas très simple : résolution d’un

( ,, = 0
système de deux équations non linéaires à 2 inconnues, par exemple :

V
›( , , = 0
l’algorithme de Newton-Raphson devient :

¨ ( ,, ¨ ( ,,
2&

f ¨ ¨, k r2& , ,r2&
", $ = " , $ − e .£ ¤
r r2&
r r2& ¨›( , , ¨›( , , j › r2& , ,r2&

d ¨ ¨, i

Enseignant : ZINSALO Joël M./EPAC - UAC Page 122


Tapez une équation ici.

Exemple :
( ,, = − +, =0
V
›( , , = −, −, =0

Les fonctions et › admettent comme dérivées partielles :

¨ ( ,, ¨ ( ,,
=2 −1 = 2,
f ¨ ¨, k
e¨›( , , ¨›( , , j
= 2. = −2, − 1
d ¨ ¨, i

Afin de déterminer si le système admet des solutions sur Š−1, 1] × Š−1, 1], on
et › dans le but de montrer
l’existence éventuelle d’un couple ( , , pour lequel elles s’annulent. L’algorithme
tracera les surfaces représentatives des fonctions

‘pnum2.m’ ci-dessous permet de tracer en 3 dimensions ces deux fonctions sur le


même graphe.

%*****************************
% Fonctions à deux variables *
%*****************************

x=-1:0.1:1;
y=x;
[x,y]=meshgrid(x,y);
f=x.^2+y.^2-x;
g=x.^2-y.^2-y;
figure(1);
mesh(f);
grid on;
hold on;
mesh(g);
title('Courbes f(x,y) et g(x,y)');
xlabel('x'); ylabel('y');zlabel('f(x,y) et g(x,y)');
hold off;

On peut remarquer sur le graphe obtenu (en 3D) que les 2 fonctions et ›
s’annulent simultanément en différents points. Grâce aux fonctionnalités de
MATLAB, on peut rechercher les solutions éventuelles ou les conditions initiales
pour l’algorithme de Newton-Raphson en faisant varier simultanément les
et , à l’aide de la fonction ‘meshgrid’. On obtient alors les courbes de
niveaux des fonctions ( , , et ›( , , .
variables

Enseignant : ZINSALO Joël M./EPAC - UAC Page 123


Tapez une équation ici.

Fig. 8 : Fonctions ( , , et › , , en 3D

On peut développer davantage l’algorithme ‘pnum2.m’ pour chercher, par


exemple, les conditions initiales et les solutions évidentes.

%*****************************
% Fonctions à deux variables *
%*****************************
x=-1:0.1:1;
y=x;
[x,y]=meshgrid(x,y);
f=x.^2+y.^2-x;
g=x.^2-y.^2-y;
figure(1);
mesh(f);
grid on;
hold on;
mesh(g);
title('Courbes f(x,y) et g(x,y)');
xlabel('x'); ylabel('y');zlabel('f(x,y) et g(x,y)');
hold off;
figure(2);
plot(f);
hold on;plot(g);grid on;
title('Intersection de f et g');
xlabel('x');ylabel('y');
axis([0 20 -0.5 0.5]);
gtext('f(x,y)');
gtext('g(x,y)');

Après exécution de ‘pnum.m’, on obtient les courbes de et (fig. 9) en deux


dimensions :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 124


Tapez une équation ici.

Fig. 9 : Fonctions ( , , et › , , en 2D

Les solutions évidentes s’obtiennent par :

>> [i,j]=find(f==0 & g==0)


i=
11
j=
11

>>[x(11),y(11)]
ans =
-1 0

De cette façon, on peut retrouver plusieurs solutions évidentes si le pas


d’échantillonnage est assez faible. Avec le pas de 0,1 choisi, on ne retrouve pas la
solution évidente (0,0).

Graphiquement, en faisant un zoom autour de l’abscisse ‘x=11’ avec la fonction


‘axis’, on peut cerner cette solution évidente.

>>axis([10.5 11.5 -0.02 0.02]);

Enseignant : ZINSALO Joël M./EPAC - UAC Page 125


Tapez une équation ici.

Fig. 10 : zoom autour de l’abscisse = 11

Ainsi, l’algorithme de Newton-Raphson appliqué au système précédent, est


représenté par la suite du programme MATLAB (pnum2.m) :

%*****************************
% Fonctions à deux variables *
%*****************************

clf;
clear all;
clc;
x=-1:0.1:1;
y=x;
[x,y]=meshgrid(x,y);
f=x.^2+y.^2-x;
g=x.^2-y.^2-y;
figure(1);
mesh(f);
grid on;
hold on;
mesh(g);
title('Courbes f(x,y) et g(x,y)');
xlabel('x'); ylabel('y');zlabel('f(x,y) et g(x,y)');
hold off;
figure(2);
plot(f);
hold on;plot(g);grid on;
title('Intersection de f et g');
xlabel('x');ylabel('y');
axis([0 20 -0.5 0.5]);
gtext('f(x,y)');
gtext('g(x,y)');
hold off;

Enseignant : ZINSALO Joël M./EPAC - UAC Page 126


Tapez une équation ici.

clear x y;
% Conditions initiales
x(1)=0.85; y(1)=0.35;

% Algorithme de Newton-Raphson
for i=2:10
diff=inv([2*x(i-1)-1 2*y(i-1);2*x(i-1) -2*y(i-1)-1]);
f=x(i-1)^2-x(i-1)+y(i-1)^2;
g=x(i-1)^2-y(i-1)^2-y(i-1);
xy=[x(i-1) y(i-1)]'-diff*[f,g]';
x(i)=xy(1);
y(i)=xy(2);
end

Le choix des conditions initiales influe sur la convergence de l’algorithme. Dans


ce qui suit (suite de ‘pnum2.m’), nous étudierons l’évolution des solutions par 2
jeux de conditions initiales.

%*****************************
% Fonctions à deux variables *
%*****************************
clf;
clear all;
clc;
x=-1:0.1:1;
y=x;
[x,y]=meshgrid(x,y);
f=x.^2+y.^2-x;
g=x.^2-y.^2-y;
figure(1);
mesh(f);
grid on;
hold on;
mesh(g);
title('Courbes f(x,y) et g(x,y)');
xlabel('x'); ylabel('y');zlabel('f(x,y) et g(x,y)');
hold off;
figure(2);
plot(f);
hold on;plot(g);grid on;
title('Intersection de f et g');
xlabel('x');ylabel('y');
axis([0 20 -0.5 0.5]);
gtext('f(x,y)');
gtext('g(x,y)');
hold off;
clear x y;
% Conditions initiales
x(1)=0.85; y(1)=0.35;
% x(1)=0.2; y(1)=0.1;
% Algorithme de Newton-Raphson
for i=2:10
diff=inv([2*x(i-1)-1 2*y(i-1);2*x(i-1) -2*y(i-1)-1]);
f=x(i-1)^2-x(i-1)+y(i-1)^2;
g=x(i-1)^2-y(i-1)^2-y(i-1);
xy=[x(i-1) y(i-1)]'-diff*[f,g]';
x(i)=xy(1);

Enseignant : ZINSALO Joël M./EPAC - UAC Page 127


Tapez une équation ici.

y(i)=xy(2);
end

% Tracé des courbes d'évolution des solutions


figure(3);
plot(1:10,x,'*r',1:10,x);
hold on;
plot(1:10,y,'og',1:10,y);
title('Evolution des solutions : ***-->x et ooo-->y');
grid on;
hold off;

L’évolution des solutions x et y (pour les conditions initiales : & = 0,85 et ,&
0,35) est donnée par la figure 11 ci-après. Ces solutions sont les suivantes :

>>x
x=
0.8500 0.7800 0.7719 0.7718 0.7718 0.7718 0.7718 0.7718 0.7718 0.7718

>>y
y=
0.3500 0.4271 0.4197 0.4196 0.4196 0.4196 0.4196 0.4196 0.4196 0.4196

Les 2 solutions peuvent être obtenues au bout de 2 itérations grâce au bon choix
des conditions initiales. Avec les conditions initiales x(1)=0,2 et y(1)=0.1, il y a
convergence vers la solution (0,0) au bout de 3 itérations.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 128


Tapez une équation ici.

Fig. 11 : Convergence des solutions (x,y) : x(1)=0,85 et y(1)=0,35

Pour les conditions initiales x(1)=0,2 et y(1)=0,1, l’évolution des solutions x et y


est :

>>x
x=
0.2000 -0.1031 -0.0112 -0.0002 -0.0000 -0.0000 -0.0000 0 0 0

>>y
y=
0.1000 -0.0594 -0.0054 -0.0001 -0.0000 -0.0000 -0.0000 0 0 0

La boite à outil ‘Optimisation Toolbox’ propose les fonctions ‘fsolve’ et ‘fsolve2’ qui
permettent respectivement, la recherche des racines d’une fonction dans un
intervalle donné et les solutions d’équations non linéaires et de systèmes
d’équations non linéaires.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 129


Tapez une équation ici.

Fig. 12 : Convergence des solutions (x,y) : x(1)=0,2 et y(1)=0,1

Enseignant : ZINSALO Joël M./EPAC - UAC Page 130


Tapez une équation ici.

Chapitre 5 :

Intégration numérique des fonctions

1. Introduction
Dans la plupart des cas, les fonctions analytiques, du fait de leurs complexités,
ne sont pas intégrables analytiquement. Dans d'autres cas, on a des fonctions qui
sont évaluées numériquement en différents points de l’intervalle où ces dernières
sont données, et l’intégrale de ces types de fonctions ne peut être obtenue que par
des approches numériques. Dans ce chapitre, on s’intéresse aux méthodes
utilisées fréquemment ; à savoir la méthode des trapèzes, la méthode de Simpson,
les formules de Newton-Cotes et la méthode de Gauss. Nous étudierons
également les méthodes de calcul d’intégrales doubles et les intégrales des
fonctions non définies sur leurs bornes.

2. Méthodes d’intégrations numériques

Soit ( la fonction à intégrer sur Š6, ']. L’intégrale s de (


2.1. Méthode des trapèzes
s’écrit en utilisant la
méthode des trapèzes :
©

s=L ( .D = +2 +2 + ⋯ + 2. +⋯+2 +2 +ª
4 2 & ` h h•&

h

s= • + + 2q ‚+ª
2 & h•& `
`M

où ℎ = =6+ − 1 .ℎ ; = et = 1, 2, 3, … , ., . + 1.
©24
h
; ` ` `

Le terme représentant l’erreur est :


'−6 '−6
ª≈− . ℎ . ¬" ≈ − . ¬"
12 12.
¬" est la moyenne de "
sur l’intervalle [6, ']. L’erreur ª est inversement
proportionnelle à la valeur de . .
Si la fonction est donnée sur les intervalles réguliers ` − `2& = ℎ , la méthode
des trapèzes peut être écrite dans Matlab sous la forme :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 131


Tapez une équation ici.

s = ℎ ∗ £-: ( − 0.5 ∗ " 1 + ¡ .›Aℎ ¢$¤

avec :
-: = & + + +⋯+ ` + ⋯+ h + h•&

On peut également faire un programme pour calculer l'intégrale s.


Celui-ci appelé 'trapez_v.m' par exemple, est listé ci-dessous :

function I=trapez_v(g,h)
I=(sum(f)-(f(1)+f(length(f)))/2)*h;

Considérons par exemple la fonction à intégrer : = + 2 − 1 sur un


intervalle [−10, 8] où le pas est "h" égal à 1. En mode interactif dans MATLAB
(mode commande), avant de lancer le programme 'trapez_v.m', on donne la
fonction ainsi que ses bornes :

>>x=-10:1:8;
>>f=x.^2+2*x-1;
>>h=1;

On exécute ensuite le programme 'trapez_v.m', et on obtient :

>>I=trapez_v(f,h)
I=
2265

En utilisant les programmes 'trapez_n.m' et 'trapez_g.m' listés ci-après, on peut


calculer aussi l'intégrale I.

>>I=trapez_n('fonction_f',a,b,n)
ou
>>I=trapez_g('fonction_f',a,b,n)

Liste du programme 'trapez_n.m' :

function I=trapez_n(fonction_f,a,b,n)
h=(b-a)/n;
x=a+(0:n)*h;
f=feval(fonction_f,x);
I=trapez_v(f,h)

Enseignant : ZINSALO Joël M./EPAC - UAC Page 132


Tapez une équation ici.

Liste du programme 'trapez_g.m' :

function I=trapez_g(fonction_f,a,b,n);
n=n;
hold off;
h=(b-a)/n;
x=a+(0:n)*h;
f=feval(‘fonction_f’,x);
I=h/2*(f(1)+f(n+1));
if n>1
I=I+sum(f(2:n))*h;
end

h2=(b-a)/100;
xc=a+(0:100)*h2;
fc=feval(‘fonction_f’,xc);
plot(xc,fc,'r');
hold on;
title('Méthode des trapèzes');
xlabel('x');
ylabel('y');
grid on;
plot(x,f,'m');
plot(x,zeros(size(x)),'c')

for i=1:n;
plot([x(i),x(i)],[0,f(i)],'g');
end

La fonction 'fonction_f' est donnée par le programme 'fonction_f.m'.


Remarque :
La fonction y=feval('sin',x) est équivalente à y=sin(x).
Exemples :
1°) On donne la fonction 'fonction_f' par le sous-programme 'fonction_f.m' listé ci-
dessous :

%****************
% fonction f(x) *
%****************
function f=f(x);
f=x+2*log(0.0000025235*x);

En exécutant le programme trapez_g('fonction_f',1,50,60), où les bornes et

obtient l'intégrale de ( sur Š1, 50Œ pour 60 pas :


sont égales respectivement à 1 et 50 et le nombre d'intervalles est égal 60, on

Enseignant : ZINSALO Joël M./EPAC - UAC Page 133


Tapez une équation ici.

>>trapez_g('fonction_f',1,50,60)
ans =
279.3889

Figure 1 : Intégrale de la fonction ( = + 2 › 2,5253. 102ž

2°) Un véhicule de masse m=2000 kg se déplace à la vitesse de V=30 m/s.


Soudainement, le moteur est débrayé à A 0. L'équation du mouvement après
l'instant A 0 est donnée par :

D
∙ ∙ 8,1 1200 6
D

où x est la distance linéaire mesurée à partir de A 0.

Dans cette équation (a), le terme de gauche représente la force d'accélération, le 1er
terme de droite représente la résistance aérodynamique exercée par le vent sur le
véhicule et le second terme est le coefficient de frottement. Calculer la distance au
delà de laquelle la vitesse de la voiture se réduit à 15 m/s.

Solution :
L'équation (a) peut être écrite sous la forme :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 134


Tapez une équation ici.

D
D =−
8,1 1200
L'intégration de cette équation donne :
N
D
L
&š 8,1 1200
Cette intégrale peut être évaluée par la méthode des trapèzes.

45 15
Si on se donne 60 intervalles (ou 61 points), on peut écrire :

15 1 ∆ ù 1,2,3, ⋯ ⋯ ,61 A ∆ 0,5


`
60

`
En définissant :

`
8,1 ` 1200
et en appliquant la méthode des trapèzes pour l'intégration, on obtient :
ž&

§ ∆ ∙ •q ` 0,5 & ž& ‚ '


`M&

Le programme suivant (trapeze.m) permet de calculer la valeur donnée par la


formulation précédente (b) :
>>trapeze
x=
127.5066
En comparant cette solution à la solution exacte (=127,51 m), on remarque que
l'erreur relative induite par cette méthode est de l'ordre de 2,7.10-3 %.
La liste du programme trapeze.m est la suivante :

clear;
clc;
nb_points=61;
i=1:nb_points;
h=(30-15)/(nb_points-1);
V=15+(i-1)*h;
f=2000*V./(8.1*V.^2+1200);
x=trapez_v(f,h)

3°) Connaissant l'intégrale exacte de la fonction √1 3 sur l'intervalle


Š0, 2Œ , on a s 4,006994 . Étudier l'effet du nombre d'intervalles sur l'erreur de
calcul en adoptant la méthode trapézoïdale :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 135


Tapez une équation ici.

s = L √1 3 D
N

Solution :

Le programme suivant 'trz.m' permet de calculer l'intégrale :

clc;
clear;
Iexact=4.006994;
a=0;b=2;
fprintf('\n Méthode Trapézoïdale étendue \n');
fprintf('\n n\t \t I\t Pourc. erreur relat.\n');
fprintf('---------------------------------------------\n');
n=1;
for k=1:10
n=2*n;
h=(b-a)/n;
i=1:n+1;
x=a+(i-1)*h;
f=sqrt(1+exp(x));
I=trapez_v(f,h);
erreur=abs(Iexact-I)/Iexact;
fprintf('%d\t %10.5f\t %10.8f\n',n,I,erreur);
end

Les résultats obtenus sont les suivants :

Méthode Trapézoïdale étendue

n I Pourc. erreur relat.

---------------------------------------------

2 4.08358 0.01911429
4 4.02619 0.00478998
8 4.01180 0.00119825
16 4.00819 0.00029965
32 4.00729 0.00007496
64 4.00707 0.00001878
128 4.00701 0.00000474
256 4.00700 0.00000123
512 4.00700 0.00000035
1024 4.00699 0.00000013

D'après ces résultats, on montre que quand est doublé, l'erreur relative décroît
par un facteur 4.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 136


Tapez une équation ici.

2.2. Méthode de Simpson

Soit s l'intégrale de ( sur l'intervalle Š6, ']. Par la méthode de Simpson, s s'écrit :

h2&

© h

s=L ( D = ¯ (1 + (. + 1 + 4 q +2 q ±+ª
4 3
`M `M
`→p4`° `→`gp4`°

−1 '−6
ù ª = ²(Δ I
; ( = £6 + ¤ A ℎ =
ℎ .
Le terme ª est donné par :
ℎI ´´´´´
ª ≈ −(' − 6 (I
180
et ´´´´´
(I est la moyenne de (I
( sur l'intervalle ouvert ]6, 'Š.
Exemple :
Évaluer l'intégrale de ( = √1 + 3 sur l'intervalle Š0, 2] avec la méthode de
Simpson pour . = 2, . = 4, . = 8 et . = 16.

Solution :
La liste du programme 'msimp.m' est la suivante :

clc;
clear;
Iexact=4.006994;
a=0;b=2;
fprintf('\n Méthode de Simpson \n');
fprintf('\n n\t \t I\t Pourc. erreur relat.\n');
fprintf('---------------------------------------------\n');
n=1;
for k=1:4
n=2*n;
h=(b-a)/n;
i=1:n+1;
x=a+(i-1)*h;
f=sqrt(1+exp(x));
I=h/3*(f(1)+4*sum(f(2:2:n))+f(n+1));
if n>2
I=I+h/3*2*sum(f(3:2:n));
end
erreur=abs(Iexact-I)/Iexact;
fprintf('%d\t %10.5f\t %10.8f\n',n,I,erreur);
end

Enseignant : ZINSALO Joël M./EPAC - UAC Page 137


Tapez une équation ici.

Les résultats de cet algorithme sont donnés ci-dessous :

Méthode de Simpson

n I Pourc. erreur relat.

---------------------------------------------

2 4.00791 0.00022935
4 4.00705 0.00001521
8 4.00700 0.00000101
16 4.00699 0.00000012

On montre qu'à partir de . = 8, l'erreur relative devient presque nulle (de l'ordre
de 102I % ).
Les programmes 'simp_v' et 'simp_n' peuvent être utilisés pour intégrer la fonction
. Dans l'algorithme 'simp_v(f,h)', est un vecteur contenant les ordonnées de
l'intégrante et œ représente le pas de l'intervalle d'intégration.
D'où :
>>I=simp_n('fonction_f',a,b,n)
permet d'évaluer l'intégrale s dans laquelle 'fonction_f' est le nom du sous-
programme contenant la fonction , 6 et ' sont les limites de l'intervalle

d'intégration et .
©24

.

Exemple :

Soit

ù . 8, ' 0,1 A › 9,81


· ¸ 23 ¸
© ¸ ∙CŸ 3•·

· ·
s L D L D
2N,¹· 2N,¹· ' ∙ C›

Ecrire un algorithme utilisant le sous-programme simp_v(f,h) (à écrire) et qui


permet d'évaluer sur 100 intervalles.

Solution :

Appelons ce programme simp.m par exemple, et donnons sa liste :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 138


Tapez une équation ici.

clear;
R=5;g=9.81;b=0.1;
x1=-0.90*R;x2=R;
h=(x2-x1)/100;
x=x1:h:x2;
f=(R^2-x.^2)./(b^2*sqrt(2*g*(x+R)));
I=simp_v(f,h)

Le sous-programme simp_v(f,h) est :

function I=simp_v(f,h);
n=length(f)-1; % Nombre d’intervalles

if n==1
fprintf('Données à un seul intervalle'\n');
return;
end

if n==2
I=h/3*(f(1)+4*f(2)+f(3));
return; % Revenir et continuer le calcul
end

if n==3
I=(3/8)*h*(f(1)+3*f(2)+3*f(3)+f(4));
return;
end

I=0;
if 2*floor(n/2)~=n ; %Le nombre d’intervalle doit être pair

Enseignant : ZINSALO Joël M./EPAC - UAC Page 139


Tapez une équation ici.

Chapitre 6 :

Résolution numérique des équations différentielles


et des équations aux dérivées partielles

1. Introduction

Le comportement dynamique des systèmes est un sujet très important en


physique. Un système mécanique par exemple, se traduit par des déplacements,
des vitesses et des accélérations. Un système électrique ou électronique, se
traduit par des tensions, des intensités et des dérivées temporelles sur ces
quantités. Un système thermique se traduit par des températures, des gradients
de température, de coefficients d’échanges thermiques, etc. En général, les
équations utilisées pour décrire de tels comportements dynamiques, incluent des
quantités inconnues représentant les fonctions recherchées et leurs dérivées.

Une équation qui comporte une ou plusieurs dérivées de la fonction inconnue est
appelée ‘équation différentielle’, qui est représentée dans MATLAB par
l’abréviation ‘ODE’. L’ordre de cette équation est déterminé par l’ordre du degré le
plus élevé de la dérivation.

Les équations différentielles peuvent être classées en deux catégories : les


équations différentielles avec des conditions initiales et les équations
différentielles avec des conditions aux limites.

2. Equations différentielles du 1er ordre

Les équations du 1er ordre à conditions initiales peuvent être écrites sous la
forme :
, K (A = (,, A
º
,(0 = ,N
où (,, A est une fonction de , et de A, et la seconde équation représente la
condition initiale sans laquelle la solution de l’équation différentielle ne peut être
évaluée.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 140


Tapez une équation ici.

Exemple 1 :
Soit à résoudre l’équation différentielle suivante :
D
7∙ = −n ∙ +7∙›
DA
où :
7 = 70 G›
º › = 9,81 »/G›
n = 0,27 G›/

(A . On choisit un pas de temps ℎ = 0,1 -, et on


donne comme condition initiale (A = 0 = 0. Tracer la solution de cette équation
Déterminer numériquement

différentielle pour 0 ≤ A ≤ 20 -.

Solution :

L’équation :
D
7∙ = −n ∙ +7∙›
DA

est équivalente à K
A = ,, A où 0 = 0 et

n
,, A = − ∙ + ›.
7

La solution de cette équation peut être effectuée par la méthode d’Euler, qui
consiste à écrire :

h•& ≈ h +ℎ∙ ,, A

Le programme MATLAB suivant (eul1.m) permet la résolution de cette équation :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 141


Tapez une équation ici.

%*******************************************
% Résolution d'une équation différentielle *
% par la méthode d'Euler à l'ordre 1 *
%*******************************************
clear ; clc ;
t=0 ;n=0 ;V=0 ;
C=0.27 ;M=70 ;g=9.81 ;h=0.1 ;
t_R(1)=t ;V_R(1)=V ;

while t<=20
n=n+1 ;
V=V+h*(-C/M*V.^2+g);
t=t+h;
t_R(n+1)=t;
V_R(n+1)=V;
end

plot(t_R,V_R);
xlabel('Temps (en s)');
ylabel('Vitesse (en m/s)');
grid on;

On obtient ainsi un graphique (fig. 1) qui donne l’évolution de la solution (A en fonction du


temps.

Fig. 1 : évolution de la vitesse en fonction du temps

Enseignant : ZINSALO Joël M./EPAC - UAC Page 142


Tapez une équation ici.

Exemple 2 :
On veut résoudre l’équation différentielle du 1er ordre suivante :
, K + , &,š = 1
º
,(0 = 10
en utilisant les formules d’Adams ouvertes à l’ordre 1 et les formules d’Adams
(prédicteur-correcteur) pour un pas ℎ = 0,1. On donne la limite de convergence
“ = 102š.

• Calculer , par les deux méthodes pour 0 ≤ A ≤ 1,5.


• Ecrire un programme dans Matlab permettant de calculer et de tracer les
résultats de ces deux méthodes sur le même graphe,
• Conclusion.

Solution :
* Les formules d’Adams (prédicteur-correcteur) consiste à écrire la solution sous
la forme :

,h•& = ,h + ¡ ,h•& , Ah•& + ,h , Ah ¢
2
Dans ce cas, on a :
,K = ,, A = 1 − , &,š
or ,h•& est inconnue ; donc ,h•& , Ah•& est aussi inconnue.
Dans ce cas, on utilise la méthode itérative suivante :

,h•& ≈ ,h + £ ",h•& , Ah•& $ + ,h , Ah ¤
r r2&
2

où ,h•& est la kième valeur itérée de ,h•& , et ,h•& est une valeur arbitraire initiale
r N

de ,h•& . La résolution doit se faire de façon à ce que :

¼,h•& − ,h•& ¼ ≤ “
r r2&

Si ,& = ,N = 10, on obtient :


N

ℎ &,š
,h•& = ,h + £−",h•& $ − ,h&,š + 2¤
r r2&
2

On arrête les calculs si ¼,h•& − ,h•& ¼ ≤ “.


r r2&

Enseignant : ZINSALO Joël M./EPAC - UAC Page 143


Tapez une équation ici.

** Formules d’Adams ouvertes à l’ordre 1 (Méthode d’Euler) :

Pour la méthode d’Euler, la solution ,h•& est donnée par l’expression :

,h•& = ,h + ℎ (,, A

b) Le programme suivant ‘eul2.m’ permet d’inclure les 2 méthodes :

%*******************************************
% Résolution d'une équation différentielle *
% du 1er ordre par deux méthodes *
%*******************************************
clear;
clf;
hold off;
% Méthode d'Euler à l'ordre 1
y1(1)=10;t(1)=0;h=0.1;n=1;

while t(n)<1.5
n=n+1;
t(n)=t(n-1)+h;
y1(n)=y1(n-1)+h*(-y1(n-1).^1.5+1);
end

% Méthode du prédicteur-correcteur
ym(1)=10.5;t(1)=0;h=0.1;n=1;e=1e-4;n1=10000;

while t(n)<1.5
n=n+1;
t(n)=t(n-1)+h;
ym(n)=ym(n-1)+h*(-ym(n-1).^1.5+1);
% Itération succéssives et substitution
for k=1:n1
ymb=ym(n)+0.5*h*(-(ym(n)).^1.5-(ym(n-1)).^1.5+2);
if abs(ym(n)-ymb)<=e;
break;
printf('Erreur de (%d)=%f\n',k,abs(ym(n)-ymb));
end
if k==n1
fprintf('Pas de convergence pour t=%f\n',t(n));
end
end
end

fprintf('t=%f\t y1=%f\t ym=%f\n',t,y1,ym);


grid on;
hold on;
plot(t,y1,t,y1,'*');
plot(t,ym,'-r');
xlabel('t');ylabel('y');
gtext('***Méthode d''Euler (ordre 1)');
gtext('-Prédicteur-correcteur');

Enseignant : ZINSALO Joël M./EPAC - UAC Page 144


Tapez une équation ici.

Après exécution du programme ci-dessus, on obtient le graphique de la figure 2


ci-dessous dans lequel il y a les 2 solutions (méthode d'Euler et Méthode
d'Adams).

Fig. 2 : Comparaison des deux méthodes de résolution numérique.

3. Équations différentielles du second ordre

:"(A + 6(A :′(A + '(A . :(A = -(A


Ces équations sont du type :

º :′ (0 = :N′
: 0 = :N
où 6 A , ' A et - A sont des constantes ou des fonctions de A.
:N′ et :N sont des conditions initiales.
Avant d'appliquer la méthode d'Euler par exemple, on peut rendre l'équation
précédente à une équation du type 1er ordre. Dans ce cas, on pose ½ A = :′ A .
D'où :
½′ A + 6 A ½ A + ' A : A = - A
¾
½ 0 = :N′
Les conditions initiales deviennent :
:′ A = :, ½, A ; : 0 = :N
¾ &
½′ A = :, ½, A ; ½ 0 = :′ 0

Enseignant : ZINSALO Joël M./EPAC - UAC Page 145


Tapez une équation ici.

& (:, ½, A = ½(A ;


où : V
(:, ½, A = −6(A . ½ − ' A : A + - A
En faisant le calcul pas par pas, on obtient :
pour A = ℎ,
:& u = :N + ℎ. & :N , ½N , 0 = ℎ. ½N
¾
½& (A = ½N + ℎ (:N , ½N , 0 = ℎ. ¡−6. ½N − ':N + - 0 ¢
pour A = 2ℎ,
: :& , ½& , 0 = ℎ. ½&
= :& + ℎ.
¾
u &
½ (A = ½& + ℎ (:& , ½& , 0 = ℎ. ¡−6. ½& − ':& + - ℎ ¢
Ainsi, dans Matlab, le calcul pour chaque pas de temps peut être décrit par les
matrices ci-dessous.
On définit au départ , et par :
: & ½
, = ¿ À et =• ’=¿ À
½ −6½ − ': + -

ensuite, on écrit , ′ = (,, A , et on résout l'équation :


,h•& = ,h + ℎ. ,h , Ah
Exemple :
Résoudre l'équation différentielle suivante :
7. :" + l:′. |:′| + G: = 0 7 = 10
º: 0 = 0 avec : % l = 50
:′ (0 = 1 G = 200
On donne le pas ℎ = 0,05.
• Calculer :(A pour 0 ≤ A ≤ 0,1 en utilisant la méthode d'Euler à l'ordre 1
(calcul manuel).
• Calculer, en utilisant un algorithme dans Matlab, la solution :(A de
l'équation différentielle précédente pour 0 ≤ A ≤ 5.
• Tracer l'évolution de :(A pour ℎ = 0,05.

Solution :

:(0 = 0
a. Le système précédent peut être écrit sous la forme :

+
:′ = ½ ) ½(0 = 1
V 6=Â
Á
½ ′ = −6|½|½ − n: *
)
avec :

( n=Â
r

Enseignant : ZINSALO Joël M./EPAC - UAC Page 146


Tapez une équation ici.

Pour A = 0, on a :
:N = :(0 = 0
V
½N = :′ (0 = 1
A = 0,05,
:& = :N + ℎ½N = 0 + 0,05(1 = 0,05
¾
½& = ½N + ℎ. −6|½N |½N − n:N = 1 + 0,05¡−5|1| 1 − 20 . 0 ¢ = 0,75
A = 0,1,
: = :& + ℎ½& = 0,05 + 0,05 0,75 = 0,0875
¾
½ = ½& + ℎ. −6|½& |½& − n:& = 0,75 + 0.05¡−5|0,75| 0,75 − 20 . 0,05 ¢ = 0,5594

:
• b. Sous une forme vectorielle, l'équation précédente s'écrit :

+ , = " ½ $
, ′ = ,, A ½
* =• ‚

( −6|½|½ − n:
La méthode d'Euler donne :
,h•& = ,h + ℎ. ,h , Ah
Le programme 'eul3.m', listé ci-dessous permet de calculer la solution : A de
l'équation différentielle proposée :

%*******************************************
% Résolution d'une équation différentielle *
% du second ordre par la méthode d'Euler *
%*******************************************
clc;
clear;
clf;
hold off;
t_max=5;h=0.05;n=1;
y(:,1)=[0;1];t(1)=0;
while t(n)<t_max
y(:,n+1)=y(:,n)+h*def_f(y(:,n),t);yb=y;
t(n+1)=t(n)+h;
n=n+1;
end

axis([0 5 -1 1]);
plot(t,y(1,:),t,y(2,:),':r');
xlabel('Temps (en s)');ylabel('v(t) et u(t)');
gtext('Solution : v(t)');
L=length(t);
text(t(L-2),y(2,L-5),'Solution : u(t)');

Enseignant : ZINSALO Joël M./EPAC - UAC Page 147


Tapez une équation ici.

La fonction 'def_f(y,t)' est un sous programme dont la liste est dressée ci-
dessous :

%********************************
% Définition de la fonction : *
% def_f(y,t) *
%********************************
function f=def_f(y,t);
a=5;C=20;
f=[y(2);(-a*abs(y(2))*y(2)-C*y(1))];

La figure 3 ci-après donne l'évolution des solutions :(A et :′ (A = ½(A . La


solution :(A oscille autour de 0 et tend à s'amortir au fur et à mesure que le
temps t augmente. On pourrait éventuellement utiliser une autre méthode de
résolution numérique pour chercher :(A .
À titre d'exemple, essayer d'utiliser la méthode itérative d'Adams (Prédicteur-
Correcteur) pour retrouver la solution :(A .
Comparer cette solution à celle d'Euler à l'ordre 1.

Fig. 3 : évolution des solutions et en fonction du temps

Enseignant : ZINSALO Joël M./EPAC - UAC Page 148


Tapez une équation ici.

4. Méthode de Runge-Kutta
4.1. Méthode de Runge-Kutta du second ordre
Elle est de la forme :
,́`•& = ,` + ℎ (,` , A`
º ℎ
,`•& = ,` + ¡ (,` , A` + (,́`•& , A`•& ¢
2

G& = ℎ (,` , A`
ou bien sa forme standard peut être écrite ainsi :

G = ℎ (,` + G& , A`•&


Ã
1
,`•& = ,` + (G& + G
2
Cette méthode est équivalente à celle d'Euler à deux itérations seulement.
Exemple :
Une plaque métallique épaisse à la température de 200°C (ou 473°K) est
soudainement placée dans une chambre de 25°K, où la plaque est refroidie à la
fois par la convection naturelle et le transfert radiatif de chaleur. On donne les
constantes physiques suivantes :
Ä = 300G›/ → 6-- − ; : m:
+
) = 0,001 → ; :
) c = 0,25 → -: 6 DK é ℎ6.›
n = 900 Å/(G›. °[ → ℎ6 : − -Eé m:
*
ℎ = 30Å/( °[ → .A D A 6.- A D ℎ6 :
) Ç
) “ = 0,8 → é -- ; Aé
( È = 5,67.102É Ê/ °[ I → .-A6.A D l AB 6..

En supposant que la distribution de température dans le métal est uniforme,

DW c
l'équation donnant la température en fonction du temps est :

= ¡“. È 297I − W I + ℎÇ . 297 − W ¢


º DA Ä. n
W 0 = 473
Résoudre cette équation différentielle par la méthode de Runge-Kutta d'ordre 2
pour 0 < A < 180 et ℎ = 1-.
Solution :
La liste du programme 'RK2.m' est la suivante :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 149


Tapez une équation ici.

%*************************************
% Méthode de Runge-Kutta à l'ordre 2 *
%*************************************
clear;clf;clc;hold off;
ro=300;V=0.001;A=0.25;C=900;hc=30;
epsi=0.8;sig=5.67e-8;i=1;
h=1;T(1)=473;t(1)=0;
Av=A/(ro*C*V);Epsg=epsi*sig;

while t(i)<180
k1=h*fonc_(T(i),Av,Epsg,hc);
k2=h*fonc_(T(i)+k1,Av,Epsg,hc);
T(i+1)=T(i)+0.5*(k1+k2);
t(i+1)=t(i)+h;
i=i+1;
end
plot(t,T);grid on;xlabel('Temps (en s)');
ylabel('Température (en °K)');

La fonction 'fonc_.m' est un sous programme dont la liste est :

%***************************
% Sous programme : fonc_.m *
%***************************
function f=fonc_(T,Av,Epsg,hc);
f=Av*(Epsg*(297^4-T^4)+hc*(297-T));

La solution W(A obtenue de l'équation différentielle précédente est donnée par la


figure 4 ci-après. Ainsi, la température obtenue, décroît en fonction du temps
d'une façon hyperbolique.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 150


Tapez une équation ici.

Fig. 4 : évolution de la température du métal en fonction du temps

4.2. Méthode de Runge-Kutta à l'ordre 4

G = ℎ. (,` , A`
Cette méthode s'exprime sous la forme :

+ &
G
)G = œ £,` + & , A`•&/ ¤
) 2
G
*G œ £,` ,A ¤
2 `•&/
)
) GI œ ,` G , A`•&
(
et la solution ,`•& est donnée par :
1
,`•& ,` G 2G 2G GI
6 &

Exemple 1 :
Résoudre le système suivant par la méthode de Runge-Kutta à l'ordre 4 :
7& . ,&" l& ,&′ [& ,& l& , ′ B& , Ë& A
º l& ,&′ [& ,& 7 . , "
l& . Ì [& [ , [ ., 0
[, 7, l , [ [ , Ë A

" ′

avec les conditions initiales suivantes :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 151


Tapez une équation ici.

,& (0 = ,&′ (0 = , (0 = 0
¾
, ′ (0 = , (0 = , ′ (0 = 0

ℎ = 0,1
On donne :

Í
0 ≤ A ≤ 30

[& = [ = [ = 1
Les constantes sont égales à :

+7 = 7 = 7 = 1
) &
l& = l = 0,1
*Ë& (A = 0,01
)
(Ë (A = 0
Solution :
Si on définit : ,I = ,&′ ; ,š = , ′ A ,ž = , ′ , le système précédent devient :
, ′ = ,I
+ &′
), = ,š
), ′ = ,
) ž
) ′ (−l& ,I − [& ,& + l& ,š + [ , + Ë&
,I =
7&
* (l , + [& ,& − l& ,š − ([& + [ , + [ ,
),š′ = & I
) 7
) ([ ([
), ′ = , − l ,ž − +[ , +Ë

( ž
7
Ce système peut s'écrire sous la forme matricielle suivante :
, ′ = (,, A où , = Š,& , , , , , ,I , ,š , ,ž ]′

0 0 0 1 0 0
et :

0 0 0 0 1 0 0
f k 0
0 0 0 0 0 1 f k
e [ [ j 0
e− & l& [& eË j
0 − − 0 j
̅ = e 7& 7& 7& 7& j ,́ + e j
&

e [& ([& + [ [ l& l& j e7& j


e − − 0 j e0j
e 7 7 7 7 7 j Ë
[ ([ + [ l
0 − 0 0 − d7 i
d 7 7 7i

Le programme suivant 'RK4.m' permet la résolution du système précédent :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 152


Tapez une équation ici.

%*************************************
% Méthode de Runge-Kutta à l'ordre 4 *
%*************************************
clear;clc;clf;
M1=1;M2=1;M3=1;
K1=1;K2=1;K3=1;
F1=0.01;F3=0;F=[0 0 0 F1/M1 0 F3/M3]';
B1=0.1;B3=0.1;h=0.1;
y(:,1)=[0 0 0 0 0 0]';t(1)=0;i=1;
C=[0 0 0 1 0 0;
0 0 0 0 1 0;
0 0 0 0 0 1;
-K1/M1 K2/M1 0 -B1/M1 B1/M1 0;
K1/M2 -(K1+K2)/M2 K2/M2 B1/M2 -B1/M2 0;
0 K2/M3 -(K2+K3)/M3 0 0 -B3/M3];

while t<=30
k1=h*f1m(y(:,i),C,F);
k2=h*f1m(y(:,i)+k1/2,C,F);
k3=h*f1m(y(:,i)+k2/2,C,F);
k4=h*f1m(y(:,i)+k3,C,F);
y(:,i+1)=y(:,i)+(1/6)*(k1+2*k2+2*k3+k4);
t(i+1)=i*h;
i=i+1;
end

plot(t,y(1:3,:));
grid on;
text(t(70),y(1,70),'y1');
text(t(70),y(2,70),'y2');
text(t(70),y(3,70),'y3');
xlabel('Temps (en s)');
ylabel('Solutions,y1, y2, y3');

La fonction 'f1m.m' est le sous programme listé ci-dessous :

%*****************
% Fonction f1m.m *
%*****************
function f=f1m(y,C,F);
f=C*y+F;

solutions ,` ; = –1,2,3— recherchées.


Après exécution du programme 'RK4.m', on obtient le graphe suivant donnant les

Enseignant : ZINSALO Joël M./EPAC - UAC Page 153


Tapez une équation ici.

Fig. 5 : évolution des trois solutions ,& , , et ,

Une baguette de longueur 0,2 m ( = 0,2


Exemple 2 :
est placée dans un écoulement d’air à
la température de 293°K. La température à gauche de la baguette (en 0) est
maintenue égale à 493°K, mais le côté droit est isolé. Le transfert de chaleur dans
la baguette se fait par convection. Déterminer la distribution de la température le
long de l’axe de la baguette, sachant que les caractéristiques du matériau
constituant cette baguette sont :

G 60Ê °[ → n .D: A ; Aé Aœ m:
+
œÇ 20Ê/ °[ → n .A D A 6.- A D œ6 :
*c 0,0001 → Ï A . D 6 '6›: AA
( 0,01 → é èA D 6 '6›: AA

Solution :
L'équation de la conduction de la chaleur dans la direction de l'axe O de la
baguette est donnée par :

D W
% cG. D ς . . W WN 0
0 / / 0,2

Enseignant : ZINSALO Joël M./EPAC - UAC Page 154


Tapez une équation ici.

avec les conditions aux limites suivantes :

W( = 0 = WN = 493°[
V
W ′
= 0,2 = 0°[ → nôAé - é

La température de l'air est à 293 °K.

Ce problème est à conditions aux limites en = 0 et = 0,2 . Pour le résoudre,


on doit rendre les conditions aux limites en conditions initiales. On définit :

,& ( = W(
º DW
, ( = W ′( =
D

Ainsi, l'équation différentielle (1er ordre) ci-dessus à conditions aux limites peut
être rendue en une équation différentielle du 1er ordre à conditions initiales, en
posant :

,&′ (=, (
º ′ ℎÇ
, ( =£ ¤ (,& ( − WN
cG

la seconde condition initiale qui doit être , (


Seule, une condition initiale est connue à partir des conditions aux limites, mais
reste inconnue.

condition aux limites connue ,& ( = 0,2 = W( = 0,2 en une condition initiale
Cependant, on peut résoudre l'équation en faisant une transformation de la

DW
, ( =0 =£ ¤ = W ′ ( = 0 = :.
D 3MN

Ainsi, on cherche la valeur : de telle sorte que , 0 permet de donner , =


0,2 = W ′ = 0,2 = 0.

Le programme suivant 'RK4pcl.m' permet de calculer , = 0,2 = W ′ = 0,2 pour


chaque valeur arbitraire de : introduite par l'intermédiaire du clavier. Une fois
cette valeur : satisfait la condition , = 0,2 = W ′ = 0,2 = 0, on peut arrêter les
calculs en tapant la valeur –99999.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 155


Tapez une équation ici.

clear;clc;clf;
while 1
y2=input('Donner le type du gradient, y2(0);ou -99999 pour quitter : ');
if y2<-88888
break;
end

A=0.0001;P=0.01; hc=120;k=60;b=293;l=0.2 ;
a=P*l*hc/A/k;
i=1;x(1)=0;h=0.01;
y(:,1)=[493;y2];

while x<=0.3
k1=h*f2m(y(:,i),x(i),a,b);
k2=h*f2m(y(:,i)+k1/2,x(i)+h/2,a,b);
k3=h*f2m(y(:,i)+k2/2,x(i)+h/2,a,b);
k4=h*f2m(y(:,i)+k3,x(i)+h,a,b);
y(:,i+1)=y(:,i)+(1/6)*(k1+2*k2+2*k3+k4);
x(i+1)=i*h;

if (x(i)-0.2001)*(x(i)-0.1999)<0
y2_fin=y(2,i+1);
break;
end
i=i+1;
end

% y2_fin =(y(1,n+1)-y(1,n))/h;
plot(x,y(1,:),'-',x,y(2,:)/10,':');
xlabel('x (en m)');ylabel('y:- et v/10:...');
text(0.15,-200,['y2(0.2)=',num2str(y2_fin)]);
text(0.02,-200,['Val. arb. y2(0)=',num2str(y2)]);
text(x(10),y(1,10)-20,'y1(x)');
text(x(10),y(2,10)/10-20,'y2(x)/10');
axis([0 0.2 -300 500]);
end

La fonction 'f2m.m' est un sous programme permettant l'obtention de la fonction f


:

function f=f2m(y,x,a,b);
f=[y(2);a*(y(1)-b)];

Après exécution du programme 'RK4pcl.m'; on obtient la figure 6 sur laquelle se

trouvent les solutions et .

Enseignant : ZINSALO Joël M./EPAC - UAC Page 156


Tapez une équation ici.

Fig. 6 : évolution des solutions ,& ( et , ( pour : = , (0 = −2813,5724

5. Méthode Matricielle avec des "Conditions aux Limites"

Considérons l'équation de la conduction de la chaleur selon la direction :


¨W , A ¨ W ,A
% Ð
¨A ¨
/ /Ñ
où la condition initiale est :
W ,A 0 WN

W 0, A W`
et les conditions aux limites sont :

V
W Ñ, A W·

¨W` A Ð
En utilisant les différences finies, l'équation différentielle ci-dessus s'écrit :

. ¡W`2& A 2W` A W`•& A ¢


¨A ∆
où ∆ , G est le nombre d'intervalles sur Š0, ÑŒ, 1 0 0 G et W` A W `, A
Ò
r•&
.

W A WÓ
Dans ce cas, les conditions aux limites s'écrivent :

V N
Wr•& A W·
On obtient ainsi le système suivant :
WK 7. W Ï
Enseignant : ZINSALO Joël M./EPAC - UAC Page 157
Tapez une équation ici.

où W′ et Ï sont des vecteurs colonnes et 7 est une matrice carrée d'ordre G,


définis ci-après :

W& WÕ −2 1
W 0 1 −2 1
f k f k f k
W 0 1 −2 1
e j e j e j
e j Ð e . j Ð e . . . j
WK = e j ; Ï = e . j ; 7 = (∆ e . . . j
e j (∆
e j e . j e . . . j
eWr2 j e0j e 1 −2 1 j
Wr2& 0 1 −2 1
d Wr i dW· i d 1 −2i
Ce système peut être résolu par la méthode de Runge-Kutta par exemple.
Exemple 1 :
La température d'une barre de fer de longueur 50 est initialement à la
température de 200°n. La température du côté gauche est soudainement réduite à
W = 0°n à A = 0, mais la température du côté droit est maintenue constante
à W = 200°n. Tracer la l'évolution de la température dans la barre à chaque
intervalle de temps égal à 200-, et ceci jusqu'à 1000- (c'est à dire : A = 0-, A =
200-, A = 400-, A = 600-, A = 800-, A = 1000-).
Les propriétés thermiques du matériau sont :


G = 80,2Ê( °[ → n .D: A ; Aé Aℎ m:
+
Ä = 7870 G›/ → 6-- ; : m:
*
(n = 447GÅ/ °[. G› → ℎ6 : -Eé m:

Solution :

G 80,2
La diffusivité thermique est calculée par :

Ð= = = 2,28.102É /-
Änp 7870 × 447.10

Pour chercher l'évolution de la température dans la barre, on divise l'intervalle


[0, 50] en 49 petits intervalles (par exemple). L'équation différentielle à résoudre
est celle de la chaleur définie précédemment.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 158


Tapez une équation ici.

WÕ = 0°n
Les valeurs des conditions aux limites sont WÕ et W· telles que : V
W· = 200°n

Le programme suivant ('RK4cc.m'), utilise la méthode de Runge-Kutta à l'ordre 4


pour la résolution de l'équation aux dérivées partielles de la conduction de la
chaleur suivant la direction et en fonction du temps.

%*************************************************
% Conduction de la chaleur dans une barre de fer *
%*************************************************
clear;clf;clc;hold off;
k=80.2;ro=7870;Cp=447e3;TL=0;TR=200;
alpha=k/ro/Cp;dx=(50-1)/49;

%*******************************
% Construction de la matrice A *
%*******************************
A(1,1:2)=[-2 1];A(1,3:50)=0;
A(50,1:48)=0;A(50,9:10)=[1 -2];

for i=2:49
for j=1:50
if i<j-1 & j>i+1
A(i,j)=0;
end

if i==j
A(i,j)=-2;
A(i,j-1)=1;
A(i,j+1)=1;
end
end
end

M=A*alpha*1/dx^2;
S(1)=TL;S(50)=TR;S(2:49)=0;S=S*alpha/dx^2;S=S';
T(1:50)=40;
T=200*ones(T);
T=T';
n=0;t=0;h=20;m=0;
axis([0 10 0 220]);
j=[0,1:length(T),length(T)+1];
T_p=[TL,T',TR];
plot(j,T_p);
text(j(2),T_p(2),['t=',int2str(t),'s']);
xlabel('i : Nombre de points');
ylabel('T (en °C)');

Enseignant : ZINSALO Joël M./EPAC - UAC Page 159


Tapez une équation ici.

for k=1:5
for m=1:50
n=n+1;
k1=h*(A*T+S);
k2=h*(A*(T+k1/2)+S);
k3=h*(A*(T+k2/2)+S);
k4=h*(A*(T+k3)+S);
T=T+(k1+2*k2+2*k3+k4)/6;
t=h*n;
end

hold on;
j=[0,1:length(T),length(T)+1];
T_p=[TL,T',TR];
plot(j,T_p);
text(j(k+1),T_p(k+1),int2str(t));
end

Exemple 2 :

Étude de la répartition de la température dans les parois un four

(ΓÖ la
On considère un four dans le plan de la section droite représentée ci-dessous. On
appelle . la surface interne du four et surface externe.
En régime permanent, la température W( , , en un point ( , , de la paroi vérifie
l'équation de Laplace :

¨ W( , , ¨ W( , ,
+ =0
¨ ¨,

avec les conditions aux limites suivantes :

Γ → W( , , = ×Ö
V Ö
ΓÓ → W( , , = ×Ó

Enseignant : ZINSALO Joël M./EPAC - UAC Page 160


Tapez une équation ici.

Fig. 7 : Géométrie et maillage des parois du four

- Ecrire un programme calculant la température W( , , de la paroi du four aux


points de la grille définie sur la figure 7 ci-dessus (figure en haut).
On suppose que les dimensions Ø& , Ø , Ø et ØI permettent ce quadrillage.

Application Numérique :

Ø& 60
×Ö = 35°n
V et %Ø 60
×Ö 1220°n
Ø ØI 20

Solution :
Équation de Laplace :

¨ W ,, ¨ W ,,
0
¨ ¨,
avec :

Γ → W ,, ×Ö
V Ö
ΓÓ → W , , ×Ó

Enseignant : ZINSALO Joël M./EPAC - UAC Page 161


Tapez une équation ici.

Le développement en série de Taylor de la fonction W( ′, , autour de ,,


où ′ = Ù ∆ s'écrit :

¨W ∆ ¨ W ∆ ¨ W ∆ I ¨ IW
+W + ∆ ,, = W ,, + ∆ + . . . ⋯
¨ 2! ¨ 3! ¨ 4! ¨ I
* ¨W ∆ ¨ W ∆ ¨ W ∆ I ¨ IW
(W ∆ ,, W ,, ∆
¨
.
2! ¨
.
3! ¨
.
4! ¨ I

En additionnant ces deux relations et en divisant par ∆ , on trouve :


¨ W W ∆ ,, 2W , , W ∆ ,,
² ∆
¨ ∆

En opérant de la même manière pour la variable ,, on trouve :


¨ W W ,, ∆, 2W , , W ,, ∆,
² ∆,
¨, ∆,
Dans notre cas, on a ∆ ∆, œ. Donc, le Laplacien bidimensionnel s'écrit :
¨ W ¨ W W ∆ ,, W ∆ ,, 4W ,, W ,, ∆, W ,, ∆,
¨ ¨, ¶¸

² ∆ ² ∆,
c

∆ œ→10 0.
On pose :

V
`
,a ]∆, ]œ → 1 0 ] 0
Pour simplifier la notation, l'expression précédente s'écrit sous la forme :
(*)
¨ W ¨ W W`•&,a W`,a•& 4W`,a W`2&,a W`,a2&
0
¨ ¨, œ
Cette équation peut être représentée par la forme moléculaire suivante :

Pour . 7 et 9 par exemple, on obtient 26 nœuds à l'intérieur du domaine (fig.


7). Donc, ∀ , ] ∈ Ý, où Ý est l'ensemble des points intérieurs du domaine
(et , ] ∉ –Γ` , ΓÖ — ; W`,a ×Ö sur ΓÖ et W`,a ×` sur Γ` ) .
Écrivons les premières et dernières lignes du système (*) :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 162


Tapez une équation ici.

= 2 ; ] = 2 ⟹ W , + W , − 4W , + W ,& + W&, = 0
+
= 2 ; ] = 3 ⟹ W , + W ,I − 4W , + W , + W&, = 0
)
) = 3 ; ] = 2 ⟹ WI, + W , − 4W , + W ,& + W , = 0
= 3 ; ] = 3 ⟹ WI, + W ,I − 4W , + W , + W , = 0
*… … … … … … … … … … … … … … … … … … … … … … … . .
) = 6 ; ] = 8 ⟹ W + W − 4W + W + W = 0
) •,É ž,• ž,É ž,¹ š,É
(
Remarquons que :
W ,& = W&, = W&, = W ,& = ⋯ = Wž,É = ×Ö
et que :
W ,I = WI, = ⋯ = Wž,š = ×`
On a le système suivant alors :
. W,
−4 1 1 0 0 0 0 0 2. ×Ö
1 −4 0 1 0 0 0 . 0 f W ×
,
k f Ö k
f k
1 0 −4 1 0 1 0 . 0 eW , j ×
e Ö j
e . j W
−4 0 0 1 0 0 je , j e . j
e0
1 1
. eW ,I j
e j e . j
. eWI, j
e j e ×` j
. e j
e . . . . . . . . . . . . j WI, = − e . j
. e . j
e j e . j
. e . j
e j
e j e . j
e . j . e . j
. e j
e j Wš,•
e j e ×Ö j
. Wž,É .
d . 0 1 1 −4i d 2. ×Ö i
dWž,• i
On a donc un système de 26 équations à 26 inconnues. Donc, ce système (ou
l'équation de Laplace discrétisée) peut être résolu(e) par la méthode de Gauss-
Seidel (méthode explicite) où l'équation de Laplace donne le point central de
chaque forme moléculaire par l'expression :
W`•&,a + W`2&,a + W`,a•& + W`,a2&
W`,a = (∗∗
4
Remarque :
Avec l'algorithme précédent (**), il est inutile de mémoriser explicitement la
matrice du système (*). Il suffit de mémoriser la température W`,a de chacun des
points de la grille.
Définissons les valeurs particulières des indices correspondants aux parois de la
figure 8 suivante :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 163


Tapez une équation ici.

Fig. 8 : Définition des indices caractérisant les parois

Le programme suivant appelé 'laplace.m' permet de résoudre le système (**) par la


méthode explicite. Pour cela, on se donne une valeur (distribution) arbitraire
initiale W`,a , qui portée dans l'équation (**) au second membre pour chaque
N

, ] , donne une nouvelle valeur W`,a , et ainsi de suite. L'arrêt des calculs
&
couple

se fait quand ¼W`,a − W`,a ¼ 0 “ où “ est la limite de convergence que l'on se donne.
p•& p

%*****************************************
% Etude de la répartition de température *
% dans les parois d'un four *
% Résolution d'un système linéaire par *
% la méthode itérative de Gauss-Seidel *
% Méthode explicite *
%*****************************************
tic;
flops(0);
clear all; clc;clf;
eps=1e-4;k1=300;
% Données initiales
L1=input ('Introduire la valeur de L1 :\n');
L2=input ('Introduire la valeur de L2 :\n');
L3=input ('Introduire la valeur de L3 :\n');
L4=input ('Introduire la valeur de L4 :\n');
dx=input ('Introduire la valeur du pas dx :\n');
Thetaint=input ('Introduire la valeur de Theta interne :\n');
Thetaext=input ('Introduire la valeur de Theta externe :\n');
% Calcul des indices
m=round(L1/dx)+1;
n=round(L2/dx)+1;
m1=round((L1-L3)/(2*dx))+1;
n1=round((L2-L4)/(2*dx))+1;
m2=m1+round(L3/dx);
n2=n1+round(L4/dx);

% Initialisation de la température dans le four


for i=1:n
for j=1:m
T(i,j)=Thetaint;

Enseignant : ZINSALO Joël M./EPAC - UAC Page 164


Tapez une équation ici.

end
end

% Température de la paroi externe


for i=1:n
T(i,1)=Thetaext;
T(i,m)=Thetaext;
end

for j=1:m
T(1,j)=Thetaext;
T(n,j)=Thetaext;
end

% Température de la paroi interne


for i=n1:n2
T(i,m1)=Thetaint;
T(i,m2)=Thetaint;
end

for j=m1:m2
T(n1,j)=Thetaint;
T(n2,j)=Thetaint;
end

% Méthode de Gauss-Seidel (Itérations)


for k=1:k1
for i=2:n-1
for j=2:m1-1
T(i,j)=0.25*(T(i-1,j)+T(i+1,j)+T(i,j-1)+T(i,j+1));
end
end

for i=2:n-1
for j=m2+1:m-1
T(i,j)=0.25*(T(i-1,j)+T(i+1,j)+T(i,j-1)+T(i,j+1));
end
end

for i=2:n1-1
for j=m1:m2
T(i,j)=0.25*(T(i-1,j)+T(i+1,j)+T(i,j-1)+T(i,j+1));
end
end

for i=n2+1:n-1
for j=m1:m2
T(i,j)=0.25*(T(i-1,j)+T(i+1,j)+T(i,j-1)+T(i,j+1));
end
end

if abs(T(n-1,m-1)-T(2,2))<=eps
fprintf('\n \n');
fprintf('Températures après "%d itérations\n',k);
fprintf('\n \n');
break;
end
end

Enseignant : ZINSALO Joël M./EPAC - UAC Page 165


Tapez une équation ici.

for i=1:n
fprintf('%5.0f\t',T(i,1:m));
fprintf('\n');
end

% Tracé des courbes de température en 3D


hold off;
if n==m
figure(1);
i=1:n;
j=1:m;
grid on;
[x,y]=meshgrid((i-1)*dx,(j-1)*dx);
mesh(x,y,T);
Title('Evolution de la température dans le four');
xlabel('i');ylabel('j');zlabel('T (en °C)');
end

% Tracé des courbes isothermes en 2D


figure(2);
i=1:n;j=1:m;
grid on;
contour(i,j,T(i,j),15);
title('Lignes isothermes dans les parois du four');
xlabel('i');ylabel('j');
t_mis=toc
Nb_opt=flops

On exécute ce programme (laplace.m), en rentrant les valeurs de Ø& , Ø , Ø , ØI , ∆ =


∆, = ℎ = 1 et enfin ×` et ×Ö .

>>Introduire la valeur de L1 :
60
Introduire la valeur de L2 :
60
Introduire la valeur de L3 :
20
Introduire la valeur de L4 :
20
Introduire la valeur du pas dx :
1
Introduire la valeur de Theta interne :
1220
Introduire la valeur de Theta externe :
35
t_mis=
113.9700
Nb_opt=
7362728

Enseignant : ZINSALO Joël M./EPAC - UAC Page 166


Tapez une équation ici.

Fig. 9 : Évolution en 3D de la température dans les parois du four

Fig. 10 : Lignes isothermes dans les parois du four

6. Conversion de coordonnées

Dans Matlab, il existe plusieurs commandes pour la conversion des coordonnées.


Nous en donnons ci-après un bref aperçu.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 167


Tapez une équation ici.

6.1. Coordonnées polaires

Les fonctions 'cart2pol' et 'pol2cart' permettent respectivement le passage des


coordonnées cartésiennes en coordonnées polaires et inversement. Les syntaxes
sont :
>>[theta,r]=cart2pol(x,y)
>>[x,y]=pol2cart(theta,r)
et , doivent être des vecteurs de même taille représentant les coordonnées des
points considérés,
et Aℎ A6 représentent les coordonnées polaires et sont des vecteurs de mêmes
dimensions que et ,, où Aℎ A6 est exprimée en radians.

6.2. Coordonnées cylindriques

Les fonctions 'cart2pol' et 'pol2cart' permettent respectivement le passage des


coordonnées cartésiennes en coordonnées cylindriques et inversement. Les
syntaxes sont :
>>[theta,r,z]=cart2pol(x,y,z)
>> [x,y,z]=pol2cart(theta,r,z)
, , et B sont des vecteurs de même taille,
et Aℎ A6 sont des vecteurs de mêmes dimensions que , , et B, et Aℎ A6 est
exprimée en radians.

6.3. Coordonnées sphériques

Les fonctions 'cart2sph' et 'sph2cart' permettent respectivement le passage des


coordonnées cartésiennes en coordonnées sphériques et inversement. Les
syntaxes sont :
>>[Az,Elv,r]=cart2sph(x,y,z)
>>[x,y,z]=sph2cart(Az,Elv,r)
, , ,, et B sont des vecteurs de même taille, cB et ª ; sont respectivement
l'azimut et l'élévation exprimées en radians, de mêmes dimensions que , , et B.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 168


Tapez une équation ici.

7. Problèmes en Coordonnées Cylindriques

Considérons l'équation de la conduction de la chaleur exprimée en coordonnées


cartésiennes :
¨ W ¨ W 1
+ + .› ,, 0
¨ ¨, [
En coordonnées polaires, cette équation s'écrit sous la forme :
¨ W 1 ¨W 1 ¨ W 1
. . .œ ,× 0
¨ ¨ ¨× [
sur la domaineà.
Sur ce domaine à, on construit un maillage en coordonnées polaires
,× comme le montre la figure 11 ci-dessous, avec ∆ et × ]∆× où et ]
sont des entiers.

Fig. 11 : Système de maillage en coordonnées polaires


Ainsi, la température W , × et la fonction œ , × deviennent au point
W , × |á
:
W . ∆ , ]∆× ≡ W`,a
¾
œ , × |á œ . ∆ , ]∆× ≡ œ`,a
Pour des valeurs non nulles de , les dérivées secondes de W , × par rapport à
et × s'écrivent sous la forme disrétisée suivante :
¨ W ¨ W W`2&,a 2W`,a W`•&,a
+ ã ã ² ∆
)¨ á ¨ `,a ∆

*¨ W ¨ W W`,a2& 2W`,a W`,a•&


) ã ã ² ∆×
(¨× á ¨× `,a ∆×
äå
ä°
En utilisant les différences centrées, peut s'écrire au point sous la forme :
¨W ¨W W`•&,a W`2&,a
æ æ ² ∆
¨ á ¨ `,a 2∆

Enseignant : ZINSALO Joël M./EPAC - UAC Page 169


Tapez une équation ici.

W`2&,a − 2W`,a + W`•&,a 1 W`•&,a − W`2&,a


Ainsi, l'équation de la chaleur discrétisée est :
1 W`,a2& − 2W`,a + W`,a•& 1
+ . + + ℎ`,a = 0
(∆ ∆ 2∆ . ∆ ∆× [

Soit, après regroupement des différents termes :

1 1 1 1
. ¿£1 − ¤ . W`2&,a − 2W`,a + £1 + ¤ W`•&,a À + . ¡W`,a2& − 2W`,a + W`,a•& ¢
∆ 2. 2 ∆ . ∆×
1
+ ℎ =0
[ `,a

C'est l'équation de conduction de la chaleur discrétisée (différences finies) en


coordonnées cylindriques, obtenue pour des valeurs de non nulles ≠ 0 . Les
indices et ] sont des entiers (commençant par 1 dans Matlab).
A l'origine = 0 , l'équation de la conduction en coordonnées polaires présente
une singularité. Cette dernière doit être éliminée. Pour cela, on utilise le Laplacien
de l'équation de la conduction non pas en coordonnées cylindriques, mais en
coordonnées cartésiennes :
ç
s=L −1 23 32
D
N

quand →0
On construit ensuite un cercle de rayon ∆ , centré en = 0. Considérons W& la
température à = 0, et W , W , WI et Wš sont les températures sur le cercle aux 4
nœuds (intersection avec les axes et ,). Ainsi, l'équation précédente (en
coordonnées cartésiennes) s'écrit sur le cercle de rayon ∆ :
W + W + WI + Wš − 4W& 1
+ .› = 0
∆ [
La rotation des axes et , autour de = 0 conduit aux mêmes résultats
(équation de la chaleur en coordonnées cartésiennes discrétisée). En
considérant Ẃ comme la moyenne arithmétique des températures autour du
cercle de rayon ∆ , l'équation précédente devient :
Ẃ − W& 1
4. + . › = 0 à = 0
∆ [

Enseignant : ZINSALO Joël M./EPAC - UAC Page 170


Tapez une équation ici.

où Ẃ est la moyenne arithmétique des valeurs de W ,a autour du cercle de


rayon ∆ et de centre = 0 et W& est la valeur de la température à = 0.
Les coordonnées polaires ( , ×
coordonnées cylindriques ( , ×, B (trois dimensions) pour l'obtention de l'équation
-deux dimensions- peuvent être extrapolées en

Pour le problème bidimensionnel en ( , × évoqué précédemment, compte tenu de


de la conduction de la chaleur discrétisée.

la symétrie axiale, l'équation de la conduction de la chaleur peut être réduite à :


D W 1 DW 1
+ . + ℎ =0
D D [
Pour ≠ 0, l'équation précédente discrétisée s'écrit sous la forme :
1 1 1 1
. ¿£1 − ¤ . W`2& − 2W` + £1 + ¤ . W`•& À + ℎ` = 0
∆ 2 2 [

où = ∆ ,W = W .∆ ≡ W` , et est un entier positif.


Au centre ( = 0), en utilisant la règle de l'Hopital nous obtenons :
1 DW D W
lim £ . ¤ =
°→N D D
Ainsi l'équation de la conduction de la chaleur en deux dimensions , × s'écrit
compte tenu de la symétrie axiale du problème :
D W 1
2. + ℎ = 0 . = 0
D [
Soit en différences finies :
W − W& 1
4. + . ›& = 0 E : = 1
∆ [
En coordonnées cylindriques, l'équation de la conduction de la chaleur est
donnée par l'expression suivante :
¨ W 1 ¨W ¨ W 1
+ . + + .ℎ ,B = 0
¨ ¨ ¨B [
Les coordonnées , B sont représentées par :
= ∆
Í
B = G∆B
où et G sont des entiers.
La température W , B au nœud , G est notée par :
W , B = W . ∆ , G∆B ≡ W`,r
et les différentes dérivées partielles deviennent :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 171


Tapez une équation ici.

¨ W W`2&,r − 2W`,r W`•&,r


+ ã = ² ∆
) ¨ `,r ∆
)
¨ W W`,r2& 2W`,r W`,r•&
ã ² ∆B
* ¨B `,r ∆B
) ¨W W`•&,r W`2&,r
) æ ² ∆
( ¨ `,r 2. ∆

L'équation de la chaleur discrétisée en coordonnées cylindriques au nœud


devient :
1 1 1 1 1
¿£1 ¤ W`2&,r 2W`,r £1 ¤W À . ¡W`,r2& 2W`,r W`,r•& ¢ œ 0
∆ 2. 2 `•&,r ∆B [ `,r

pour des valeurs de non nulles.


Pour 0, on a :
1 ¨W ¨ W
lim £ . ¤
°→N ¨ ¨
et l'équation de conduction en 0 devient :
¨ W ¨ W 1
2. .œ ,B 0 . 0
¨ ¨B [
Soit en utilisant les différences finies au nœud 1, G :
W W&,r W&,r2& 2W&,r W&,r•& 1
4. .› 0
,r
∆ ∆B [ &,r

8. Discrétisation de l'équation de la Conduction en régime instationnaire


Dans le système de coordonnées cartésiennes (trois dimensions), l'équation de
conduction de la chaleur en régime instationnaire (temporel) s'écrit (si [ -A ) :
¨ W ¨ W ¨ W 1 Änp ¨W
. œ , ,, B .£ ¤
¨ ¨, ¨B G [ ¨A

Pour résoudre cette équation aux dérivées partielles en utilisant la méthode des
différences finies, on utilise un maillage cubique (mailles de côtés
∆ , ∆,, ∆B
.∆
avec :

%, ]∆,
B G∆B

Enseignant : ZINSALO Joël M./EPAC - UAC Page 172


Tapez une équation ici.

où , ] et G sont entiers positifs, et le domaine temporel est divisé en petits


intervalles de temps ∆A de telle sorte que : A = .∆A
Dans ce cas, la température W( , ,, B, A au point ( , ,, B à un temps donné A est
représentée par :
W( , ,, B, A = W( . ∆ , ]∆,, G∆B, .∆A = W`,a,r
h

En utilisant la méthode des différences finies, les différents termes de l'équation


ci-dessus au dérivées partielles s'écrivent au point , ,, B :
¨W ¨W W`,a,r
h•&
− W`,a,r
h
+ æ = æ = + ² ∆A
) ¨A á ¨A `,a,r ∆A
)
)¨ W ¨ W W`2&,a,r
h
− 2W`,a,r
h
+ W`•&,a,r
h
) ã = ã = + ²(∆
)¨ á ¨ `,a,r (∆

*¨ W ¨ W W`,a2&,r
h
− 2W`,a,r
h
+ W`,a•&,r
h
) ã = ã = + ²(∆,
)¨, á ¨, `,a,r (∆,
)
)¨ W ¨ W W`,a,r2&
h
− 2W`,a,r
h
+ W`,a,r•&
h
) ã = ã = + ²(∆B
( ¨B á ¨B `,a,r (∆B

et l'équation de la conduction discrétisée en trois dimensions devient :


Änp W`,a,r
h•&
− W`,a,r
h
.¿ À
[ ∆A
W`2&,a,r
h
− 2W`,a,r
h
+ W`•&,a,r
h
W`,a2&,r
h
− 2W`,a,r
h
+ W`,a•&,r
h
= +
∆ ∆,
W`,a,r2&
h
− 2W`,a,r
h
+ W`,a,r•&
h
1
+ + ℎ
∆B [ `,a,r

En regroupant les différents termes de cette équation, on obtient :


2[∆A 1 1 1
W`,a,r
h•&
= •1 − £ + + ¤‚ W`,a,r
h
Änp ∆ ∆, ∆B

[∆A W`2&,a,r
h
+ W`•&,a,r
h
W`,a2&,r
h
+ W`,a•&,r
h
W`,a,r2&
h
+ W`,a,r•&
h
1
+ ¿ + À+ + ℎ`,a,r
Änp (∆ (∆, (∆B [

Cette équation ne peut être résolue que par une méthode itérative (méthode de
Gauss-Seidel par exemple).

Enseignant : ZINSALO Joël M./EPAC - UAC Page 173


Tapez une équation ici.

2[∆A 1 1 1
Si on pose :

7=1 £ ¤
Änp ∆ ∆, ∆B

alors, la condition de convergence de la solution recherchée dépend


essentiellement du signe de la quantité 7. Cette quantité doit être strictement
positive.
Ainsi, une condition doit relier le pas de temps et les autres pas spatiaux
(∆ , ∆, et ∆B) :
Änp 1 1 1 2&
∆A / £ ¤
2[ ∆ ∆, ∆B

Pour amorcer le calcul itératif, on ensemence le domaine de frontière par des


WN par exemple), et on arrête les calculs quand la
N
valeurs arbitraires (W`,a,r
condition suivante sera réalisée :
W`,a,r W`,a,r 0 “
°•& °

où “ est la précision que l’on se fixera.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 174


Tapez une équation ici.

PROJETS

Projet 1 : Interpolation de données – Méthode des moindres carrés


Étude de la viscosité dynamique d'un liquide en fonction de la température

Projet 2 : Résolution numérique des équations lon linéaires


Étude de la perte de charge dans une conduite rugueuse
Projet 3 : Résolution numérique de systèmes d’équations non linéaires
Étude d’un système de pompage : Système d’équations non linéaires

Projet 4 : Méthode d'intégration numérique


Partie I : Intégration d'une fonction donnée numériquement en différents points
Partie II : Intégration numérique d'une équation différentielle du 1er ordre

Projet 5 : Résolution numérique des équations différentielles


Étude thermique d'un fusible en plomb

Projet 6 : Résolution numérique des équations différentielles non linéaires


Étude de la répartition de la température dans une ailette de section circulaire

Projet 7 : Résolution numérique des systèmes d’équations non linéaires par la méthode d'Euler
Étude des attracteurs de Lorenz

Projet 8 : Résolution numérique des équations aux dérivées partielles par méthode des différences
finies (régime permanent)
Étude de la répartition de la température en régime permanent dans une salle de sport

Projet 9 : Résolution numérique des équations aux dérivées partielles (régimes permanent et
transitoire)
Réponse Thermique d'un Matériau soumis à Haute Température : Mise au point d'un
Modèle Numérique Simplifié 1D et 2D

Enseignant : ZINSALO Joël M./EPAC - UAC Page 175


Tapez une équation ici.

PROJET N° 1
INTERPOLATION DE DONNÉES -
MÉTHODES DES MOINDRES
CARRÉS
Étude de la viscosité dynamique d'un liquide en fonction de la
température : représentation des données par un modèle
La variation de la viscosité dynamique é de l’eau en fonction de la température T
est modélisée par la formule de Walther :
å ë
é=
" ê $ ∙Óh ìê
å

où éN est la viscosité de ce liquide à la température WN = 273 [ et W = A + WN .


Après une série de mesures, on a relevé les valeurs suivantes de é (en Poise) et de
t (en °C) :

t (°C) 0 5 10 15 20 25 30 35 40 45 50 55 60
10 µ(Po) 1,7940 1,7393 1,6899 1,6451 1,6044 1,5673 1,5334 1,5023 1,4737 1,4474 1,4232 1,4007 1,3799

t (°C) 65 70 75 80 85 90 92 93 94 95 97 98 100
10 µ (Po) 1,3606 1,3427 1,3260 1,3104 1,2959 1,2822 1,2770 1,2745 1,2720 1,2695 1,2646 1,2622 1,2575

Tracer l’évolution de é en fonction de T pour les valeurs mesurées (en nuage de


points ‘*’).
Écrire un algorithme évaluant les paramètres inconnus, par la méthode des
moindres carrés, à partir de l’ensemble des données (é` , W` .
Déterminer la valeur de l’exposant n.
Sur le même graphe, tracer (en trait continu) l’évolution du modèle prédit (é en
fonction de T).
Prédire la valeur de é pour W = 30 °n.
Conclusions ?

Indications : On pourra choisir :

.(é WN
,=¿ À A =
.(éN W

Enseignant : ZINSALO Joël M./EPAC - UAC Page 176


Tapez une équation ici.

ensuite on cherche un polynôme de degré n (modèle de prédiction). On


minimisera l’écart entre ce modèle de prédiction p(x) et les données
expérimentales grâce au coefficient de corrélation C suivant :

( − ̅ ( − ,́
n=
` `

C( ` − ̅ (,` − ,́

` est le modèle d’approximation de ,` en fonction de


où :
`,
h
1
,́ = q ,` est la valeur moyenne sur ,`
.
`M&
Le coefficient de corrélation C tend vers 1 quand ` tend vers ,` .

Enseignant : ZINSALO Joël M./EPAC - UAC Page 177


Tapez une équation ici.

PROJET N° 2

RÉSOLUTION NUMÉRIQUE DES ÉQUATIONS


NON LINÉAIRES

Étude de la perte de charge dans une conduite rugueuse


Calcul du coefficient de perte de charge linéaire dans une conduite

On considère un écoulement d’eau dans une conduite de diamètre D. On veut


calculer le coefficient de perte de charge linéaire ˜ aux régimes laminaire et
turbulent.

En régime laminaire ( ≤ 2000), la perte de charge est donnée par la formule de


Poiseuille :

64
˜= (1

où Re est le nombre de Reynolds.

En régime turbulent (4000 ≤ ≤ 10• ), le coefficient de perte de charge linéaire ˜


dépend à la fois du nombre de Reynolds Re et de la rugosité relative de la
conduite “/ð.

- Pour une conduite lisse (“/ð = 0), cette perte de charge linéaire ˜ est donnée par
la formule de Blasius :

0,316
˜= N, š
(2

- Pour une conduite rugueuse (“/ð ≠ 0), la perte de charge linéaire ˜ peut être
calculée selon la relation (non linéaire) de Colebrook :

“ 2,51
˜2&⁄ = −2 ∙ ›&N £ + ¤ (3
3,71 ∙ ð ∙ ˜&⁄

Enseignant : ZINSALO Joël M./EPAC - UAC Page 178


Tapez une équation ici.

˜ étant le coefficient de perte de charge régulière.

• Écrire un programme (MATLAB) pouvant évaluer ˜ en régime laminaire et


en régime turbulent (turbulent lisse et turbulent rugueux). Pour l’estimé
initial de ˜N , par exemple, on pourra tracer la courbe (˜ en fonction de ˜,
ensuite repérer la valeur de ˜N pour accélérer la convergence.

• Tracer sur le même diagramme (quadrié) l’évolution de ˜ en fonction de Re


en échelle logarithmique (log-log). Pour l’écoulement laminaire, on choisit
un pas de 100 pour Re et pour l’écoulement turbulent, on choisit un pas
variable pour Re.

• Comparer les résultats obtenus avec ceux donnés par le diagramme de


Moody (donné par la figure ci-dessous).

• Conclusions.

On donne les valeurs de la rugosité relative “/ð : 10-5 - 10-4 - 10-3 - 10-2 - 10-1.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 179


Tapez une équation ici.

Diagramme de Moody

Enseignant : ZINSALO Joël M./EPAC - UAC Page 180


Tapez une équation ici.

PROJET N° 3
RÉSOLUTION NUMÉRIQUE DE
SYSTÈMES D'ÉQUATIONS NON
LINÉAIRES
Étude d’un système de pompage (système d’équations non linéaires)

On se propose d’étudier le système de pompage décrit par la figure ci-dessous :

Théoriquement, on montre que les différentes grandeurs , , , et sont


liées entre elles par les équations suivantes :

cñ& + lñ + 1 ò c 4854
ñ ñ& ñ
º ù % A %l 1576
Ñ 51
cñ& nñ 40 Ñ n 14279

où les valeurs de Z (en m) sont les suivantes : 0,01 – 0,15 – 0,20 –


0,31 – 0,43 – 0,58 – 0,69 – 0,75 – 0,86 – 0,92 – 1,1 – 1,5 – 2,0.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 181


Tapez une équation ici.

• Donner la procédure de calcul permettant de trouver les débits


volumiques ñ& et ñ dans les deux branches de la jonction.

(ñ& , ñ
Pour cela, on utilisera le développement en série de Taylor des fonctions
et ›(ñ& , ñ à l’ordre 1 autour de ñ& et ñ , sachant que :

¨ (ñ& , ñ ¨ (ñ& , ñ
+ (ñ& + ℎ& , ñ + ℎ = (ñ& , ñ + ℎ& ¿ À +ℎ ¿ À
) ¨ñ& ó
¨ñ ó
¸ ô

* ¨›(ñ& , ñ ¨›(ñ& , ñ
)›(ñ& + ℎ& , ñ + ℎ = ›(ñ& , ñ + ℎ& ¿ À +ℎ ¿ À
( ¨ñ& ó
¨ñ ó
¸ ô

et

ñ`•&
&
= ñ`& + ℎ& ℎ& = ∆ñ&
º ù %
ñ`•& = ñ` + ℎ ℎ = ∆ñ

On posera par la suite = ñ& , , = ñ et on résoudra le système d’équations


non linéaires par la méthode de Newton-Raphson.

Calculer les débits ñ& et ñ dans les deux branches ainsi que le débit
total ñ pour chaque valeur de ò donnée.
o

o Conclusions.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 182


Tapez une équation ici.

PROJET N° 4
MÉTHODES D'INTÉGRATION
NUMÉRIQUE
Partie I : Intégration d'une fonction donnée numériquement en différents points

On donne la fonction ( ` en différents points ` qui ne sont pas équidistants :

-1,00 -0,50 -0,11 0,27 0,95 1,00 1,50 1,99 2,82 3,05 4,01 4,28

( -1,7510 -1,4376 -0,8870 -0,7118 0,1748 0,2490 1,0574 1,9643 3,7449 4,2891 6,7715 7,5240

4,95 5,31 6,11 7,92 9,21 10,57 11,05 12,41 13,62 16,27 19,02 20,00

L'intégrale exacte de la fonction ( sur l'intervalle Š−1, 20Œ


9,4753 10,564 13,049 18,667 22,221 25,013 25,667 26,194 24,584 11,375 -22,411 -41,000

est Iex telle


que sÖ3 205,2497999.
En utilisant la méthode des moindres carrés, chercher un modèle (› )
permettant de représenter . Intégrer analytiquement ce modèle sur
l'intervalle Š 1, 20Œ et comparer le résultat avec sÖ3 . Conclusion.
Intégrer numériquement les données de (ou éventuellement › ) sur
l'intervalle Š 1, 20Œ en utilisant une méthode d'intégration précise. Calculer
l'erreur relative entre la valeur exacte sÖ3 et la valeur obtenue numériquement.
Conclusion.
Pour la méthode de Gauss, par exemple, le tableau suivant donne les constantes
pour . 24 :

G 1 2 3 4 5 6

Ù_r 0,9951872200 0,9747285560 0,9382745520 0,8864155270 0,8200019860 0,7401241916

õr 0,0123412298 0,0285313886 0,0442774388 0,0592985849 0,0733464814 0,0861901615

7 8 9 10 11 12

Ù_r 0,6480936519 0,5454214714 0,4337935076 0,3150426797 0,1911188675 0,0640568929

õr 0,0976186521 0,1074442701 0,1155056681 0,1216704729 0,1258374563 0,1279381953

Enseignant : ZINSALO Joël M./EPAC - UAC Page 183


Tapez une équation ici.

Partie II : Intégration Numérique d'une équation différentielle du 1er ordre

• Écrire un algorithme (Matlab) permettant de calculer numériquement, à


l'aide de la méthode d'Euler à l'ordre 1, la solution de l'équation
différentielle suivante :

D (A
= ( (A , A
à DA

(AN = 0

On écrira un programme paramétré permettant d'intégrer une fonction


quelconque depuis un instant initial AN jusqu'à un instant final A . Le pas
d'intégration temporel ainsi que la valeur initiale de la fonction (AN seront entrés
interactivement par l'utilisateur.

• Résoudre, à l'aide de ce programme, l'équation différentielle suivante :

D (A
+ (A = 2 u

à DA

(A = 0 = (AN = 0

• Calculer la solution analytique (solution vraie).


• Comparer la solution numérique à la solution exacte.
• Tracer l'évolution des deux solutions en fonction de t.
• Que peut-on dire de l'influence du pas d'intégration sur la solution
numérique.
• Reprendre l'exercice complet, en mettant en œuvre la méthode du
prédicteur-correcteur (Adams), et comparer la solution numérique obtenue
par rapport à la solution d'Euler à l'ordre 1. Tracer les différentes solutions
(vraie, Euler et Adams) sur le même graphe. Conclusions.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 184


Tapez une équation ici.

PROJET N° 5
RÉSOLUTION NUMÉRIQUE
D'ÉQUATIONS
DIFFÉRENTIELLES DU PREMIER
ORDRE NON LINÉAIRES

Étude thermique d'un fusible en plomb


Au Laboratoire d’Energétique et de Mécanique Appliquée, un étudiant s’intéresse
à la réponse thermique d’un fusible en plomb, de longueur , de rayon = 1 .
La puissance volumique dissipée dans ce fusible par effet Joule est donnée par
l’équation suivante :
DW 2
= np . Ä. + ÷Çø + ÷°
ö
DA
où :
np est la capacité calorifique massique du plomb (np = 130 Å/(G›. °n ) ;
Ä est la masse volumique du plomb (Ä = 11300 G›/ );
W et A représentent respectivement la température ( . [ et le temps ( . - ;
÷Çø A ÷° sont des termes de convection et de rayonnement qui peuvent être
représentés par les expressions suivantes :

÷ = ℎ. W − Wù ≈ 2,5. W − Wù úI
š
¾ Çø
÷° = È. ¡W I − Wù I ¢ ≈ 5,67. 102É . ¡W I − Wù I ¢

où ℎ représente le coefficient d’échange thermique.


La température de fusion du plomb est W = 600 [ et la température ambiante
est Wù = 298 [.
La puissance volumique ö est donnée par l’expression :

.s s
ö = = Äù £ ¤

où Äù = 20,7. 102É Ω. et représentent respectivement la résistivité électrique et


la résistance électrique du fil de plomb, et s le courant électrique.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 185


Tapez une équation ici.

1. Etudier l’évolution de la température W(A en fonction du temps A pour


différentes puissances volumiques ö (variation de s ;
En utilisant les outils nécessaires, faire un programme et tracer l’évolution
de W A, s dans le plan A, s .
2. Pour quelle valeur de sÓ`g la température W A atteint-elle la température de
fusion W ?
3. Calculer la puissance volumique ø üýþ correspondante.
4. Au bout de quel temps AÓ`g le fusible fond-il ?
5. Tracer l’évolution de W A en fonction du temps A pours = sÓ`g .
6. On veut linéariser la loi d’échange par l’expression suivante :
DW
= np . Ä. + ℎ. W − Wù
ö
DA
2,5. W − Wù + È. ¡W I − Wù I ¢
šú
I
ù ℎŸ =
W − Wù
est un coefficient d’échange global.
a- Etudier l’évolution du coefficient ℎŸ en fonction du temps.

b- Calculer ℎŸ pour W = W A ℎŸN E : W = Wù .


c- Montrer que pour les premiers instants, on a :
ℎŸN ≈ 4. È. Wù

d- Peut-on prendre ℎŸ = 0,5¡ℎŸN + ℎŸ ¢ pour linéariser la loi d’échange?


Pourquoi?

Enseignant : ZINSALO Joël M./EPAC - UAC Page 186


Tapez une équation ici.

PROJET N° 6
RÉSOLUTION NUMÉRIQUE
D'ÉQUATIONS
DIFFÉRENTIELLES DU SECOND
ORDRE NON LINÉAIRES

Étude de la répartition de la température dans une ailette de section


circulaire

Une ailette de longueur Ø = 0,75 est reliée d’un côté à une source de chaleur qui
est à la température Wù en = 0. L’autre côté est supposé parfaitement isolé
(contact parfait) en = Ø. L’ailette est en contact avec un milieu ambiant dont la
température est maintenue fixe à 20°C. Le transfert de chaleur entre l’ailette et le
milieu ambiant se fait par convection et par rayonnement. En supposant que
l’ailette ainsi que le milieu ambiant sont des corps noirs, la température dans
l’ailette satisfait à l’équation de conduction de la chaleur suivante :
D W
−c. ˜. + E. ℎÇ W3 − Wç + E. È¡W3 I − Wç I ¢ = 0
D

où :

˜ = 120 Ê ⁄ . °n est la conductivité thermique ;

c = 1,5. 102 est la section de la barre (ailette) ;

E = 0,133 est le périmètre de la barre (ailette) ;

ℎÇ = 50 Ê/( . [ est le coefficient de transfert de chaleur par convection ;

È = 5,67. 102É Ê/ . [ I est la constante de Stefan-Boltzmann ;

Wç = 293 [ est la température du milieu ambiant.

Les conditions initiales et aux limites sont données par :

Enseignant : ZINSALO Joël M./EPAC - UAC Page 187


Tapez une équation ici.

W( = 0 = Wù
DW
à ( =0
D 3MÕ
W( = Ø = Wç

1- Etudier la distribution de la température W( dans l’ailette pour Wù = 400[,


Wù = 600[, Wù = 800[ et Wù = 1000[ en utilisant les méthodes de Runge
Kutta d’ordre 4 et la méthode de tir.
2- Quelle est l’influence du pas ∆ sur la position ?
3- Pour le pas choisi (optimum), tracer pour chaque valeur de Wù l’évolution de
la température W en fonction de .
4- Conclure.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 188


Tapez une équation ici.

TP N° 7
RÉSOLUTION NUMÉRIQUE DE
SYSTÈMES D'ÉQUATIONS
DIFFÉRENTIELLES NON
LINÉAIRES A CONDITIONS
INITIALES
(UTILISATION DE LA MÉTHODES D'EULER)

Étude des attracteurs de Lorenz

Un fluide au repos entre deux plans horizontaux parallèles génère des


mouvements cellulaires sous l'effet d'un gradient de température. Les équations
de Navier-Stokes se ramènent en faisant une première approximation au système
différentiel suivant :

O = ° (, − (A = 0 = 0,001
º ,O = − (B − − , ù º,(A = 0 = 0,001
BO = , − 'B B(A = 0 = 0,001

avec :

° = 10
à 8
'=
3

• Résoudre ce système par les méthodes d'Euler et de Runge-Kutta.

• Étudier les solutions en fonction de la valeur du paramètre pour les cas


suivants :

= 5
= 24
Ã
= 30
= 180

Enseignant : ZINSALO Joël M./EPAC - UAC Page 189


Tapez une équation ici.

• Tracer les différentes solutions (A , ,(A et B(A .

• Tracer dans l'espace ( , ,, B , le point représentatif de la solution en fonction


du temps.

On pourra choisir par la suite une représentation des courbes en projection sur le
plan ( , , ou (,, B , par exemple.

Enseignant : ZINSALO Joël M./EPAC - UAC Page 190


Tapez une équation ici.

PROJET N° 8
RÉSOLUTION NUMÉRIQUE
D'ÉQUATIONS
AUX DÉRIVEES PARTIELLES
(MÉTHODES DES DIFFÉRENCES FINIES)

Étude de la répartition de la température en régime permanent dans une


salle de sport

On veut étudier la répartition de la température dans une salle de sport chauffée


par plusieurs radiateurs disposés sur quelques côtés des murs. La forme
géométrie de cette salle est donnée par la figure ci-dessous :

On donne les distances suivantes :



bc = Ñs = Å[ = 4
longueurs des radiateurs :

Í
ln = ªË = 7» = 7

nð Ø7 4
les autres distances de la salle :

Ë 3
Ã
Ñ 6
sÅ 5

Enseignant : ZINSALO Joël M./EPAC - UAC Page 191


Tapez une équation ici.

Pendant la période des pluies, la température des murs, à l’exception des places
où il y a des radiateurs, est constante et égale à 5°n ; c’est à dire :

Les 6 radiateurs dégagent des quantités de chaleur constantes à la température


de 45°C ; c’est à dire :

Pour déterminer la répartition de la température en régime permanent dans la


salle, on peut utiliser l’équation de conduction de la chaleur qui est donnée par la
relation de Laplace suivante :

• En utilisant la méthode des différences finies et les conditions aux limites,


étudier la répartition de la température dans la salle,
• Tracer l’évolution des lignes isothermes dans la salle,
• Tracer l’évolution de la température W , , en 3D dans le plan ,, ,
• Conclusion.
• Que propose - t-on pour obtenir une répartition presque uniforme de
température dans la salle, sachant que la longueur maximale que peut
avoir chacun de ces radiateurs est de 7m, et que le nombre total de ces
radiateurs ne peut dépasser 6 ?

Enseignant : ZINSALO Joël M./EPAC - UAC Page 192


Tapez une équation ici.

PROJET N° 9

RÉPONSE THERMIQUE D'UN


MATÉRIAU SOUMIS A HAUTE
TEMPÉRATURE :
MISE AU POINT D'UN MODÈLE
SIMPLIFIÉ 1D ET 2D
(Régimes permanent et transitoire)

Étude de la répartition de la température en régime permanent dans une


salle de sport

Dans ce projet il s'agit d'étudier la réponse thermique d'un matériau donné (à


choisir en fonction de son usage), soumis à haute température d'un côté et isolé
de l'autre. L’équation qui régit une telle réponse en température, est donnée par
(équation de conduction de la chaleur) :

¨ W( , ,, A ¨ W( , ,, A 1̃ ¨W( , ,, A
+ =
¨ ¨, ¨A

où ˜ est la conductivité thermique (à choisir en fonction du matériau).

Le travail à effectuer peut être résumé ainsi :

Dans un premier temps, on cherche la solution analytique du problème (si cela


est possible) en se servant des équations transcendantes (à les résoudre
numériquement) pour des valeurs du terme "Biot" constantes (en fonction de la
nature du matériau).

Dans le cas unidirectionnel et en régime transitoire (régime dépendant du temps),


on étudie l'évolution de la température W( , A dans le matériau d'épaisseur ℎ
selon l'axe ̅ en considérant que celui-ci est soumis à un flux thermique imposé

Enseignant : ZINSALO Joël M./EPAC - UAC Page 193


Tapez une équation ici.

(Température WN ) en = ℎ, et isolé de l'autre côté en = 0. On comparera ensuite


les résultats obtenus à ceux qui s’obtiennent théoriquement par l’expression :

ç
- . Ðh Ø
W( , A = WN •1 − 4 q ¿ ∙ - Ðh 24 ȩ̈ u
À‚
2Ðh Ø + - . 2Ðh Ø
hM&

à cette solution théorique, on ajoute l'équation transcendante qui est


donnée par :

ℎ° Ø
Ðh Ø A6. Ðh Ø = =l A≈ A
˜

Dans le cas bidimensionnel, deux cas peuvent se présenter : le régime est soit
stationnaire (indépendant du temps), soit transitoire (dépendant du temps). Pour
ces deux cas, on résout numériquement l'équation de la chaleur par la méthode
des différences finies, et ceci pour les conditions aux limites suivantes :

¨W , ,
+ æ = 0 ¨W( , ,
) ¨ + æ = È ∙ ∙ ¡WNI − W I3M¶ ¢
¨
3MN
A 3M¶
*¨W( , , *
) æ =È∙ ∙ ¡WNI − W I MN ¢ ( W →ç = 0
( ¨, MN

et le cas où on a :

¨W( , , ¨W( , ,
+ æ = 0 + æ =È∙ ∙ ¡WNI − W I3M¶ ¢
) ¨ 3MN ) ¨ 3M¶
A
*¨W( , , * ¨W( , ,
) æ =È∙ ∙ ¡WNI − W I MN ¢ ) æ =È∙ ∙ ¡WNI − W I MÕ ¢
( ¨, MN ( ¨ MÕ

On donne : ≈ 0,81 et È = 5,67 ∙ 102 .

Enseignant : ZINSALO Joël M./EPAC - UAC Page 194