Algorithme de Remez

publicité
Introduction à l’Analyse Numérique
Algorithme de Remez
Christophe Troestler
« If your comp-sci course is easy then you’re either a genius or
you’re wasting your money. The odds on that are not in your favour. »
Chris Cummer, Two Thoughts on Computer Science Courses
Question 1 (Résolution de systèmes linéaires). Implémentez une fonction/méthode
gauss : matrice → vecteur → vecteur
prenant comme arguments une matrice A et un vecteur b, telle que 1 gauss A b retourne le vecteur
x solution du système linéaire Ax = b. Pour calculer x, on utilisera la méthode de Gauss vue au
cours. La non-inversibilité de A sera signalée par une exception. Le choix des structures pour
matrice et vecteur devra être motivé (en tenant compte de la cohérence avec l’utilisation de
cette routine dans les questions ci-dessous).
Question 2 (Golden search). Le but de cette question est d’implémenter une fonction/méthode
argmin, prenant comme arguments une fonction continue f : R → R et deux réels a et b (et un
argument optionnel ε > 0 dont nous parlerons plus tard), telle que argmin f a b retourne un point
x de minimum (local) de la fonction f sur l’intervalle 2 [a, b]. Le principe qu’on va employer est le
suivant. Tout d’abord on recherche un point
c ∈ ]a, b[ tel que
f (c) 6 f (a) et f (c) 6 f (b)
(1)
(si aucun c ne peut être trouvé le minimum se situe au bord et est donc facile à déterminer).
(a) Prouvez que sous l’hypothèse d’existence d’un c vérifiant (1), il existe un point x∗ ∈ ]a, b[ tel
que ∀x ∈ [a, b], f (x∗ ) 6 f (x).
Posons a0 := a, b0 := b et c0 := c. Nous allons estimer un point x∗ tel que ∀x ∈ [a, b], f (x∗ ) 6 f (x)
en construisant par récurrence des suites (an )n∈N , (bn )n∈N et (cn )n∈N vérifiant l’invariant
cn ∈ ]an , bn [ ∧ f (cn ) 6 min f (an ), f (bn )
(2)
quel que soit n. Voici comment. Supposons que nous connaissions an , bn et cn . Prenons un point
ξ ∈ ]an , bn [ \ {cn }. Sans perte de généralité on peut supposer que ξ ∈ ]cn , bn [ (le cas où ξ ∈ ]an , cn [
se traite de manière similaire). De deux choses l’une :
si f (ξ ) 6 f (cn ), alors on pose an+1 := cn , bn+1 := bn , et cn+1 := ξ ;
si f (ξ ) > f (cn ), alors on pose an+1 := an , bn+1 := ξ , et cn+1 := cn .
1. Nous employons ici une notation non parenthèsée.Dans un langage
tel que Java, on écrirait gauss(A, b).
2. Tous les intervalles sont non-orientés, i.e. [a, b] = ta + (1 − t)b 0 6 t 6 1 .
1/5
Algorithme de Remez
Introduction à l’Analyse Numérique
f
an
f
cn
ξ
bn
Cas f (ξ ) 6 f (cn )
an
cn
ξ
bn
Cas f (ξ ) > f (cn )
(b) Décrivez explicitement le choix de an+1 , bn+1 et cn+1 dans le cas où ξ ∈ ]an , cn [.
(c) Prouvez 3 que l’invariant (2) est effectivement préservé par les choix faits ci-dessus.
Pour compléter la description de l’algorithme, il faut dire comment choisir ξ . Comme pour la
bissection, on veut que ce choix assure la convergence de l’algorithme de la manière la plus efficace
possible. Pour ce faire on va prendre ξ dans le plus grand intervalle parmi les deux ]an , cn [ et
]cn , bn [ et de manière à ce que l’intervalle [an+1 , bn+1 ] soit le plus petit possible quel que soit le
choix effectué en fonction de la valeur f (ξ ). Plus précisément si, comme sur les graphiques cidessus, c’est ]cn , bn [ qui est le plus grand, le principe ci-dessus demande 4 de choisir ξ de manière
à ce que
√
|ξ − an | 1 + 5
=
(3)
|ξ − bn |
2
√
(le nombre (1 + 5)/2 est appelée « nombre d’or », ce qui explique le nom de cet algorithme de
recherche de minimum).
(d) Montrez que (3) détermine ξ comme combinaison convexe (1 − λ )an + λ bn pour un certain
λ ∈ ]0, 1[. (Il est bien entendu nécessaire de détailler et d’expliquer vos calculs.)
(e) Donnez ξ comme combinaison convexe de an et bn dans le cas où c’est l’intervalle ]an , cn [
qui est le plus grand.
Finalement, il reste à donner un critère de terminaison. Puisque nous savons qu’un point minimum x∗ existe dans l’intervalle ]an , bn [, l’erreur absolue commise sur x∗ en l’approchant par un
point quelconque de l’intervalle est au plus |an − bn |. Bien entendu, il est en général meilleur de
considérer l’erreur relative, c’est pourquoi nous prendrons comme critère d’arrêt
|an − bn | 6 ε |an | + |bn |
(4)
où ε > 0 doit optionnellement pouvoir être choisi par l’utilisateur (bien sûr la valeur utilisée par
défaut doit être raisonnable).
R EMARQUE : Comme d’habitude, on veillera à ce que l’implémentation ne fasse pas de tests
inutiles, qu’elle ne réévalue pas la fonction deux fois au même point,...
Question 3 (Algorithme de Remez). Nous allons exposer ici un algorithme qui permet d’estimer le polynôme d’un degré donné qui approche uniformément le mieux une fonction. Cet algorithme a diverses applications, par exemple dans les filtres digitaux.
3. On attend une preuve plus détaillée que du simple « blabla ».
4. Nous ne faisons pas ici les détails de la preuve.
2/5
Algorithme de Remez
Introduction à l’Analyse Numérique
Commençons par rappeler le problème. Soit f :
[a, b] → R une fonction continue définie sur un intervalle borné [a, b] et n ∈ N. On cherche
p∗ ∈ Pn tel que | f − p∗ |∞ = inf | f − p|∞ p ∈ Pn
f
p∗
où Pn désigne l’ensemble des polynômes de degré au
plus n et |–|∞ est la norme du sup sur C ([a, b]; R). Un tel
p∗ existe toujours, est unique, et est appelé le meilleur
approximant de f . Une caractérisation de ce polynôme
est donné par le théorème d’équi-oscillations de Chebyshev :
Théorème (Chebyshev, 1854) Un polynôme p∗ ∈ Pn
est le meilleur approximant de f sur [a, b] si et seulement s’il existe n+2 points a 6 x0 < x1 < · · · < xn+1 6 b
tels que
∀i = 0, . . . , n + 1,
f (xi ) − p∗ (xi ) = (−1)i E
avec |E| = | f − p∗ |∞ (5)
L’équation (5) peut se lire en disant que l’erreur maxa
b
imale | f − p∗ |∞ commise en remplaçant f par p∗ est
atteinte en n + 2 points de manière oscillante. Ceci est
représenté à la figure 1 où les points (xi , f (xi )) sont F IGURE 1 – Meilleure approximation
tracés en rouge. Ce résultat forme la base de l’algorithme pour estimer p∗ que nous allons à présent présenter.
L’idée est la suivante : si les n + 2 points xi étaient connus, il suffirait de résoudre le système
linéaire de n + 2 équations
p∗ (xi ) + (−1)i E = f (xi ),
0 6 i 6 n + 1,
(6)
pour trouver p∗ et E.
(a) Prouvez que, sous l’hypothèse qu’au moins n + 1 des n + 2 points xi sont distincts, le système
linéaire (6) possède une et une seule solution (p∗ , E) ∈ Pn × R.
I NDICATION (à détailler si vous l’utilisez) : Montrez que le noyau de l’application linéaire associée au système est réduit à {0} de manière similaire à ce qui a été fait pour l’interpolation.
Le théorème des valeurs intermédiaires vous sera utile.
Bien entendu, nous ne connaissons pas a priori les points xi . Nous allons donc chercher à les
estimer par approximations successives, sachant qu’ils sont des minimums ou maximums locaux
de l’erreur x 7→ f (x) − p∗ (x).
Pour initialiser la méthode de Remez, on prend le polynôme p0 ∈ Pn qui interpole f sur les
n + 1 nœuds de Chebyshev de l’intervalle [a, b] (voir la figure 2). Comme l’erreur commise par
p0 s’annule en les n + 1 points d’interpolation (points bleus sur la figure 3), on peut trouver n + 2
0
points x00 < x10 < · · · < xn+1
qui sont des minimums ou des maximums de l’erreur e0 := f − p0 sur
3/5
Algorithme de Remez
Introduction à l’Analyse Numérique
f
p0
e0 = f − p0
a
a
b
b
F IGURE 2 – Interpolation de Chebyshev
F IGURE 3 – Erreur d’interpolation
chacun des intervalles délimités par ces points d’interpolation (les points (xi0 , f (xi0 )), 0 6 i 6 n + 1
sont représentés en rouge sur la figure 3).
Maintenant que nous savons comment trouver le polynôme initial p0 et les points associés
0
0 , nous pouvons passer au cœur de l’algorithme qui va les raffiner de manière
x0 , x10 , . . . , xn+1
itérative.
Supposons que nous disposions de pk et des n + 2 points
k
k
x0 , x1k , . . . , xn+1
qui maximisent localement l’erreur f − pk . On
k+1
k+1
calcule pk+1 et x0 , x1k+1 , . . . , xn+1
de la manière suivante :
ek+1 = f − pk+1
a
On résoud le système linéaire
pk+1 (xik ) + (−1)i Ek+1 = f (xik ),
0 6 i 6 n + 1,
b
pour déterminer pk+1 et Ek+1 . (La fonction ek+1 := f − pk+1
est représentée à la figure 4 où les losanges bleus marquent les
F IGURE 4 – Erreur ek+1
points xik , ek+1 (xik ) .)
Si pk+1 est suffisamment proche de pk , on arrête la recherche et
retourne pk+1 . Sinon ek+1 := f − pk+1 change n + 2 fois de signe et, dans chacun des n + 2 intervalles délimités par n + 1 racines de ek+1 dans ]a, b[, on recherche en alternance un minimum
k+1
ou un maximum de ek+1 . Ceci donne n + 2 points que nous appellerons x0k+1 , x1k+1 , . . . , xn+1
.
k+1
k+1
(Les points (xi , ek+1 (xi )) sont représentés en rouge sur la figure 4.)
(b) Donnez une définition précise de « pk+1 est suffisamment proche de pk » qui est appropriée
pour le problème. Justifiez votre choix et discutez de son implémentation numérique.
(c) Expliquez et justifiez la stratégie que vous allez employer pour décider si c’est un minimum
ou un maximum local que vous devez rechercher sur chacun des sous-intervalles délimités
par les racines.
(d) Programmez une fonction/méthode remez qui prend comme arguments un entier n, une
fonction f : R → R, deux nombres réels a et b, et qui retourne p∗ ∈ Pn , une approximation
du polynôme de meilleure approximation de f sur [a, b], ainsi qu’un tableau contenant une
approximation des n + 2 points x0 , x1 , . . . , xn+1 qui témoignent de l’optimalité de p∗ et dont
l’existence est affirmée par le théorème de Chebyshev.
(e) Tracez le polynôme retourné par 5 remez 2 exp (−2.) 2. et imprimez les valeurs des
5. En Java, l’expression devient, par exemple, remez(2, new fun_exp, −2., 2.).
4/5
Algorithme de Remez
Introduction à l’Analyse Numérique
points x0 , x1 , . . . , xn+1 .
Références
[1] Remez, E. Ya., « Sur le calcul effectif des polynômes d’approximation de Tschebyscheff »,
C. P. Paris, 337–340, 1934.
5/5
Téléchargement