Académique Documents
Professionnel Documents
Culture Documents
Filière : Ingénierie
ayoub.azzayani@eigsica.ma
Pr: Ayoub AZZAYANI
P Graphiques 2D et 3D
Recherche de zéro d’une fonction
L Résolution numériques des équations différentielles
A Initiation à Simulink
Initiation à SimScape
N
Evaluation:
TP 25% +15% Mini projet et Examen écrit 60%
2
Introduction (Rappel)
Introduction
Matlab (MATrix LABoratory) est l’une des principales plateformes de développement.
Calculs élémentaires
Calculs élémentaires
Graphiques 2D et 3D
fonction
Résolution numérique
d’équations
différentielles
La fenêtre de commande (ou ligne de
commande):
c’est l’outil de base de Matlab. Elle permet entre
autre de faire n’importe quelle opération, de définir
et affecter les variables d’environnement, d’utiliser
les toolboxes via leurs fonctions, …
4
A.AZZAYANI
Introduction (Rappel)
Introduction
Calculs élémentaires
Graphiques 2D et 3D
fonction
Résolution numérique
d’ équations
différentielles
La fenêtre d’historique de commande :
permet de répéter les commandes précédentes en
double-cliquant sur la commande concernée dans
cette fenêtre. On peut obtenir le même résultat en
ligne de commande par l’appui répétitif sur la
touche « flèche haut » du pavé numérique.
5
A.AZZAYANI
Introduction (Rappel)
Introduction
Calculs élémentaires
Graphiques 2D et 3D
fonction
Résolution numérique
d’équations
différentielles
La fenêtre d’espace de travail :
Cette fenêtre permet de visualiser les différentes
variables existantes, en affichant leur nom, leur
contenu (ou leur dimension) ainsi que le min et le
max des données qu’elle contient. On peut obtenir
la liste des variables ainsi que leurs dimensions en
ligne de commande en tapant la commande
« whos ».
6
A.AZZAYANI
Introduction (Rappel)
Introduction
Calculs élémentaires
Graphiques 2D et 3D
fonction
Résolution numérique
d’équations
différentielles
7
A.AZZAYANI
Calculs élémentaires (Rappel)
Introduction Matlab comme Calculatrice
Calculs élémentaires Le symbole [>>] indique à l’utilisateur où il faut rentrer la commande
Graphiques 2D et 3D Commençons par les operateurs les plus courants : +, -, *, /, ^. Le dernier signifie «puissance».
Recherche de zéro d’une Les parenthèses s’utilisent de manière classique.
fonction
Un dernier point sur les variables :
Résolution numérique
MATLAB fait la différence entre les minuscules et les majuscules.
d’équations
Les noms de variables peuvent avoir une longueur quelconque.
différentielles
Les noms de variables doivent commencer par une lettre.
Matlab comporte un très grand nombre d’opérateurs, de commandes et de fonctions. On peut
taper à titre d’exemple les commandes suivantes :
• help permet d’obtenir l’aide de l’aide et donne une liste thématique ;
• help nom de fonction donne la définition de la fonction désignée;
• lookfor sujet donne une liste des rubriques de l’aide en ligne en relation avec le sujet
indiqué,
• clear permet d’effacer une partie ou toutes les variables définies jusqu’à Présent,
• who affiche les noms de toutes les variables en cours,
• whos affiche toutes les variables avec les détails..
A.AZZAYANI
Calculs élémentaires (Rappel)
Introduction
Dans Matlab, on trouve des variables prédéfinies :
Calculs élémentaires
• ans qui contient le dernier résultat de calcul
Graphiques 2D et 3D
• i et j qui représentent racine .
Recherche de zéro d’une
• Pi qui représente
fonction
• eps qui est un nombre prédéfini.
Résolution numérique
• inf qui représente plus infini
d’équations
• NaN : pas un nombre (not a number)
différentielles
Attention : Ces variables ne sont pas protégées, donc si vous les affectez, elles ne gardent pas leur
valeur. C’est souvent le problème pour i et j que l’on utilise souvent spontanément comme indices
de boucles, de telle sorte qu’on ne peut plus ensuite définir de complexe ! !
Toutes les fonctions courantes et moins courantes existent dans Matlab. On retiendra que pour
appliquer une fonction à une valeur, il faut mettre cette dernière entre parenthèses.
Voici une liste non exhaustive :
• Fonctions trigonométriques et inverses : sin, cos, tan, asin, acos, atan
• Fonctions hyperboliques (on rajoute «h») : sinh, cosh, tanh, asinh, acosh, atanh
• Racine, logarithmes et exponentielles : sqrt, log, log10, exp
9
M.SAYYOURI
Calculs élémentaires (Rappel)
Introduction • La notion de fonction est plus générale dans Matlab, et certaines fonctions peuvent avoir
Calculs élémentaires plusieurs entrées (comme besselj par exemple) mais aussi plusieurs sorties.
Graphiques 2D et 3D
Dans Matlab, toutes les variables représentent des matrices. On peut considérer donc qu’il y a un seul
Recherche de zéro d’une
type principal de données : le type matrice.
fonction
Les éléments d’une matrice peuvent être :
Résolution numérique
des nombres (réels ou complexes),
d’équations ou des caractères.
différentielles
On utilise les crochets [ et ] pour définir le début et la fin de la matrice. Ainsi pour définir une variable M
contenant la matrice , on écrira:
>> % 3 écriture d'une matrice
>> M=[1 2 3
456
7 8 9]
>> M=[1 2 3; 4 5 6 ; 7 8 9]
>> M=[1, 2 ,3 ; 4, 5, 6 ; 7, 8, 9]
Matlab propose des commandes pour créer certaines matrices particulières très simplement. Pour plus
d’information, lire le help de chaque fonction.
10
A.AZZAYANI
Calculs élémentaires (Rappel)
Introduction Commande Description
Calculs élémentaires ones(n,m) Matrice de taille n × m ne contenant que des 1.
Graphiques 2D et 3D zeros(n,m) Matrice de taille n × m ne contenant que des 0.
Recherche de zéro d’une eye(n,m) Matrice de taille n × m contenant des 1 sur la première diagonale et des 0 ailleurs.
fonction diag(v) Matrice diagonale où les éléments de la diagonale sont les composantes du vecteur v.
Résolution numérique rand(n,m) Matrice de taille n × m contenant des nombres aléatoires
d’équations
Matlab dispose également de moyens très simples pour créer des listes. La commande [a:p:b] crée une
différentielles
liste dont les éléments sont: a, a + p, a + 2*p, . . . , a + n*p, où n ∈ N,
a+n*p ≤ b < a+(n+1)*p
Le cas particulier [a:b] est un raccourci pour [a:1:b]. Si les conditions initiales sont erronées,
Matlab renvoie un message d’erreur.
linspace : Un autre cas particulier de [a:p:b] est la fonction linspace(a,b,n). Celle-ci crée une
liste de n éléments uniformément répartis entre a et b. Autrement dit, linspace(a,b,n) est la
même chose que [a: (b−a)/(n−1):b].
Une dernière méthode pour créer des tableaux est la concaténation. Si A et B sont deux tableaux, alors
[A B], ou [A,B] est le tableau obtenu en collant B à la droite de A, et [A ;B] est le tableau obtenu en
collant B au-dessous de A. Comme d’habitude, il faut faire attention aux tailles de A et de11B.
A.AZZAYANI
Calculs élémentaires (Rappel)
Introduction Opérations avec les matrices
Calculs élémentaires Matlab permet de faire certaines opérations avec des matrices. Dans ce qui suit, A et B sont des tableaux et
Graphiques 2D et 3D c est un scalaire.
Recherche de zéro d’une Commande Description
fonction
A+B Addition terme à terme ; A et B doivent avoir le même format.
A+c = c+A Addition de c aux éléments de A.
Résolution numérique
A-B Soustraction terme à terme ; A et B doivent avoir le même format.
différentielles A-c Soustraction de c aux éléments de A.
A*B Produit matriciel standard ; nb. col. A doit être le même que nb de ligne de B
A.*B Multiplication terme à terme ; A et B doivent avoir le même format.
Aˆn (n ∈ ) A * A * . . . * A (n fois) ; A doit être carrée.
A.ˆB Tableau dont les éléments sont
A’ Transposition et conjugaison.
B/A Le résultat est un tableau X tel que XA = B. Si A est inversible, alors X = B;
nb. col. A doit être le même que nb. col. B.
A\B Le résultat est un tableau X tel que AX = B. Si A est inversible, alors X =B
; nb. Ligne de A doit être le même que nb. Ligne de B.
A./B Division terme à terme des éléments de A par ceux de B ; A et B doivent avoir le
même format.
A.\B Division terme à terme des éléments de B par ceux de A ; A et B doivent avoir le
même format.
12
M.SAYYOURI
Calculs élémentaires (Rappel)
Introduction Fonctions sur les matrices
Calculs élémentaires Etant donnée une matrice A, il y a un certain nombre de choses que l’on peut calculer en rapport
Graphiques 2D et 3D avec A. Nous présentons ici quelques fonctions définies dans Matlab prenant comme paramètre
Recherche de zéro d’une des tableaux.
fonction Commande Description
Résolution numérique det(A) Renvoie le déterminant de A ; celle-ci doit être carrée.
d’équations trace(A) Renvoie la trace de A.
différentielles
rank(A) Renvoie le rang de A
diag(A) Renvoie la première diagonale de A.
norm(v) Renvoie la norme euclidienne de v ; v est un vecteur. Il est aussi possible de
calculer d’autres normes ;
mean(A) Renvoie une liste contenant la moyenne des éléments de chaque colonne.
sum(A) Renvoie une liste contenant la somme des éléments de chaque colonne.
prod(A) Renvoie une liste contenant le produit des éléments de chaque colonne.
max(A) Renvoie une liste contenant la valeur maximale chaque colonne.
min(A) Renvoie une liste contenant la valeur minimale de chaque colonne.
length(A) Renvoie le maximum entre le nombre de lignes et de colonnes
Finalement, on précise que toutes les fonctions mathématiques classiques (cos, sin, log, exp, etc)
s’appliquent également aux tableaux. Le résultat est un tableau où l’on a appliqué terme
13 à terme la
A.AZZAYANI fonction en question.
Exercices d’application
Exercice 1
3
Introduction
2
11 , e , 9 , ln(5) , log (5) , sin( ) , 1 , 1 2i (1 3i )
2 1.25 2
fonction
Exercice 2
Résolution numérique 1. Créer le vecteur colonne
d’équations
a) Créer un vecteur colonne à 3 éléments, appelé ua; contenant les éléments de la troisième colonne de A:
b) Créer un vecteur colonne à 5 éléments, appelé ub; contenant les éléments de la deuxième ligne de A:
c) Créer un vecteur colonne à 9 éléments, appelé uc; formé par les éléments de la première, de la troisième et
de la cinquième colonne de A:
d) Créer un vecteur colonne à 10 éléments, appelé ud; formé par la première et la deuxième ligne de A:
14
A.AZZAYANI
Programmation sous Matlab (Rappel)
Introduction
Un script Matlab est composé d'une suite d'instructions ou de commandes, toutes séparées par une virgule
Programmation sous
Matlab
(,), un point-virgule (;) ou un retour a la ligne ().
Graphiques 2D et 3D Matlab facilite l’édition d’un nouveau script en utilisant le bouton (New Script) qui fait appel a l’éditeur
Recherche de zéro d’une
de Matlab.
fonction
Résolution numérique
L’éditeur de Matlab crée par défaut un nouveau script sous le nom ‘untitled.m’. Le programmeur peut
d’équations spécifié ultérieurement un nom de son choix en utilisant le bouton (Save).
différentielles
Généralement, le script est sauvegardé dans un fichier avec l’extension ‘.m’ (ex : script1.m) sous le
dossier courant. On peut aussi charger un fichier déjà édite en utilisant le bouton (Open).
L’exécution du script se fait a travers l’invite de commande en spécifiant juste le nom du script.
L’exécution peut être effectuée directement depuis l’éditeur en cliquant sur le bouton (Run). Néanmoins,
les sorties des scripts (affichage des résultats) se fait toujours sur la fenêtre des commandes.
15
A.AZZAYANI
Programmation sous Matlab (Rappel)
Introduction
Affichage
Programmation sous
L’affichage des variables se fait simplement par la spécification de leurs noms sans point virgule à la fin
Matlab
Graphiques 2D et 3D de la ligne.
Recherche de zéro d’une La commande disp(X) affiche une variable X (chaine de caractères, entier, …) sur la fenêtre des
fonction
commandes. La commande disp n’accepte qu’un seul type de donnée à la fois.
Résolution numérique
La commande fprintf() accepte tous genre de variable en utilisant leurs formats de types : %d pour les
d’équations
différentielles entiers, %f pour les réels, %s pour les chaines de caractères, %c pour le caractères, … . On peut ajouter un
retour a la ligne via ‘\n’ et une tabulation via ‘\t’.
La commande sprintf() sauvegarde tous genre de variables de la même manière que fprintf, mais sans
affichage sur la fenêtre des commandes. sprintf() retourne une chaine de caractères qui peut être affichée
ultérieurement en utilisant la commande disp().
Exercice
1. Écrire un script Matlab eq2degre.m qui permet de résoudre une équation de second degré à une seule
variable ,
2. Écrire un script Matlab qui permet de tester la parité d’un nombre entier naturel donné par l’utilisateur
18
A.AZZAYANI
Programmation sous Matlab (Rappel)
Introduction %équation de second degré
a=input('entrer a: ');
Programmation sous
b=input(' entrer b: ');
Matlab c=input('entrer c : ');
Graphiques 2D et 3D delta=b^2-4*a*c;
if delta > 0
Recherche de zéro d’une
disp('l'‘équation admet deux solutions différentes');
fonction x1=(-b+sqrt(delta))/2*a
Résolution numérique x2=(-b-sqrt(delta))/2*a
elseif delta==0
d’équations
disp('l'‘équation admet une seule solution');
différentielles x2=-b/2*a
else
disp('l'‘équation n''admet pas de solutions');
end
entrer a: 1
entrer b: -3
entrer c : 2
l‘équation admet deux solutions différentes
x1 =
2
x2 =
19
A.AZZAYANI
1
Programmation sous Matlab (Rappel)
Introduction On a aussi la possibilité d'utiliser l’instruction switch-case comme pour le langage C :
Programmation sous
Recherche de zéro d’une for variable = valeur initiale : pas : valeur finale
fonction commandes
Résolution numérique
end ;
d’équations
et l’instruction while pour les boucles à condition de continuation.
différentielles
Graphiques 2D et 3D
même nom de la fonction à déclarer:
Recherche de zéro d’une Une fonction est déclarée comme suit :
fonction
function nomdefonction(inpar1, inpar 2, …)
Résolution numérique
% une fonction sans paramètre de sortie.
d’équations
différentielles
function outpar = nomdefonction(inpar1, inpar 2, …)
% une fonction avec un seul paramètre de sortie.
function [outpar1, outpar2, …] = nomdefonction(inpar1, inpar 2, …)
% une fonction avec plusieurs paramètres de sortie.
Il faut noter que :
La fonction ne se termine pas par end comme dans les autres langages évolués.
Le point-virgule n’est pas nécessaire à la fin des lignes, sauf si un affichage du résultat de la ligne en
question est requis.
22
A.AZZAYANI
Programmation sous Matlab (Rappel)
Introduction %le factoriel d’un nombre function seconeq(a,b,c); %équation de second degré
function fact(n) delta=b^2-4*a*c;
Programmation sous
s=1; if delta > 0
Matlab disp('l''équation admet deux solutions différentes');
for i=1:n x1=(-b+sqrt(delta))/2
Graphiques 2D et 3D s=s*i; x2=(-b-sqrt(delta))/2
Recherche de zéro d’une end elseif delta==0
fonction
S disp('l''équation admet une seule solution');
>> fact(5) x1=-b/2
Résolution numérique elseif delta<0
s =
d’équations 120 disp('l''équation n’admet pas de seule solution');
end
différentielles
>> seconeq(1,-3,2)
function [s p]=somprod(n); l'équation admet deux solutions différentes
s=0; p=1; x1 =
for i=1:n 2
s=s+i; x2 =
p=p*i; 1
End
function [s p]=somprod(n);
>>[s p]=somprod(5)
s=0; p=1;
s = i=1;
15 while i<=n
p = s=s+i; p=p*i; i=i+1;
120 end;
23
A.AZZAYANI
Programmation sous Matlab (Rappel)
Introduction Opérateurs relationnels et logiques
Programmation sous
Des expressions relationnelles et logiques peuvent être utilisées dans MATLAB exactement comme dans les
Matlab
Graphiques 2D et 3D
autres langages de programmation.
Recherche de zéro d’une Opérateurs relationnels
fonction Les opérateurs relationnels sont : <, <=, >, >=, ==, ~=
Résolution numérique
La comparaison d’égalité se fait à l’aide de [==] et l’inégalité à l’aide de [~=]. Ces opérateurs peuvent être
d’équations
différentielles
utilisés avec des scalaires ou des matrices. Le résultat d'évaluation d'une expression relationnelle est 1 (vrai)
ou 0 (faux).
Opérateurs logiques
Les expressions relationnelles peuvent être combinées en utilisant les opérateurs logiques suivants : &, | , ~
qui signifient respectivement "et" (AND), "ou" (OR) et "non" (NOT). Ces opérateurs sont appliqués sur les
matrices élément par élément. Les opérateurs logiques ont une priorité plus faible que les opérateurs
relationnels, qui à leur tour ont une priorité plus faible que les opérateurs arithmétiques.
!! Il est conseillé d'utiliser les parenthèses afin d'éviter toute ambiguïté.
A.AZZAYANI 24
Programmation sous Matlab (Rappel)
Introduction >> a=(1<=5) >> A=[1 2 3 4]
Programmation sous a= A=
1 2 3 4
Matlab 1 >> B=[4 2 5 4]
Graphiques 2D et 3D >> b=(5==12/3) B=
Recherche de zéro d’une b= 4 2 5 4
fonction 0 >> A==B
Résolution numérique >> c=(a | b) ans =
0 1 0 1
d’équations c= >> A<B
différentielles 1 ans =
>> d= (a & b) | c 1 0 1 0
d= >> A~=B
1 ans =
1 0 1 0
>> f=(~a)&(~b) >> ~(A<B)
f= ans =
0 0 1 0 1
x=(a~=b) >> A~=B
x= ans =
0 1 1 0
1
A.AZZAYANI 25
?
fonction • Afin d’évaluer un polynôme pour une valeur fixe a, on utilise la commande polyval(P, a).
Résolution numérique Opérations arithmétiques
d’équations
• Matlab fournit deux opérations arithmétiques de multiplication et de division à travers les commande conv
différentielles
et deconv. Il reste au programmeur de programmer les deux autres opérations d’addition et de soustraction.
• C = conv(A, B) est la convolution des tableaux A et B, c'est à dire les coefficients du produit des deux
polynômes.
• [Q, R] = deconv(A, B) est la déconvolution des tableaux A et B ou Q est le quotient de la division et R est
le reste (A = conv(B ,Q) + R).
Exemple
Soient p et q deux polynômes définis par :
P(x)=2x^3-x^2+3x-5 et q(x)=3x^2-5x+3
Calculer p(2) et q(1.5)
Calculer s(x)=p(x)+q(x) ; r(x)=2p(x)-3q(x) ; t(x)=p(x)q(x) ; u(x)=p(x)/q(x)
A.AZZAYANI 26
?
r= p=
4 -11 21 -19 2 -1 3 -5
A.AZZAYANI 27
?
Graphiques 2D et 3D a x a x ... a x
11 1 12 2 1p p
b1
a x a x ... a x b
Recherche de zéro d’une
21 1 22 2 2p p 2
fonction
Résolution numérique ...
d’équations a x a x ... a x b
différentielles p 11 1 p 12 2 p 1 p p p
a x a x ... a x
p1 1 p2 2 pp p
b p
Les sont aij appelés les coefficients du système ; les bk sont le second membre du système (ou la partie
gauche).
fonction
en utilisant la commande syms.
Résolution numérique
Il faut noter que solve retourne des solutions sous forme symbolique ou formelle au lieu de numérique
d’équations (racine de 2 a la forme numérique de 1.4142 et la forme formelle 2^(1/2)).
différentielles >> sqrt(sym(2)) >> syms x %équation de 2 >> syms a b x inéquation de 2 degré
ans = degré >> solve(a*x+b,x)
2^(1/2) >> solve(x^2-3*x+2) ans =
>> a=sym(1)/sym(3) ans =
a= 1 -b/a
1/3 2 >> syms a b c x
>> b=sym(2)/sym(5) >> syms x, solve(x^2+x+1) >> solve(a*x^2+b*x+c, x)
b =2/5 ans = ans =
>> c=a+b - 1/2 - (3^(1/2)*i)/2 -(b + (b^2 - 4*a*c)^(1/2))/(2*a)
c =11/15 - 1/2 + (3^(1/2)*i)/2 -(b - (b^2 - 4*a*c)^(1/2))/(2*a)
A.AZZAYANI 33
?
Exercice
La vitesse d’une particule est exprimée par la fonction v(t)=tsin(t/2)
1. Trouver la position de la particule 𝑥(𝑡) sachant que la position initiale est 𝑥(0) = 0
2. Trouver l’accélération de la particule 𝑎( 𝑡) 36
A.AZZAYANI
?
d’équations
Calcul des sommes
différentielles
On peut calculer des sommes symboliques quand elles existent en utilisant la commande symsum
Exemple
1
2
1
x
k
fonction
On peut superposer un quadrillage (ou le faire disparaitre) par les commandes: grid (ou grid off)
Résolution numérique On peut aussi mettre un titre, mettre des étiquettes aux axes: title ('graphe de sinus'), xlabel('x'),
d’équations ylabel('sinus(x)')
différentielles
38
A.AZZAYANI
Graphique 2D
Introduction
Afin d'afficher deux ou plusieurs graphes en même temps, une série des coordonnées (x, y) est
Calculs élémentaires
introduise a la fonction plot: plot(x1, y1, x2, y2, …) .
Graphiques 2D et 3D
La legende (surtout en cas de plusieurs graphes) peut être affichée en utilisant la commande
Recherche de zéro d’une
legend(legend1, legend2, …).
fonction
La commande legend('show') permet de montrer la légende, par contre la commande
Résolution numérique legend('hide') permet de la cacher.
d’équations
différentielles
39
A.AZZAYANI
Graphique 2D
Introduction La commande plot(x, y, LineSpec) affiche un graphe avec la spécification donnée par LineSpec qui est
Calculs élémentaires formée au plus de trois valeurs: style de ligne, type de marquer, et la couleur.
Graphiques 2D et 3D Par exemple plot(x, y, '-+b') affiche un graphe bleu de la forme -+-+-+…
Recherche de zéro d’une Noter bien que la spécification 'type de marqueur' est utilisée pour les points choisies (vecteurs x et y), par
fonction
contre la spécification 'style de ligne' couvre toute la courbe.
Résolution numérique
Symbole Style de ligne Symbole Type de Marqueur
d’équations
- Ligne solide (par défaut) o Cercle
différentielles
-- La ligne non continue + Signe plus
: La ligne pointillée * Astérisque
-. La ligne tiret-point . Point
Symbole Couleur x Croix
y Jaune s Carré
m Magenta d Diamant
c Cyan ^ Triangle vers le haut
r Rouge V Triangle vers le bas
g Vert > Triangle pointant à droite
b Bleu < Triangle pointant à gauche
w Blanc p Pentagramme
k Noir h Hexagramme 40
A.AZZAYANI
Graphique 2D
Introduction
Exemple
Calculs élémentaires
d’équations
>> legend('sin(x)','cos(x)')
différentielles >> plot(x, y, '-ob', x, z, '-.dr')
>> legend('sin(x)','cos(x)')
>> title('Graphe de Sinus et cosnus')
>> xlabel('x')
>> ylabel('y')
41
A.AZZAYANI
?
Graphique 2D
Introduction Exemples
Calculs élémentaires Imaginons que l'on veut définir la fonction suivante :
Graphiques 2D et 3D C'est une fonction définie par morceaux puisque sa valeur dépend d'un test logique définissant, dans cet
Recherche de zéro d’une exemple, deux domaines de définition.
fonction
Voilà comment définir y en fonction de x:
Résolution numérique
>> x=-4*pi : pi/20 : 4*pi;
d’équations
>> y=sin(x).*(x>0)+sin(2*x).*not(x>0);
différentielles >> plot(x,y,'-b*')
>> xlabel('x')
>> ylabel('y')
>> title ('sin(x) et sin(2x)')
x=-4*pi:pi/20:4*pi;
inds1=find(x>0);
x1=x(inds1);
inds2=find(x<=0);
x2=x(inds2);
y1=sin(x1);
y2=sin(2*x2);
y=[y2, y1];
plot(x,y,'-b*')
A.AZZAYANI 42
Graphique 3D
Introduction Courbes dans un espace 3D
Calculs élémentaires
Comme une courbe en 2D est définie par une liste de doublets (x,y) on peut définir une courbe en 3D par
Graphiques 2D et 3D une liste de triplets (x,y,z). Puisque l'instruction plot attendait deux arguments, le vecteurs des abscisses, et
Recherche de zéro d’une celui des ordonnées, l'instruction plot3 en attend trois : le vecteur des abscisses Vx, le vecteur des
fonction ordonnées Vy et le vecteur des cotes Vz.
Résolution numérique Syntaxe: plot3(Vx, Vy, Vz) ;
d’équations Voici un exemple de courbe paramétrée tracée dans un espace à trois dimensions :
différentielles
x=sin(t)e-t/10
y=cos(t)e
-t/10
t [-2π,2π]
z=e-t
t = -2*pi:2*pi/100:2*pi;
plot3(exp(-t/10).*sin(t), exp(-t/10).*cos(t), exp(-t));
grid;
43
A.AZZAYANI
Graphique 3D
Introduction Tracé d'un nuage de points 3D
Calculs élémentaires
Le principe est le même que pour un nuage 2D: les points possèdent 3 coordonnées (x , y , z) représentés
Graphiques 2D et 3D par des marqueurs non liés.
Recherche de zéro d’une
fonction T1=ones(1,100);
Résolution numérique
% Premier nuage de valeurs
d’équations
A = 0.2 * randn(3,100) + [1*T1 ; 2*T1 ; 1*T1]
plot3( A(1, : ) , A(2 , : ) , A(3 , : ) , '.' )
différentielles
hold on
% Deuxième nuage de valeurs
B = 0.6 * randn(3,100) + [2*T1 ; 3*T1 ; 2*T1] ;
plot3( B(1, : ) , B(2 , : ) , B(3 , : ) ,'+r')
grid on ; axis([0 3 0 4 0 4])
44
A.AZZAYANI
Graphique 3D
Introduction Tracé d'une surface
Calculs élémentaires Une surface est une application de ( x , y) vers z de la forme z= f ( x , y) .
Graphiques 2D et 3D Exemple: le plan est décrit par l'équation z=a x+b y+z0
Recherche de zéro d’une La représentation est calculée pour un maillage des valeurs de
fonction l'espace de départ; le tracé de ce maillage forme une grille
Résolution numérique rectangulaire ou carrée. Chaque point du maillage est caractérisé
d’équations
par le couple des coordonnées (x , y) .
différentielles
Exemple de plan
a = 1.5 ; b = .7 ; z0 = 2 ;
x = [ -5 : .5 : 5 ]; y = [ -7 : .3 : 7 ];
[X Y]=meshgrid(x,y)
Z=a*X+b*Y+z0 ;
surf(Z)
Graphiques 2D et 3D x = -1:0.2:1;
Recherche de zéro d’une
y = -2:0.2:2;
fonction
[X,Y] = meshgrid(x,y);
Z = Y .^2 + X.^2;
Résolution numérique
subplot(221)
d’équations
mesh(X, Y, Z);
différentielles
xlabel('x'); ylabel('y'); zlabel('z'); title('mesh’);
subplot(222)
meshc(X, Y, Z);
xlabel('x'); ylabel('y');zlabel('z'); title('meshc');
subplot(223)
surf(X, Y, Z);
xlabel('x'); ylabel('y');zlabel('z'); title('surf');
subplot(224)
surfl(X, Y, Z);
xlabel('x'); ylabel('y’); zlabel('z'); title('surfl');
46
A.AZZAYANI
Graphique 3D
Introduction Tracé de courbes de contour
Calculs élémentaires Pour tracer les courbes z=cste d'une surface définie par z=f(x,y) , on peut utiliser la fonction contour.
Graphiques 2D et 3D Elle s'utilise comme les instructions précédentes, mais fournit un graphe 2D dans le plan . Plusieurs paramètres
Recherche de zéro d’une optionnels peuvent être spécifiés, notamment le nombre de courbes de contours à afficher.
fonction x = -1:0.05:1; x = -1:0.05:1; y = -2:0.05:2;
Résolution numérique
y = -2:0.05:2; [X,Y] = meshgrid(x,y);
[X,Y] = meshgrid(x,y); Z = Y .^2 + X.^2;
d’équations
Z = Y .^2 + X.^2; ch= contour(X,Y,Z,5);
différentielles contour(X,Y,Z,5); clabel(ch);
il est également
intéressant d'ajouter
sur le tracé les valeurs
de le long des
différentes lignes de
contour. Pour cela il
faut affecter à une
variable la valeur de
sortie de la commande
contour et utiliser la
fonction clabel
47
A.AZZAYANI
Recherche de zéro d’une fonction
Introduction Introduction
Calculs élémentaires
Il existe toute une panoplie de méthodes numériques (dichotomie, point fixe, Newton, Lagrange)
Graphiques 2D et 3D
conduisant à chercher numériquement les zéros de fonction 𝑓( 𝑥) = 0 d’une variable réelle.
Recherche de zéro d’une
La majorité de ces méthodes sont itératives.
fonction
Elles calculent des approximations successives 𝑥1, 𝑥2, 𝑥3, ... de la véritable racine 𝑥* de l’équation
Résolution numérique
𝑓(𝑥)=0, à partir d’une valeur initiale 𝑥0 plus au moins bien choisie. Ce qui les distingue, entre autre, c’est leur
d’équations
vitesse de convergence et leur robustesse.
différentielles
Méthode de Newton
Le but dans cette section, est la programmation, sous Matlab, de la méthode itérative de Newton. Afin
d’appréhender cette dernière, soit la figure ci-dessous :
Géométriquement, la solution approchée 𝑥𝑛+1 n’est autre que le
point d’intersection de l’axe des abscisses et la tangente, au point
(𝑥𝑛, 𝑓(𝑥𝑛)), d’équation D : 𝑦 = 𝑓′(𝑥𝑛) × (𝑥𝑛 − 𝑥𝑛+1) + 𝑓(𝑥𝑛).
Notons que 𝑥* est la véritable racine de l’équation 𝑓(𝑥) = 0, dont
on cherche à approcher. À partir de la figure ci-dessus, on a :
48
A.AZZAYANI
Recherche de zéro d’une fonction
Introduction
Calculs élémentaires
Graphiques 2D et 3D
fonction
Résolution numérique
d’équations
différentielles
49
A.AZZAYANI
Recherche de zéro d’une fonction
Introduction Or on sait que :
Calculs élémentaires
Graphiques 2D et 3D
Recherche de zéro d’une À partir des deux équations précédentes on obtient ainsi le schéma numérique de la méthode de Newton,
fonction
soit :
Résolution numérique
d’équations
différentielles on constate que la méthode de Newton nécessite à chaque itération l’évaluation de deux fonctions, à
savoir 𝑓 et de sa dérivée. Néanmoins, cet effort est compensé par une vitesse de convergence accrue,
puisque cette méthode est d’ordre deux. Cet accroissement de la vitesse de convergence est
conditionné par le choix de la valeur initiale qui doit être la proche possible du zéro recherché.
On rappelle que le vecteur erreur 𝑒𝑛 est calculé à partir de : 𝑒𝑛 = |𝑥𝑛 − 𝑥𝑎𝑝𝑝|. Avec, 𝑥𝑎𝑝𝑝 est la solution
approchée, de la valeur exacte, déterminée avec une tolérance fixée préalablement. 𝑛, étant le nombre
d’itérations.
l’estimation de l’erreur sert à comparer la vitesse de convergence pour des méthodes numériques
différentes. Sur le plan pratique, l’erreur est représentée graphiquement en traçant 𝑒𝑛+1 en fonction de 𝑒𝑛
avec une échelle logarithmique. Ainsi, l’ordre noté 𝑝, d’une méthode numérique s’obtient à partir de :
50
A.AZZAYANI
Recherche de zéro d’une fonction
Introduction Ainsi l’ordre, 𝑝, est quantifié via la pente de l’équation ci-dessus. On en déduira que :
Calculs élémentaires
Si 𝑝 = 1 ⇒ 𝑥𝑛 converge linéairement vers la solution approchée. Dans ce cas on gagne la même quantité
Graphiques 2D et 3D
de précision à chaque itération.
Si 𝑝 = 2 ⇒ 𝑥𝑛 converge quadratiquement vers la solution approchée. Dans ce cas on gagne le double de
Recherche de zéro d’une
précision à chaque itération.
fonction
Si 𝑝 = 3 ⇒ 𝑥𝑛 converge cubiquement vers la solution approchée. Dans ce cas on gagne le triple de
Résolution numérique
précision à chaque itération.
d’équations
différentielles
Nmax=100; x=-0.5; it=1; tol=10^-5; verif=tol+0.01;
while (it<=Nmax & verif>tol)
if df(x)==0
disp('pas de solution')
elseif dfx(x)~=0
xn=x-(f(x)/df(x));
verif=abs(f(x)/df(x));
x=xn
end
if(it==Nmax & verif >tol)
disp('La méthode de newton ne converge pas pour la tolérance considérée')
end
it=it+1;
end 51
A.AZZAYANI
Recherche de zéro d’une fonction
Introduction
Calculs élémentaires
Exercice
Graphiques 2D et 3D Nous allons résoudre l’équation : 𝑓(𝑥) = 𝑥+𝑒𝑥𝑝(𝑥)+1. Nous choisissons 𝑥0 = −1/2 comme valeur initiale.
Recherche de zéro d’une
A. Écrire un code Matlab, portant sur l’implémentation de la méthode de Newton, en suivant les étapes
fonction
Résolution numérique
suivantes :
d’équations 1. Faire un test si 𝑓’(𝑥) = 0 ⇒ arrêt du programme.
différentielles
2. Le critère d’arrêt est : |𝑥𝑛+1 − 𝑥𝑛| < 𝜀, 𝑥𝑛 étant la solution approchée et 𝜀, la tolérance considérée.
3. Afficher la solution approchée 𝑥𝑛.
4. Afficher le nombre d’itérations conduisant à la solution approchée.
5. Afficher sur le même graphe, la fonction 𝑓( 𝑥), la solution approchée 𝑥𝑛 et la droite tangente au point
(𝑥𝑛, 𝑓(𝑥𝑛)).
B. Appliquez le même algorithme pour résoudre l’équation : 𝑓( 𝑥) = 8 𝑥^3 − 12 𝑥^2 + 1
52
A.AZZAYANI
Recherche de zéro d’une fonction
Introduction clear all; close all; clc ;
Calculs élémentaires
Nmax=100; x=-1/2; it=0; tol=1e-04;
verif=tol+1/2;
Graphiques 2D et 3D
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
text('Interpreter','latex','String','f(x)=x+exp(x)+1','Position',[-10/2
20/2],'FontSize',15)
text(xn,2*xn,['xn=',num2str(xn)],'Position',[-3 2],'BackgroundColor',[1
54
1 1]);
A.AZZAYANI
Recherche de zéro d’une fonction
Méthode de dichotomie
Introduction
La méthode de dichotomie est une méthode pour trouver une solution approchée à une équation f(x)=0 telle que f est une
Calculs élémentaires
Graphiques 2D et 3D fonction continu sur un intervalle [a, b] avec f(a)*f(b) ≤0 . Elle consiste à répéter des partages d’un intervalle en deux parties
Recherche de zéro d’une puis à sélectionner le sous-intervalle dans lequel existe le zéro de cette fonction. Le principal défaut de l'algorithme est que
fonction
seul le signe de f est utilisé, ce qui mène à une convergence plutôt lente (convergence quasiment linéaire).
Résolution numérique
la méthode de dichotomie, est basé sur le théorème de la valeur intermédiaire. La méthode est décrite comme
d’équations
suit : soit, 𝑓 : [𝑎 𝑏] → 𝑅, une fonction continue sur l’intervalle [ 𝑎 𝑏]. Si 𝑓( 𝑎)× 𝑓( 𝑏) < 0 → il existe donc au
différentielles
moins une racine de 𝑓(𝑥) appartenant à l’intervalle [ 𝑎 𝑏]. On prend 𝑐 =(a+b)/2 la moitié de l’intervalle [ 𝑎 𝑏]
tel que :
1. Si 𝑓(𝑐) = 0 → 𝑐 est la racine de 𝑓(𝑥).
2. Sinon, nous testons le signe de 𝑓(𝑎) × 𝑓(𝑐) (et de 𝑓(𝑐) × 𝑓(𝑏)).
3. Si 𝑓(𝑎)×𝑓(𝑐) < 0 → la racine se trouve dans l’intervalle [ 𝑎 𝑐] qui est la moitié de [ 𝑎 𝑏].
4. Si 𝑓(𝑐) × 𝑓(𝑏) < 0 → la racine se trouve dans l’intervalle [ 𝑐 𝑏] qui est la moitié de [a b]
Ce processus de division, par deux, de l’intervalle (à chaque itération on divise l’intervalle par deux) de la
fonction est réitéré jusqu’à la convergence pour la tolérance considérée. Ainsi, pour la nième itération, on
divise : [𝑎𝑛 𝑏𝑛] en [𝑎𝑛 𝑐𝑛] et [𝑐𝑛 𝑏𝑛], avec à chaque fois 𝑐𝑛=(an+bn)/2.
L’erreur absolue de la méthode de dichotomie est au plus en=(b-a)/2^(n+1) après n étapes car 55
l'erreur est
A.AZZAYANI diminuée de moitié à chaque étape.
Recherche de zéro d’une fonction
Introduction a=; b=; itmax=100; tol=1e-6; it=0; c=(b+a)/2; x=[a,c,b]
Calculs élémentaires
f =inline('x+exp(x)+1')
Graphiques 2D et 3D
while (it<itmax)
if f(a)*f(c)<0
Recherche de zéro d’une
b=x(2); a=x(1); c=(a+b)/2; x=[a,c,b];
fonction
elseif f(c)*f(b)<0
Résolution numérique
b=x(3); a=x(2); c=(a+b)/2; x=[a,c,b];
d’équations end
différentielles if abs(f(c))<tol
sol=c;
break
end
if it==itmax & abs(f(c))>tol
disp('PAS DE CONVERGENCE POUR LA TOLERANCE CONSIDEREE')
end
it=it+1;
end
disp(strcat('LA RACINE APPROCHEE VAUT :', num2str(sol)))
disp(strcat('LE NOMBRE D''ITERATION EST :', num2str(it)))
56
A.AZZAYANI
Recherche de zéro d’une fonction
Méthode de Lagrange
Introduction
La méthode de Lagrange est une variante de la méthode de Newton.
Calculs élémentaires
Soit f∈C1([a,b],R)ayant une convexité déterminée. Rappelons que pour calculer un zéro de f par la méthode
Graphiques 2D et 3D de Newton, on considère la suite (xn)définie par :
Recherche de zéro d’une
fonction
Résolution numérique
d’équations
Dans certaines situations, la dérivée de f est très compliquée voir même impossible à calculer. Dans ce cas,
nous approchons la dérivée par un taux d'accroissement. Ce que nous obtenons est appelée la méthode de
différentielles
Lagrange ou méthode de la sécante :
Ici, xn+1 dépend de xn et de xn−1: on dit que c'est une méthode à deux pas ; nous avons d'ailleurs
besoin de deux itérés initiaux x0 et x1.
L'avantage de cette méthode est qu'elle ne nécessite pas le calcul de la dérivée f′. L'inconvénient est que
la convergence n'est plus quadratique.
La fonction g correspondante vérifie :
57
A.AZZAYANI
Recherche de zéro d’une fonction
Introduction
compt=1; maxiter=100; % limiter le nombre d'itération pour trouver la solution
f = input('Entrer la fonction en x: ' );% entrer la fonction
Calculs élémentaires a = input('Entrer la premiére valeur : ');%enter la premiere valeur de l'intervalle
Graphiques 2D et 3D b = input('Entrer la deuxième valeur: ');%entrer la derniere valeur de l'intervalle
maxerr = input('Entrer la tolérence: ');% enter la valeur de la tolérance
Recherche de zéro d’une
c = (a*f(b) - b*f(a))/(f(b) - f(a));%
fonction disp(' Xn-1 f(Xn-1) Xn f(Xn) Xn+1 f(Xn+1)');
disp([a f(a) b f(b) c f(c)]);
Résolution numérique
différentielles
x0 dans un voisinage I de α
∀ n ≥ 0, Xn+1 = g(Xn)
tol=10^-6;n_max=100;x0=0.8;
f=inline('cos(x)','x');
n_iter=0; x1=f(x0);
while(abs(x1-x0)>tol && n_iter<n_max)
x0=x1;
x1=f(x0);
n_iter=n_iter+1;
end
if n_iter==n_max & abs(x1-x0)>tol
disp('PAS DE CONVERGENCE POUR LA TOLERANCE CONSIDEREE')
end 59
A.AZZAYANI
Recherche de zéro d’une fonction
Introduction Exercice :
Calculs élémentaires
En utilisant les méthodes de Newton, point fixe , dichotomie de Lagrange, trouver les
Graphiques 2D et 3D
Résolution numérique
d’équations
différentielles
60
A.AZZAYANI
Résolution numérique d’équations différentielles
Introduction Rappel sur les équations différentielles
Calculs élémentaires
Résolution numérique fonction d’une variable réelle et ses dérivées. Dans sa forme la plus générale, elle s’écrit f(y, y’, t) = 0
d’équations
où y est la fonction inconnue, y’ sa dérivée et t la variable réelle. Cette formulation est extrêmement
différentielles
générale et peut poser de grosses difficultés mathématiques. Dans tout ce qui suit, on se limitera aux
équations différentielles ordinaires explicites, c’est à dire de la forme y’= f(y, t)
Conditions initiales et théorème de Cauchy-Lipschitz
Une équation différentielle admet généralement une infinité de solution, mais un problème physique, par
exemple la chute d’une pierre, n’a qu’une seule solution : celle qu’on mesure. Pour trouver la solution
physique du problème considéré, il faut fixer une condition initiale, c’est à dire un couple (t0, y0)
tel que y(t0) = y0.
61
A.AZZAYANI
Résolution numérique d’équations différentielles
Introduction
On appelle problème de Cauchy la donnée d’une équation différentielle et d’une condition initiale. Le
Calculs élémentaires
Graphiques 2D et 3D
théorème de Cauchy-Lipschitz assure alors que si la fonction f est suffisamment régulière, il existe une
Recherche de zéro d’une unique solution au problème de Cauchy. On considèrera que cette condition de régularité est toujours
fonction
respectée par la suite.
Résolution numérique
d’équations
Exemple : le problème de Cauchy y’ = y, y(0) = 1 admet une unique solution, la fonction exponentielle.
différentielles
Résolution d’une équation différentielle
Dans la grande majorité des cas, on ne connaît pas de solution exacte à une équation différentielle : les
solutions analytiques sont des exceptions.
On sait qu’une solution exacte existe, mais on ne peut pas en dire plus. À défaut d’une solution exacte, on
peut résoudre numériquement une équation différentielle, c’est à dire obtenir une valeur numérique
approchée y(t) pour un ensemble de temps discrets.
L’objectif est que lorsque le pas de temps diminue, la solution approchée converge vers la solution
exacte. 62
A.AZZAYANI
Résolution numérique d’équations différentielles
Introduction Méthodes numériques
Calculs élémentaires Nous allons détailler quelques méthodes numériques permettant de résoudre l’équation différentielle
Graphiques 2D et 3D
dy
Recherche de zéro d’une f ( y, t ), y (t0 ) y0
fonction
dt
Méthode d’Euler
Résolution numérique
d’équations La méthode d’Euler est la méthode numérique la plus simple pour résoudre une équation différentielle.
différentielles
Elle consiste à partir du point y0 à t0 et à intégrer la dérivée y’ obtenue en utilisant l’équation différentielle.
dy
On part du développement limité y(t +t) = y(t) + t + O( t 2 )
dt
On fixe un pas de temps fini t et une grille de temps, {t }
i {t0 it} et on note yi = y(ti) ,
O(t ) (méthode d’ordre 1), ce qui est assez lent : il faut un pas de temps très petit pour obtenir un résultat
63
A.AZZAYANI
Résolution numérique d’équations différentielles
Introduction Une implémentation de la méthode d’Euler pour résoudre l’équation (re-feq : ODE) sur l’intervalle [t0, tf ]
Calculs élémentaires
avec un pas de temps dt est donc, en code Matlab :
Graphiques 2D et 3D
t = t0:dt:tf; % on fixe la grille de temps
Recherche de zéro d’une
n = length(t);
fonction
y = zeros(1,n); % on fixe la taille du tableau y
Résolution numérique
y(1) = y0; % on fixe la condition initiale
d’équations for i=1:n-1 % on écrit y(i+1) : i+1 ne doit donc pas dépasser n
différentielles y(i+1) = y(i) + dt*f(y(i),t(i)); % on applique le schéma numérique
end
Exercice :
1. Résoudre numériquement, par le biais des méthodes de Euler, l’équation différentielle du premier ordre
suivante :
2. Afficher la solution
3. Analyser l’erreur en fonction du pas de discrétisation .
A.AZZAYANI
Résolution numérique d’équations différentielles
Introduction
1.02
clear all;
Euler
Calculs élémentaires clc; 1
Graphiques 2D et 3D %%
Recherche de zéro d’une dydt=inline('(-y.*t.^2-y.^2+2.*t)./(1-t.^3)','t','y'); 0.98
fonction a=0;
b=1; 0.96
Résolution numérique
d’équations
n=70;
0.94
h=(b-a)/n;
différentielles
t=a:h:b;
0.92
epsilon=0.0001;
u(1)=1+epsilon; 0.9
%%
for i=1:n-1 0.88
u(i+1)=u(i)+h*(dydt(t(i),u(i)));
end 0.86
%%
0.84
plot(t(1:end-1),u,'o-b')
legend('Euler')
0.82
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
A.AZZAYANI
Résolution numérique d’équations différentielles
Introduction
Autres méthodes numériques
Calculs élémentaires
Graphiques 2D et 3D
La méthode d’Euler converge très lentement, l’erreur est mal contrôlée. On cherche donc des algorithmes
Recherche de zéro d’une plus efficaces. On ne détaillera pas le déroulé des méthodes, le lecteur intéressé est renvoyé à la littérature sur
fonction
le sujet.
Résolution numérique
A.AZZAYANI
Résolution numérique d’équations différentielles
1.02
Introduction f=inline('(-y.*t.^2-y.^2+2.*t)./(1-t.^3)','y','t') point milieu
1
Calculs élémentaires t0=0;
Graphiques 2D et 3D tf=1; 0.98
Recherche de zéro d’une
n=70;
0.96
fonction
dt=(tf-t0)/n;y0=1;
Résolution numérique
t = t0:dt:tf; 0.94
d’équations
n = length(t);
différentielles 0.92
y = zeros(1,n);
y(1) = y0; 0.9
end 0.84
plot(t(1:end),y,'o-b')
0.82
legend('point milieu') 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
A.AZZAYANI
Résolution numérique d’équations différentielles
Introduction Méthode de Heun :
Calculs élémentaires
la méthode de Heun, ou méthode d’Euler améliorée ou encore méthode de Runge-Kutta d’ordre 2 est une
Graphiques 2D et 3D
autre méthode d’ordre O(t ) Son schéma numérique est :
2
différentielles
t0=0;tf=1; n=70; dt=(tf-t0)/n; y0=1; 0.96
t = t0:dt:tf; n = length(t);
0.94
y = zeros(1,n); y(1) = y0;
0.92
for i=1:n-1
yy(i)=y(i)+dt*f(y(i),t(i)); 0.9
+f(y(i),t(i))); 0.86
end 0.84
plot(t(1:end),y,'o-b') 0.82
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
legend('heun')
A.AZZAYANI
Résolution numérique d’équations différentielles
Introduction Méthode de Runge Kutta d’ordre 4 :
Calculs élémentaires
la méthode de Runge-Kutta est une méthode
Graphiques 2D et 3D
d’équations f=inline('(-y.*t.^2-y.^2+2.*t)./(1-t.^3)','y','t')
différentielles t0=0;tf=1; n=70; dt=(tf-t0)/n;y0=1; 1
runge-Kuta
t = t0:dt:tf; n = length(t); 0.98
k4=dt*f(y(i)+k3,t(i+1)) 0.88
end 0.84
plot(t(1:end),y,'o-b’), legend('runge-Kuta')
0.82
A.AZZAYANI 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Résolution numérique d’équations différentielles
Introduction Exercice
Calculs élémentaires
1. Résoudre numériquement, par le biais des méthodes de Euler, de Heun et de Runge-Kutta d’ordre 4,
Graphiques 2D et 3D
l’équation différentielle du premier ordre suivante :
Recherche de zéro d’une
fonction
Résolution numérique
A.AZZAYANI
Résolution numérique d’équations différentielles
Introduction Exercice
Calculs élémentaires
1. Résoudre numériquement, par le biais des méthodes de Euler, de Heun et de Runge-Kutta d’ordre 4,
Graphiques 2D et 3D
l’équation différentielle du premier ordre suivante :
Recherche de zéro d’une
fonction
Résolution numérique
A.AZZAYANI
Résolution numérique d’équations différentielles
clear all; clc;
Introduction
dydt=inline('(t-y)/2','y','t');
Calculs élémentaires
funex=inline('3*exp(-t/2)-2+t','t’);
Graphiques 2D et 3D a=0;b=6; ik=0; epsilon=0.0001; y(1)=1; col={'k','b','r','m','c','g'};
Recherche de zéro d’une for n=60:10:110
fonction dt=(b-a)/n; t=a:dt:b;
Résolution numérique
for i=1:n-1
k1=dt*dydt(y(i),t(i));
d’équations
k2=dt*dydt(y(i)+k1/2,t(i)+dt/2);
différentielles
k3=dt*dydt(y(i)+k2/2,t(i)+dt/2);
k4=dt*dydt(y(i)+k3,t(i+1));
y(i+1)=y(i)+(k1+2*k2+2*k3+k4)/6;
end
ik=ik+1; t=t(1:end-1);
err=abs((funex(t)-y)./funex(t)); max_err(ik)=max(err); pas(ik)=dt;
figure(1); hold on; plot(err,col{ik});
xlabel('NOMBRE D''ITERATIONS '); ylabel('ERREUR RELATIVE')
end
figure(2); plot(t,y,'-*');
hold on; plot(t,funex(t),'o-r')
figure(3); plot(pas,max_err,'r-+’); axis([0.05 0.11 0 7e-08])
A.AZZAYANI xlabel('PAS DE DISCRETISATION’); ylabel('MAXIMUM DE L''ERREUR RELATIVE')
Résolution numérique d’équations différentielles
Introduction Équations différentielles d’ordre 𝑛
Calculs élémentaires
N’importe quelle équation différentielle d’ordre 𝑛 peut être ramenée à un systèmes de 𝑛 équations du premier
Graphiques 2D et 3D
ordre. Nous allons illustrer ceci par un exemple. Soit l’équation différentielle du second ordre suivante :
Recherche de zéro d’une
fonction
Résolution numérique
d’équations
différentielles
Posons
il vient
u '1 (t ) 0 1 u1 (t ) 0
Donc
u '2 (t ) 1 t / 2 u2 (t ) 3
A.AZZAYANI
Résolution numérique d’équations différentielles
Introduction a=0;b=1;n=64;h=(b-a)/n;t=a:h:b; 2
SOLUTION NUMERIQUE
SOLUTION EXACTE
Calculs élémentaires
fun=inline('[u(2),(t*u(2))/2-u(1)+3]','t','u');
1.8
Graphiques 2D et 3D
%ou bien fun=@(t,u)[u(2),(t*u(2))/2-u(1)+3];
u=[1 0]; 1.6
Recherche de zéro d’une
for i=1:n
y(t)
fonction 1.4
u(i+1,:)=u(i,:)+h*feval(fun,t(i),u(i,:));
Résolution numérique
end 1.2
d’équations funex=t.^2+1;
différentielles plot(t,u(:,1),'o','MarkerSize',8); 1
hold on 0.8
0 0.2 0.4 0.6 0.8 1
plot(t,funex,'r','LineWidth',1.5); t FONCTION DERIVEE
2
hold on
axis([-0.05 1.1 0.8 2.1])
legend('SOLUTION NUMERIQUE','SOLUTION EXACTE’); 1.5
xlabel('t');
dy/dt
ylabel('y(t)') 1
figure
plot(t,u(:,2),'or','MarkerSize',8)
0.5
axis([-0.05 1.1 0 2.2]);
legend('FONCTION DERIVEE’); xlabel('t’); ylabel('dy/dt')
A.AZZAYANI 0
0 0.2 0.4 0.6 0.8 1
Résolution numérique d’équations différentielles
Introduction Au moyen de routines Matlab
Calculs élémentaires Matlab comprend un certain nombre de solveurs destinés à la résolution d’équations différentielles. Les
Graphiques 2D et 3D plus utilisés sont ode23 et ode45, qui sont basés sur la méthode de Runge-Kutta explicite à un pas. Le
Recherche de zéro d’une solveur ode113, utilise la méthode de Adams-Bashforth-Moulton multi-pas. Les autres solveurs sont
fonction ode15s, ode23s, ode23t, ode23tb.
Résolution numérique Ils ont tous la même syntaxe :[t, y] = solveur(eqs, [ti ; tf], yinit, opts).
d’équations Cette syntaxe renvoie la solution y au temps t.
différentielles
L’argument eqs est le système d’équations différentielles. Ce système peut être défini de plusieurs
manières. Soit à travers un fichier M-file, dans ce cas on doit rajouter l’identifiant @eqs. Soit à travers
une commande inline ou bien au moyen de la fonction anonyme.
Ce système d’équations différentielles est résolu sur l’intervalle [ti ; tf], avec les conditions initiales
yinit= [y(ti) ; y(tf)].
L’argument d’entrée opts, de type srtucture, compte les options d’optimisation indiquées dans odeset, sa
syntaxe est donnée par : opts = odeset(’Property1’, value1, ’Property2’, value2, ...).
Ainsi, chaque propriété est suivie de sa valeur. À titre illustratif, la propriété (’Stats’, ’on’, ...) affiche, à la
fin de l’exécution, des statistiques relatives au calcul effectué.
Pour plus d’informations sur les paramètres d’optimisation, taper help odeset.
A.AZZAYANI
Résolution numérique d’équations différentielles
Introduction Exercice 4
Calculs élémentaires
1. Résoudre symboliquement et numériquement au moyen du solveur ode23, l’équation différentielle du
Graphiques 2D et 3D
Résolution numérique
d’équations
y "(t ) (1 y 2 ) y ' y
y (0) 1 , y'(0)=0
2. Afficher sur la même figure, la solution numérique pour différentes valeurs de 𝛼. Il en est de même pour
les fonctions dérivées. Avec, le paramètre 𝛼 qui prend ses valeurs de 1.5 à 4 par pas de 0.5.
A.AZZAYANI
Résolution numérique d’équations différentielles
Introduction %exercice 4
Calculs élémentaires %solution analytique
Graphiques 2D et 3D syms t
Recherche de zéro d’une ySym=dsolve('D2y+3*y=4*sin(t)+exp(-t)','y(0)=1','Dy(0)=1','t’)
fonction %Solution numerique
Résolution numérique
a=0; b=10; n=200; h=(b-a)/n; tn=a:h:b; y=[1;1];
d’équations
eqs=@(tn,y)[y(2);-3*y(1)+4*sin(tn)+exp(-tn)];
différentielles
opts=odeset('Stats','on','RelTol',1e-3);
[tn,ysol]=ode23(eqs,[tn(1);tn(end)],y , opts);
plot(tn,ysol(:,1),'o-','LineWidth',1);
hold on ;
plot(tn,double(subs(ySym,t,tn)),'o-r','LineWidth',1)
xlabel('t','FontSize',12);
ylabel('y(t)','FontSize',12);
ih1=legend('SOLUTION NUMERIQUE','SOLUTION ANALYTIQUE');
set(ih1,'Interpreter','none','Location','NorthWest','Box','off','Color','
none')
A.AZZAYANI
Résolution numérique d’équations différentielles
Introduction %exercice 5
Calculs élémentaires
clc;
Graphiques 2D et 3D
clear all;
close all;
Recherche de zéro d’une
a=1;b=25;n=100;h=(b-a)/n;t=a:h:b; y=[1;0];
fonction
alpha=[1.5;2.0;2.50;3.0;3.5;4.0];
Résolution numérique
col={'o-k','o-m','-co','o-g','o-','o-r'};
d’équations for ik=1:numel(alpha)
différentielles eqs=@(t,y)[y(2);alpha(ik)*(1-y(1).^2)*y(2)-y(1)];
opts=odeset('Stats','on','RelTol',1e-3);
[t,ySol]=ode45(eqs,[t(1);t(end)],y, opts);
figure(1);
plot(t,ySol(:,1),col{ik});
hold on;
xlabel('t','FontSize',12);
ylabel('y(t)','FontSize',12)
figure(2);plot(t,ySol(:,2),col{ik});
hold on;
xlabel('t','FontSize',12);
ylabel('y^{’’}(t)','FontSize',12)
A.AZZAYANI end
Introduction
Calculs élémentaires
MERCI POUR
Graphiques 2D et 3D
VOTRE ATTENTION
fonction
Résolution numérique
d’équations différentielles
Fin
A.AZZAYANI