Exercices d'Analyse Numérique et Optimisation
Exercices d'Analyse Numérique et Optimisation
– ii –
Table des matières
Formulaire Matlab 1
– iii –
Formulaire Matlab
Aide x=-1:0.05:1;
y1=exp(x);
– help fonction : Fournit des détails sur une fonction spé-
y2=exp(-x);
cifique.
plot(x,y1,’+-r’,x,y2,’:b’)
– helpwin : Ouvre une fenêtre avec des fonctions triées par
thème. – plot(x, y) : Crée un graphique en 2D
– helpdesk : Aide au format HTML avec exemples et algo- – figure : Ouverture d’une nouvelle fenêtre graphique
rithmes. – clf : Efface la figure courante,
– lookfor mot_clé : Liste les fonctions liées à un mot clé. – close all : Fermeture de toute les fenêtres graphiques,
– doc nom_fonction : Ouvre la documentation pour une – scatter(x, y) : Crée un nuage de points
fonction. – bar(x, y) : Crée un graphique à barres
– hist(data) : Crée un histogramme
– pie(data) : Crée un graphique en secteurs
Constantes Numériques
– subplot(rows, cols, index) : Crée un tracé de plu-
– i, j : Nombre complexe (i 2 = j 2 = −1) sieurs graphiques
– pi : Valeur de π – axis : Contrôle des axes
– eps : Précision relative en virgule flottante – xlabel(’texte’) : Ajoute une étiquette à l’axe des abs-
– realmin : Plus petit réel strictement positif cisses
– realmax : Plus grand réel codable – ylabel(’texte’) : Ajoute une étiquette à l’axe des ordon-
– Inf : Infinity (par exemple, résultat de 1/0) nées
– NaN : Not a Number (résultat de formes indéterminées – title(’texte’) : Ajoute un titre au graphique
comme 0/0, Inf − Inf, etc.) – legend(’legende1’, ’legende2’) : Ajoute une légende
au graphique
– grid on/off : Active/désactive la grille du graphique
Manipulation de Fichiers et Espace Mémoire
– hold on/off : Active/désactive la superposition de gra-
– cd chemin : Change le répertoire courant phiques
– pwd : Affiche le répertoire courant – saveas(fig, ’nom_fichier’, ’format’) : Sauvegarde
– ls ou dir : Liste les fichiers du répertoire courant un graphique dans un fichier
– delete fichier : Supprime un fichier – plot3 : Courbe en 3D
– mkdir nouveau_répertoire : Crée un nouveau réper- – polar : Courbe en polaire
toire – help matlab\graph2d : Liste des fonctions sur les graphes
– who, whos : Liste les variables en mémoire 2D
– clear variable : Supprime une variable et libère de la
mémoire Exemple de surface : [X,Y]=meshgrid(-8:0.5:8);
– clear : Efface toutes les variables Z=X.ˆ2+Y.ˆ2;
mesh(X,Y,−Z)
Commandes de Base – mesh : Maillage.
– surf : Surface colorée.
– clc : Efface la fenêtre de commande
– surfc : Idem avec contour dans le plan z = 0.
– clear : Efface les variables de l’espace de travail
– colorbar : Échelle des couleurs.
– load nom_fichier : Charge des données à partir d’un fi-
– colormap : Palette de couleurs.
chier
– shading interp : Interpolation (surface plus lisse).
– save nom_fichier : Sauvegarde les variables dans un fi-
– help matlab\graph3d : Liste des fonctions sur les graphes
chier
3D.
– disp(expression) : Affiche une expression dans la fenêtre
de commande Il existe aussi de nombreux autres types de graphiques, voir
– fprintf(format, variables) : Affiche du texte formaté help matlab\specgraph.
avec des variables
Traitement de Données
Création de Graphiques
– load nom_fichier : Charge des données à partir d’un fi-
Exemple de courbe : chier
–1–
Formulaire Matlab
– save nom_fichier : Sauvegarde les variables dans un fi- – Indexation logique : cet outil est très puissant, il permet de
chier désigner des éléments d’un tableau à partir d’un autre ta-
– length(data) : Retourne la longueur d’un vecteur bleau logique de même taille : si A et B sont deux matrices
– size(data) : Retourne la taille d’une matrice de même taille, A(B>0 désigne les éléments a i j de A tels
– mean(data) : Calcule la moyenne des éléments que b i j soit positif.
– std(data) : Calcule l’écart-type des éléments A(B>0) = 0 remplace ces éléments par zéro.
– max(data) : Trouve la valeur maximale V(∼ isfinite (V)) = [] supprime les éléments non fi-
– min(data) : Trouve la valeur minimale nis du vecteur V .
– sum(data) : Calcule la somme des éléments
; Opérations sur les lignes et les colonnes
Opérateurs Relationnels et Logiques – A(i, :) = [] : Suppression de la iième ligne de A.
– A = [A, C] : Ajout de la colonne C à droite de A.
– > : Supérieur – size(A) : Taille de A sous forme d’un vecteur [n m].
– >= : Supérieur ou égal – length(V) : Longueur d’un vecteur ligne ou colonne.
– < : Inférieur – A(:) : Transformation de A en un vecteur obtenu en juxta-
– <= : Inférieur ou égal posant ses colonnes.
– == : Égal – reshape(A, k, l) : Transforme une matrice de taille n ×
– ∼= : Différent
m en matrice de taille k × l .
– & : ET logique – triu, tril : Partie triangulaire supérieure, inférieure.
– | : OU logique
– ∼ : NON logique
– isinf(x) : Vrai si x est Inf ; Opérations sur les matrices
– isnan(x) : Vrai si x est NaN – A’ : Matrice adjointe.
– isfinite(x) : Faux si x est Inf ou NaN – A.’ : Matrice transposée.
– isempty(matrice) : Vrai pour les matrices vides – * : Multiplication matricielle.
– isprime(n) : Vrai pour les entiers premiers – ˆ : Puissance matricielle.
– isequal(A, B) : Vrai si les matrices A et B sont égales – expm : Exponentielle de matrice.
– any(V>0) : Vrai si au moins un élément de V est positif – x = A\y : Résolution du système linéaire Ax = y. NE PAS
– all(V>0) : Vrai si tous les éléments de V sont positifs utiliser l’inverse !
– logical(tableau) : Convertit un tableau numérique en
tableau logique
; Opérations sur les tableaux Les matrices peuvent
aussi être considérées comme un tableau de nombre et il
Matrices existe une liste d’opérations terme à terme :
– .* : Multiplication terme à terme.
; Définition d’une matrice - d’un vecteur
– ./ : Division terme à terme.
– A = [3 5 6; 1 2 8; 7 4 6] : Définition éléments par – .ˆ : Puissance terme à terme.
éléments. – exp : Exponentielle terme à terme.
– zeros(n, m) : Matrice nulle de taille n × m.
– eye(n) : Matrice identité de taille n.
; Matrices creuses Il existe une méthode spécifique
– ones(n, m) : Matrice de 1 de taille n × m.
pour le stockage des matrices contenant beaucoup d’élé-
– [A, B; C, D] : Matrice définie par blocs.
ments nuls (dites creuses), qui permet de gagner beaucoup
– repmat(A, n, m) : Matrice possédant n × m blocs A.
en temps de calcul et place mémoire ; voir help matlab
– diag(V, k) : Matrice carrée dont la kième diagonale est
sparfun.
égale au vecteur V .
– X = Xmin:pas:Xmax : Vecteur ligne à pas constant.
Chaîne de caractères
; Les indices Une chaîne de caractères se forme en insérant du texte
entre deux quotes : texte =’Ceci est du texte’. On ob-
– A(i,j) : Élément de ligne i et de colonne j .
tient la concaténation de deux chaînes de caractères à l’aide
– A(k) : Kième élément de A en les comptant par colonne.
de la fonction strcat 1
– sub2ind, ind2sub : Passage de l’indexation classique à
l’indexation par colonnes et réciproquement. – int2str(i) : Conversion d’un entier i en texte.
– A(:,j) : Jième colonne de A. – num2str(x, n) : Conversion d’un réel x en texte avec n
– A(:,[j1, j2]) : Colonnes j 1 et j 2 de A. chiffres.
– A(i,:) : Iième ligne de A. – disp(texte) : Affiche la chaîne de caractères texte dans
– A(i*ones(1, p), :) : p fois la i -ème ligne de A. l’espace de travail.
– A(i1:i2,j1:j2) : Bloc (a i j ) avec i 1 ≤ i ≤ i 2 et j 1 ≤ j ≤ j 2. – error(texte) : Affiche la chaîne texte et stoppe l’exécution
– V(end-3:end) : 4 derniers éléments du vecteur V . de la fonction en cours.
–2–
– while : Boucle répétée tant qu’une condition est vraie.
Programmation – end : Fin d’une boucle ou d’une instruction conditionnelle.
– break : Sortie prématurée d’une boucle.
– edit : lance l’éditeur de texte Matlab
– [Ctrl]+C : pour stopper l’exécution d’un programme, Attention : Il est bien plus rapide d’utiliser une écriture ma-
tricielle ou vectorielle plutôt que des boucles. Quand les boucles
Exemple : Fichier 2 cartesien.m sont inévitables, penser à allouer dès le début de l’espace mé-
function [x,y]=cartesien(r,theta); moire aux variables matricielles pour éviter la ré-allocation.
% Passage en coordonnées cartésiennes
x=r.*cos(theta); ; Fonctions utiles
y=r.*sin(theta);
Attention : L’un des avantages de Matlab est que la plupart de – tic, toc, cputime : Mesure du temps machine utilisé.
ses fonctions peuvent opérer directement sur les tableaux, il est – pause : Pause dans l’exécution d’une fonction.
fortement conseillé - quand c’est possible - de faire de même – input : Demande à l’utilisateur de rentrer la valeur d’une
pour ses propres fonctions (d’où l’emploi du .* plutôt que du variable.
*). – feval : Évalue une fonction dont le nom est une variable
L’appel de cette fonction est alors : d’entrée.
»[x0,y0]=cartesien(2,pi/4) – global : Définition de variable globale.
– nargin : Nombre de variables d’entrée lors de l’appel d’une
fonction.
; Boucles et tests – profile : Permet une étude fine de l’utilisation du temps
– if, elseif, else : Instructions conditionnelles. CPU et donc l’amélioration de ses fonctions.
– switch : Idem utilisé dans les situations où il y a beaucoup – flops : Compte le nombre d’opérations élémentaires effec-
de cas différents. tuées.
– for : Boucle répétée un nombre connu de fois. – ... : Pour couper les lignes trop longues.
L’un des avantages de Matlab est que les principales fonctions mathématiques et d’analyse numérique sont déjà program-
mées, il est donc impossible d’en donner une liste exhaustive ici.
help matlab/elfun : liste des fonctions usuelles,
help matlab/elmat : liste des fonctions matricielles élémentaires,
help matlab/matfun : liste des fonctions d’analyse linéaire,
help matlab/datafun : liste des fonctions d’analyse de données et de transformée de Fourier,
help matlab/polyfun : liste des fonctions polynomiales et d’interpolation,
help matlab/funfun : liste des fonctions de recherche de zéros et de minimum, de résolution d’équations différentielles
et d’intégration. . .
–3–
Formulaire Matlab
–4–
Séance d’initiation au logiciel Matlab
2. Aide
(i) Que fait la fonction Matlab fminbnd ?
(ii) Comment résoudre une équation différentielle à l’aide de Matlab ?
(iii) Comment calculer numériquement une intégrale avec Matlab ? Une intégrale double ?
3. Les matrices
8 1 6
Modifier l’aspect de la figure pour que l’axe des abscisses et l’axe des ordonnées aient la
même échelle.
–5–
Séance d’initiation au logiciel Matlab
Règles importantes à observer pour la question à venir. Lorsque vous créez des fonctions Matlab
(commande edit dans la fenêtre principale), assurez-vous de respecter les règles suivantes :
• Spécifiez le bon chemin d’accès au dossier contenant vos fonctions.
• Chaque fichier *.m doit contenir une seule fonction.
• Le nom du fichier doit correspondre exactement au nom de la fonction. Par exemple, si votre
fonction s’appelle toto, le fichier doit être nommé toto.m.
5. Programmation
(i) Écrire une fonction triangle.m qui, étant donné trois nombres a, b et c, renvoie le périmètre
et l’aire du triangle dont la longueur des cotés est égale à a, b et c. Quelle condition doivent
satisfaire a, b, c ?
Indication : on rappelle que si P est le périmètre du triangle, alors sa surface est donné par :
1p
S= P (P − 2a)(P − 2b)(P − 2c). (formule de Héron)
4
(ii) Modifier cette fonction en une fonction triangle2.m pour la rendre "vectorielle", c’est-à-
dire qu’elle puisse prendre non pas trois réels en entrée mais trois vecteurs de réels de même
dimension A, B et C et calculer l’aire et le périmètre de tous les triangles A(i )B (i )C (i ).
(iii) Que calcule Matlab avec les deux fonctions suivantes ?
1 function [ a1 , t1 ]= s u i t e 1 (n)
2 tic ; 1 function [ a2 , t2 ]= s u i t e 2 (n)
3 a=zeros ( 1 ,n) ; a ( 1 ) =1; a ( 2 ) =1; 2 tic ;
4 f o r k =3:n 3 A=[1 1;1 0 ] ;
5 a ( k ) =a ( k −1)+a ( k −2) ; 4 X=A^(n−2) * [ 1 ; 1 ] ;
6 end 5 a2=X( 1 ) ;
7 a1=a (n) ; 6 t2=toc ;
8 t1=toc ;
6. Fonction Matlab
(i) (fonction fminsearch) Quel est le minimum de la fonction p : x 7→ 21 x 2 − 14 ln x ?
(ii) (fonction quad) Donner une valeur approchée de l’intégrale suivante :
1 e −x
Z
I= . d x.
0 1 + x2
£π π
¤
(iii) (fonction fzero) Cherchez la solution de l’équation suivante dans 4,2 :
cos x = e −x .
–6–
I.
Résolution d’équations et systèmes non linéaires
Pour résoudre numériquement l’équation x − 0.2 sin x − 0.5 = 0, on écrira dans la fenêtre de commande :
Méthode de la sécante
::::::::::::::::::::::::::
–7–
CHAPITRE I. RÉSOLUTION D’ÉQUATIONS ET SYSTÈMES NON LINÉAIRES
Appliquer des méthodes d’accélération de la convergence pour rendre ces algorithmes conver-
gents quand ils ne convergent pas ou plus rapides quand ils convergent.
Ex. I.2 Pour les fonctions suivantes, trouver un algorithme de point fixe, autre que la méthode de Newton,
qui converge vers le plus petit zéro positif de
(i) x 3 − x − 1 = 0
(ii) x − tan x = 0
(iii) e −x − cos x = 0.
Ex. I.3 Trouver, grâce à la fonction roots de Matlab les racines des polynômes
f (x n )
x n+1 = x n − α (I.1)
f 0 (x n )
avec un α à déterminer.
Ex. I.5 (En lien avec la section I.2.2) Vérifier que la suite de matrices B i définies par
(δF i − B i .δX i ) δX i
N
B i +1 = B i + (I.2)
δX i · δX i
–8–
I.3. TD1 : RECHERCHE DE ZÉROS DE FONCTIONS
x 3 − 3x 2 + x + 2 = 0.
(i) t Montrer que x = 2 est un point fixe de ces méthodes puis étudier la convergence de chaque
méthode.
(ii) t Si la méthode est convergente, déterminer l’ordre de convergence.
(iii) m Retrouver numériquement l’ordre de convergence de la méthode.
TD I.2 Recherche d’un zéro d’une fonction d’une variable. On souhaite résoudre l’équation non linéaire
f (x) = 0 sur ]0; +∞], où f est définie par
TD I.3 Recherche d’un zéro d’une fonction de plusieurs variables. Soit F : R3 → R3 la fonction suivante :
–9–
CHAPITRE I. RÉSOLUTION D’ÉQUATIONS ET SYSTÈMES NON LINÉAIRES
– 10 –
II.
Optimisation sans contrainte et application à la
méthode des moindres carrés
pour tout (x,y) ∈ IR2 . Que peut-on en déduire pour le problème (Pλ ) ?
(iii) Caractériser les solutions dans le cas λ > 0. On démontrera de prime abord que toute solution
est nécessairement de la forme (x,x).
Ex. II.5 Soient n et N deux entiers non nuls tels que n < N . On considère le problème de la régression
polynomiale au sens des moindres carrés. Étant donné un nuage de points (x i ,y i )1≤i ≤N dont tous
les x i sont deux à deux distincts, on recherche un polynôme p n de degré inférieur ou égal à n qui
l’approche au mieux au sens suivant :
N
|y i − p(x i )|2 .
X
inf F (p) où F (p) =
p∈IRn [X ] i =1
1. autrement dit qu’il existe ε0 > 0 tel que f (x 0 + εd ) < f (x 0 ) pour tout ε ∈]0,ε0 ]
– 11 –
CHAPITRE II. OPTIMISATION SANS CONTRAINTE ET APPLICATION À LA MÉTHODE DES MOINDRES
CARRÉS
où V ∈ MN ,n+1 (IR) et y ∈ IRN seront précisés. Montrer alors que le problème résultant possède
une solution.
(ii) Montrer que F̂ : a 7→ kV a − yk22 est strictement convexe. Que peut-on en déduire ?
(iii) Les conditions d’optimalité associées au problème (II.1) sont-elles nécessaires ? suffisantes ?
Résoudre le problème (II.1).
– 12 –
II.2. TD2 : OPTIMISATION EN DIMENSION UN, MOINDRES CARRÉS
Partie corrigée
À l’aide d’une analyse théorique, esquisser le graphe de la fonction φ sur IR, puis résoudre le
problème (P).
Indication : on demande de justifier le tracé et de le discuter en fonction des choix de matrice A et
vecteur x 0 .
(ii) m On souhaite utiliser la méthode de dichotomie pour résoudre le problème (P) avec la
fonction J définie par J (x 1 ,x 2 ) = x 14 + x 24 − 3x 12 − x 1 + x 2 à partir du point X 0 = [1,1].
(a) Représenter la fonction φ : [0,1/2] 3 t 7→ J (X 0 − t ∇J (X 0 )). Que constate-t-on ?
(b) Implémenter la méthode de dichotomie sur [0,1/2] et déterminer le minimum de ϕ sur
cet intervalle.
Piste d’étude :
• m on pourra comparer l’efficacité des deux méthodes numériques (robustesse à l’initialisa-
tion, nombre d’itérations).
p
• t démontrer que la solution optimale est obtenue pour x = 6 − 6/ 55 ' 5.19.
2. On rappelle que S n+ (IR) désigne l’ensemble des matrices M semi-définie positives, c’est-à-dire telles que 〈M x,x〉 ≥ 0
pour tout x ∈ IRn .
– 13 –
CHAPITRE II. OPTIMISATION SANS CONTRAINTE ET APPLICATION À LA MÉTHODE DES MOINDRES
CARRÉS
TD II.3 L’énergie rayonnante d’un corps noir dans l’intervalle d’émission [λ, λ + d λ], par unité de surface
et de temps, est appelée émittance monochromatique maximale du corps noir et est notée M (λ).
Sa valeur, exprimée en W b/m 2 est donnée par la loi de Planck
2πhC 02 1
M (λ) = . .
n 2 λ5 exp hC 0 − 1
³ ´
nkT λ
(i) m Tracer sur un même graphique la fonction λ 7→ M (λ) pour les valeurs suivantes de T (K) :
300, 350, 400, 450, 500, 550, 600, 650, 700, 750, 800. Associer chaque courbe tracée à la valeur
de T correspondante. On prendra λ ∈ [10−7 ,2.10−5 ].
Fonctions Matlab utiles : hold on, hold off.
(ii) m On souhaite trouver la valeur λ∗ de λ qui maximise l’émittance monochromatique pour
une température de surface T donnée. À quelle contrainte est-on soumis si l’on souhaite
utiliser la méthode de la section dorée ?
Programmer alors cette méthode pour déterminer λ∗ suivant les différentes valeurs de T .
(iii) m Vérifier les lois de Wien :
– 14 –
III.
Interpolation et approximation polynomiale
Ex. III.3 Le tableau suivant donne les valeurs d’une fonction f en trois points.
x f (x)
p
x 1 = 17 − 4 0.3771784
p
x 2 = 10 − 3 0.4880117
p
x3 = 5 − 2 0.6754903
x 2 +x 3
(i) Déterminer une valeur approchée de f en x 0 = 2 , par interpolation en x 2 et x 3 , puis par
interpolation en x 1 , x 2 et x 3 .
(ii) Donner dans les deux cas un majorant de l’erreur en fonction des dérivées de f .
(iii) On constate que les deux fonctions f 1 (x) = sin πx et f 2 (x) = sin(π/x) vérifient toutes deux le
tableau de valeurs ci-dessus. Calculer f 1 (x 0 ) et f 2 (x 0 ). Expliquer et vérifier la cohérence avec
les résultats numériques des questions précédentes.
Ex. III.4 On donne les points (0,2) ; (1,1) ; (2, 32 ) ; (3, 12 ) ; (4, 13 ); (10,0.1).
a b
Chercher des fonctions de la forme x 7→ x+ 12
+ x+1 approchant au mieux ces points au sens des
moindres carrés.
– 15 –
CHAPITRE III. INTERPOLATION ET APPROXIMATION POLYNOMIALE
TD III.1 On souhaite déterminer le polynôme Q 2 de degré 2 approchant le mieux la fonction f définie par
p
x
f (x) = e −x
³R ´1/2
20
au sens des moindres carrés pour la norme k · k définie par k f k = 1 f (x)2 d x .
TD III.2 (i) m Ecrire deux fonctions qui, étant donné un intervalle [a,b], et un entier n génèrent respec-
tivement :
• les n + 1 points équidistants : x i = a + b−a
n (i − 1) avec 1 ≤ i ≤ n + 1.
³ ´
(2i −1)π
• les n + 1 points de Chebyshev : x i = a+b2 + b−a
2 cos 2n+2 avec 1 ≤ i ≤ n + 1.
(ii) m Soient
¡ ¢
• X = x 1 x 2 · · · x n un vecteur contenant n points d’interpolation ;
¡ ¢
• Y = f (x 1 ) f (x 2 ) · · · f (x n ) , un vecteur contenant les valeurs d’une fonction f en ces
points.
On veut calculer le polynôme d’interpolation de f en les points x i à l’aide de la formule de
Newton qu’on écrit ici aux points x n , x n−1 , . . ., x 1 soit
n
X n
Y
P n (x) = f [x i ,...,x n ] (x − x k ).
i =1 k=i +1
Écrire une fonction Matlab qui calcule P n (x) en utilisant l’algorithme suivant
pour k ∈ 1, n − 1
· pour i ∈ 1,n − k
on obtient ici petit à petit les
différences divisées d i = f [x i ,...,x n ] ←−
d i := (d i +1 − d i )/(x i +k − x i )
p := d 1
·
algorithme de Hörner pour
pour i ∈ 2, n
évaluer le polynôme au point x ←− p := d i + (x − x i ) × p
P n (x) := p.
1
(iii) m Soit f la fonction définie sur [−5,5] par f (x) = 1+x 2
.
Tracer sur un même graphique les graphes de f , du polynôme d’interpolation associé à n + 1
points équidistants et du polynôme d’interpolation associé à n + 1 points de Chebyshev. Que
constate-t-on lorsque n varie ?
– 16 –
III.2. TD3 : INTERPOLATION ET MOINDRES CARRÉS
TD III.3 Le tableau suivant donne les résultats de mesure de la viscosité µ de l’éthylène pour différentes
températures (exprimées en degrés Fahrenheit) :
– 17 –
CHAPITRE III. INTERPOLATION ET APPROXIMATION POLYNOMIALE
– 18 –
IV.
Dérivation et intégration numérique
Déterminer les premiers polynômes orthogonaux et leurs racines et mettre en œuvre la méthode
de Gauss.
Ex. IV.4 Soit K le carré unité de R2 . Imaginer une formule d’intégration numérique sur K qui soit exacte
pour les polynômes de degré inférieur ou égal à 3 en x et en y.
Ex. IV.5 Déterminer les 4 premiers polynômes orthogonaux pour le produit scalaire
Z +∞
( f ,g ) 7→ f (t )g (t )e −t d t .
1
R +∞
En déduire une formule d’intégration numérique pour calculer des intégrales du type 1 f (t )e −t d t
qui soit exacte pour les polynômes de degré inférieur ou égal à 7. Tester cette formule avec f (t ) =
t 5 , f (t ) = t 6 et f (t ) = e t /2 .
Z +∞
3
Ex. IV.6 Calculer e −t d t avec 4 décimales exactes.
0.5
– 19 –
CHAPITRE IV. DÉRIVATION ET INTÉGRATION NUMÉRIQUE
R1
TD IV.1 On propose d’approcher l’intégrale I ( f ) = 0 f (t ) d t par la formule J ( f ) = f (0) + 21 f 0 (c) où c ∈]0,1[
est donné.
(i) t Montrer que J est exacte pour les polynômes de degré inférieur ou égal à 1.
(ii) t Déterminer c pour que l’approximation J ( f ) soit exacte pour les polynômes de degré au
plus égal à deux. Quel est l’ordre de la méthode ?
(iii) m Comparer cette méthode avec la méthode des rectangles à 50 points pour le calcul de
I (exp). Quels sont ses avantages et inconvénients ?
R1
TD IV.2 On veut calculer l’intégrale 0 cos(x 2 ) d x avec une précision de 10−8 .
(i) t Déterminer le nombre de points nécessaires pour l’évaluer avec cette précision par la mé-
thode des trapèzes et par la méthode de Simpson.
(ii) m Écrire une fonction Matlab pour faire ce calcul avec n points, puis la tester avec les valeurs
de n trouvées précedemment. Vérifier avec la fonction integral de Matlab.
TD IV.3 Soit l’équation différentielle, avec conditions aux bords de Dirichlet homogènes, suivante :
k
xk = = kh pour k ∈ 0, n + 1.
n +1
On note y k , p k , q k et f k les valeurs respectives des fonctions y, p, q et f au point x k , avec k ∈
0, n + 1. On approche alors les dérivées premières et secondes de y par les formules centrées :
– 20 –
V.
Équations différentielles - Aspects théoriques
x 00 = 1 − 3x 2
½
.
x(0) = x 0 (0) = 0.
(i) Expliquer soigneusement pourquoi le système ci-dessus possède une unique solution maxi-
male.
(ii) Démontrer que
2
∀t ∈ I , θ 0 (t ) = 2θ(t )(1 − θ 2 (t )).
z 00 (t ) + q(t )z(t ) = 0,
½
t >0
z(0) = 1, z 0 (0) = 0
y 0 (t ) = e −t y(t )
½
y(0) = 0 .
– 21 –
CHAPITRE V. ÉQUATIONS DIFFÉRENTIELLES - I
0
; Le système est codé sous forme d’un fichier qui étant donné y et t renvoie y (t ) ; créons ici le fichier
essai.m suivant :
1 function dy = e s s a i ( t , y ) ;
2 dy = [ y ( 2 ) ; t * y ( 1 ) −2 * y ( 2 ) ] ;
Dans le cas où l’équation est vectorielle, la dérivée doit obligatoirement être un vecteur colonne et
non un vecteur ligne. Dans le cas des équations à coefficients constants, il est nécessaire de taper
la ligne function dy = essai(t,y) même si d y ne dépend pas du temps t .
; On peut ensuite utiliser un solveur Matlab avec la commande :
1 [ t , y ]= ode23 ( ’ e s s a i ’ , [ t i n i t i a l , t f i n a l ] , y0 )
où tinitial et tfinal sont les instants entre lesquels on cherche à approcher la solution et où y0
est la condition initiale.
Les algorithmes sont à pas adaptatifs le vecteur t contient les instants pour lesquels une valeur appro-
chée de la solution y a été calculée ; si l’on souhaite connaitre la solution à des instants bien particulier,
par exemple pour un pas de temps régulier, il suffit de remplacer le vecteur [tinitial, tfinal] par le
vecteur temps souhaité.
; Entraînez-vous à utiliser ces commandes pour résoudre des équations différentielles. On pourra pourra
reproduire l’exemple ci-dessus puis considérer par exemple :
Notez que l’on sait résoudre explicitement l’équation sur z. Il sera utilise de comparer les soluitons théo-
riques et numériques.
3. Une équation différentielle raide est une équation différentielle dont la sensibilité aux paramètres va rendre difficile la
résolution par des méthodes numériques explicites.
– 22 –
VI.
Équations différentielles - Aspects numériques
(i) Que doit on choisir comme valeurs pour les coefficients a, c, b 1 , b 2 si on souhaite que ce
schéma numérique soit d’ordre deux ?
(ii) Dans ce cas, retrouve-t-on nécessairement la méthode de Runge-Kutta d’ordre deux (VI.30) ?
Ex. VI.4 Soit β un nombre réel strictement positif donné. On considère l’équation différentielle
y 0 (t ) = −βy(t )
½
t >0
(VI.1)
y(0) = y 0
où y 0 est également donné. Soit h > 0 le pas (fixe) de la subdivision, pour les méthodes de Runge-
Kutta 2 (VI.30) et Runge-Kutta 4 (VI.32). On note y n la valeur approchée de y(nh).
(i) Quelle est la solution exacte de (VI.1) ? Est-il vrai que limt →+∞ y(t ) = 0 ?
(ii) Pour chacune des méthodes, à quelle condition sur h a-t-on limn→+∞ y n = 0 ?
Ex. VI.5 Un exemple de méthode à deux pas. [D’après un exercice posé par Alexandre Ern, ENPC] On consid‘ere
la méthode à deux pas suivante dans le cas d’un champ de vecteurs autonome f et d’un pas de
temps h > 0 fixé :
y n+1 = y n−1 + 2h f (y n ) (méthode de Nyström)
– 23 –
CHAPITRE VI. ÉQUATIONS DIFFÉRENTIELLES - II
– 24 –
VI.2. TD6 : RÉSOLUTION NUMÉRIQUE D’ÉQUATIONS DIFFÉRENTIELLES
y 0 (t ) = 3y(t ) − 3t
½
y(0) = 13
y 0 (t ) = exp y(t )
½ ¡ ¢
y(0) = y 0 = 1
(i) m Résoudre de façon approchée cette équation à l’aide d’un solveur Matlab.
Qu’observe-t-on ?
(ii) t Retrouver cette propriété en résolvant théoriquement l’équation différentielle.
On se propose de mettre en place les deux méthodes d’Euler à pas fixe pour proposer une valeur
approchée du temps maximun d’existence.
(iii) m Méthode d’Euler explicite. Programmer la méthode d’Euler explicite à pas constant. Quel
test d’arrêt proposez-vous ? Quelle est, en fonction du pas de temps h, la précision dont on
dispose sur le temps maximum d’existence ?
(iv) m Méthode d’Euler implicite. Programmer maintenant la méthode d’Euler implicite à pas
constant. Vous effectuerez la résolution de l’équation non linéaire, à chaque pas, grâce à la
fonction Matlab fzero.
θ(0) = π4 , θ 0 (0) = 0.
avec les paramètres suivants : g = 9.81 m.s-2 et ` = 1 m. le nombre θ(t ) représente l’angle au temps
t du pendule par rapport à la verticale. On introduit la fonction H : IR2 → IR définie par :
1 g dθ
H (θ,p) = p 2 − cos θ où p= .
2 ` dt
(i) t Démontrer l’existence d’une solution locale à l’EDO considérée, puis démontrer que le
Hamiltonien H est constant le long des trajectoires solutions.
[En utilisant le théorème de majoration a priori V.2.8, on pourrait démontrer l’existence d’une solution
– 25 –
CHAPITRE VI. ÉQUATIONS DIFFÉRENTIELLES - II
m Tracer alors des lignes de niveau de H . Quel est le lien entre ces lignes de niveau et les
trajectoires solutions ?
∂H ∂H
µ ¶
0 0
(q (t ),p (t )) = (q,p), − (q,p) ,
∂p ∂q
avec H : R2 → R une fonction régulière donnée (appelée Hamiltonien du système), elle s’écrit
∂H n+1 n
q n+1 = q n + h n (q ,p )
∂p
∂H n+1 n
p n+1 = p n − h n (q ,p ).
∂q
– 26 –
VII.
Résolution numérique de systèmes linéaires
1 2 −2
A = 1 1 1 ,
2 2 1
– 27 –
CHAPITRE VII. RÉSOLUTION NUMÉRIQUE DE SYSTÈMES LINÉAIRES
Partie corrigée
TD VII.1 Instabilités.
On considère la matrice de Hilbert H de taille n dont les éléments sont donnés par
1
Hi j = , pour 1 ≤ i , j ≤ n.
i + j −1
Soit x ref le vecteur dont toutes les composantes sont égales à 1 et définissons un vecteur second
membre b = H x ref . On définit x num comme la solution numérique par la méthode de Gauss du
système : H x num = b.
R1
(i) t Exprimer 〈H X ,X 〉 à l’aide d’une intégrale (on pourra remarquer que i + 1j −1 = 0 x i + j −2 d x).
En déduire que la matrice H est définie positive.
(ii) m Tracer l’erreur relative (en norme euclidienne) entre x ref et x num en fonction de n. Que se
passe-t-il ? Comment expliquez-vous ce comportement ?
On pourra calculer le conditionnement de la matrice grâce à la fonction cond de Matlab.
TD VII.2 On souhaite résoudre un système linéaire Ax = b de manière itérative en considérant une méthode
de Jacobi ou de Gauss-Seidel. Notons J et L 1 les matrices respectives d’itérations. Soit A la matrice
donnée par
µ ¶
1 −1
A= .
2 4
dans Ω
½
−∆v = f (x,y)
avec f (x,y) = 13π2 sin(3πx) sin(2πy).
v =0 sur ∂Ω
1
−∆v(x,y) ≈ (4u(x,y) − u(x + h,y) − u(x − h,y) − u(x,y + h) − u(x,y − h))
h2
– 28 –
VII.2. TD7 : RÉSOLUTION DES SYSTÈMES LINÉAIRES
L’inconnue du problème est alors le vecteur u = (u k )1≤k≤n 2 , à n 2 composantes qui sont les valeurs
approchées de v(P k ), la solution aux points P k . On montre en utilisant la technique développée
dans le chapitre IV., que u vérifie le système linéaire suivant :
Au = h 2 b
avec h > 0, le pas du maillage, A la matrice de discrétisation, qui s’écrit par blocs :
Dn − Idn 0
4 −1 0
− Idn Dn − Idn −1 4 −1
A= .. .. ..
, avec Dn
= .. .. ..
,
. . . . . .
− Idn Dn − Idn −1 4 −1
−1 4
0 − Idn Dn
– 29 –
CHAPITRE VII. RÉSOLUTION NUMÉRIQUE DE SYSTÈMES LINÉAIRES
– 30 –
VIII.
Optimisation sous contraintes et optimisation
numérique sans contrainte
Question bonus. Saurez-vous démontrer l’existence d’un parallélépipède optimal ? Si vous trouvez
un joli argument, n’hésitez pas à le rédiger au propre et me l’envoyer. Le premier étudiant à fournir
un argument convaincant obtiendra un bonus de points pour le test.
– 31 –
CHAPITRE VIII. OPTIMISATION SOUS CONTRAINTES ET OPTIMISATION NUMÉRIQUE SANS
CONTRAINTE
E = {(x,y) ∈ R2 , x 2 ≤ y, y ≤ x}.
1
f ε (x) = (x + 1)2 + (y − 2)2 + (y − x + 1)2 .
ε
(i) t Justifier que la fonction f ε possède un minimum sur IR2 et que le minimiseur est unique.
(ii) m En utilisant la méthode du gradient à pas fixe, minimiser f ε sur IR2 pour ε ∈ {0.1, 0.01, 0.001}.
On choisira un pas ρ = 10−4 . Tracer dans le carré [−5,5]2 :
• les lignes de niveau de f ε pour ε ∈ {0.1,0.01,0.001},
• le champ de vecteur du gradient,
• les itérés de la méthode du gradient.
Que remarque-t-on ?
Fonctions Matlab utiles : quiver, contour
TD VIII.3 Dans cet exercice, on cherche à déterminer numériquement la plus courte distance entre un point
x 0 ∈ IRn et un hyperplan (H ) d’équation Ax = b, où A est un vecteur ligne non nul et b, un vecteur
colonne de taille n.
(i) t Justifier que ce problème peut s’écrire comme un problème de programmation quadra-
tique :
1
inf (x − x 0 )> (x − x 0 ).
Ax=b 2
– 32 –
IX.
Algorithmes d’optimisation en toute dimension
(i) Démontrer que pour tout X ∈ IRn , 〈AX ,X 〉 ≥ λ1 kX k2 , où λ1 est la plus petit valeur propre de
A. En déduire que le problème infIRn J possède une unique solution X ∗ .
Ex. IX.2 On souhaite minimiser la fonction J définie sur IR2 par J (x,y) = x 2 − 2x − y sur l’ensemble K défini
par
K = {(x,y) ∈ IR2 , x + y ≤ 1, x y ≥ 0}.
(i) Dessiner l’ensemble K . Montrer l’existence d’un minimum pour J sur K .
(ii) Faire tout d’abord une résolution graphique en cherchant à tracer les lignes de niveau J (x,y) =
t pour différentes valeurs de t .
(iii) Résoudre le problème en écrivant les conditions de Kuhn-Tucker.
(iv) Écrire et faire tourner un algorithme de gradient à pas fixe avec projection.
Ex. IX.3 Soit J : IRn → IR une fonction continue, strictement convexe et coercive. Soit ϕ : IRn → IR une fonc-
tion convexe et C l’ensemble de contraintes défini par C = {X ∈ IRn , ϕ(X ) ≤ 0}. On rappelle qu’une
fonction convexe sur un ouvert de IRN est nécessairement continue.
(i) Montrer que C est convexe et que J possède un unique minimum sur C , on le notera X ∗ .
On suppose maintenant que C est borné et on note C˚ son intérieur défini par C˚ = {X ∈
IRn |ϕ(X ) < 0}. Pour ε > 0 on introduit la fonctionnelle pénalisée J ε définie par
ε
J ε (X ) = J (X ) − X ∈ C˚ .
ϕ(X )
– 33 –
CHAPITRE IX. ALGORITHMES D’OPTIMISATION EN TOUTE DIMENSION
TD IX.1 m Écrire une méthode de pénalisation pour résoudre le problème de l’exercice Ex. IX.2 .
Rechercher le minimum grâce à la fonction Matlab fminsearch appliquée à cet algorithme de
pénalisation. Tester également la fonction Matlab fmincon.
TD IX.2 Soit n ∈ IN∗ . On considère la matrice A n ∈ Mn (IR) et le vecteur b n ∈ IRn définis par :
4 −2 0 . . . 0
−2 4 −2 .. 1
.
1
An =
.. .. ..
0 . . . 0 et b n = .. .
. .
.
. −2 4 −2
1
0 . . . 0 −2 4
On va noter 〈x,y〉 le produit scalaire euclidien des deux vecteurs x et y. On cherche à minimiser
dans IRn , par différentes méthodes, la fonction :
1
J n : x 7→ 〈A n x,x〉 − 〈b n ,x〉.
2
On introduit donc le problème :
inf J n (x). (P n )
x∈IRn
Remarque : il est important d’exploiter, dans les questions qui suivent, le format creux de la matrice
A afin de diminuer les temps de calcul. On utilisera la fonction Matlab spdiags.
(i) t On considère le cas n = 2. Montrer que J 2 est coercive sur IR2 (c’est à dire J 2 (x) → +∞
quand kxk → +∞) et résoudre le problème (P 2 ) .
(ii) Nous allons étudier deux méthodes de minimisation. Pour chacune de ces études, on de-
mande , lorsque n prend les valeurs 10, 20, 30, 50, 100,
; de tester chacune des deux méthodes
; de comparer à l’aide d’un graphique ou d’un tableau, la rapidité de convergence de cha-
cune de ces méthodes, ainsi que le temps de calcul par Matlab, suivant les différentes
valeurs prises par n.
(a) m La méthode du gradient à pas fixe.
Écrire une fonction Matlab prenant en argument ρ > 0, un pas fixe et x 0 ∈ IRn , un vec-
teur d’initialisation, afin de mettre en œuvre l’algorithme du gradient à pas fixe, puis la
tester sur J n dans chacun des cas ci-dessus. Répondre aux questions initiales. Expliquer
brièvement pourquoi il est important de choisir le pas fixe, ni trop grand, ni trop petit.
(b) m La méthode du gradient conjugué dans le cas d’une fonction polynomiale de degré 2.
Soit f : IRn 3 x 7→ 12 〈Ax,x〉−〈b,x〉, où A ∈ Mn (IR) est une matrice symétrique réelle définie
positive et b est un vecteur de IRn . Alors, dans ce cas, l’algorithme du gradient conjugué
s’écrit : 0
x est donné, r 0 = Ax 0 − b et d 0 = −r 0 .
n+1 〈r n ,d n 〉
x = x n + ρn d n , ρn = −
n+1 〈Ad n ,d n 〉
r n+1
= Ax − b
kr n+1 k2
d n+1 = −r n+1 + βn d n , βn := .
kr n k2
Programmer cet algorithme et répondre aux questions initiales.
– 34 –
IX.2. TD9 : OPTIMISATION NUMÉRIQUE EN DIMENSION N
TD IX.3 m Implémenter un modèle de régression linéaire avec gradient stochastique pour prédire les
scores d’un examen en fonction du nombre d’heures étudiées. On expliquera soigneusement com-
ment la méthode est mise en œuvre. On suggère de s’inspirer de l’exemple IX.1.13.
– 35 –
CHAPITRE IX. ALGORITHMES D’OPTIMISATION EN TOUTE DIMENSION
– 36 –