4.5 Un algorithme num´ erique
145
est inversible. Alors, il existe un voisinage V de Y 0 , une fonction unique g : V → R
n et
un voisinage W de (X 0 , Y 0 ) tels que
(i) g est de classe C
r sur V , et son graphe est inclus dans W .
(ii) g(Y 0 ) = X 0 .
(iii) sur W on a F (X, Y ) = 0 si et seulement si X = g(Y ).
Preuve de la proposition 4.17 Soit X 0 = (x 0 , y 0 ) un point de R qui n’est pas sur le
squelette. Sa distance ` a la fronti` ere est donn´ ee par d(X 0 ) = |X 0 − X 1 |, o` u X 1 = (x 1 , y 1 )
est un point de ∂R tel que le vecteur X 0 − X 1 est normal ` a ∂R. On veut montrer que
d(X) est de classe C
1 au voisinage de X 0 . La principale difficult´ e est de calculer d(X).
Pour cela, on doit trouver le point Y = (x, y) de la fronti` ere qui est le plus proche de
X = (x, y). On va le trouver par le th´ eor` eme des fonctions implicites (th´ eor` eme 4.22).
D’apr` es la d´ efinition 4.16, on peut supposer que la fronti` ere est une courbe de niveau
f 1 (Y ) = 0 d’une fonction f 1 de classe C
2 ` a valeurs dans R. De plus, il faut que le vecteur
X − Y soit normal `
a la fronti` ere en Y . Comme la normale ` a la fronti` ere a la direction
du gradient ∇f 1 (Y ) de f 1 , le vecteur X − Y doit ˆ etre parall` ele au vecteur ∇f 1 (Y ), qui
s’exprime comme suit :
f 2 (x, y, x, y) =
x − x
∂f1
∂x (Y )
y − y
∂f1
∂y (Y )
= 0.
On cherche donc les solutions de F (x, y, x, y) = 0, o` u F = (f 1 , f 2 ). Si f 1 est de classe
C
2 , alors f 2 , donc F , est de classe C
1 . D’apr` es le th´ eor` eme des fonctions implicites
(th´ eor` eme 4.22), les solutions de F = 0 seront donn´ ees sous la forme d’une unique
fonction (x, y) = g(x, y) = g(X), de classe C
1 , si on montre que
J(x 1 , y 1 , x 0 , y 0 ) =
∂f1
∂x
∂f1
∂y
∂f2
∂x
∂f2
∂y
(x 1 , y 1 , x 0 , y 0 )
est inversible. On a
J(X 1 , X 0 )
t =
∂f1
∂x (X 1 )
∂f1
∂y (X 1 ) − (y 1 − y 0 )
∂
2 f1
∂x 2 (X 1 ) + (x 1 − x 0 )
∂
2 f1
∂x∂y (X 1 )
∂f1
∂y (X 1 ) −
∂f1
∂x (X 1 ) + (x 1 − x 0 )
∂
2 f1
∂y 2 (X 1 ) − (y 1 − y 0 )
∂
2 f1
∂x∂y (X 1 )
.
(4.5)
Que signifie la condition det(J(x 1 , y 1 , x 0 , y 0 )) = 0 ? C’est pr´ ecis´ ement la condition pour
laquelle le cercle S(X 0 , |X 1 − X 0 |) a un contact d’ordre sup´ erieur ` a 1 en X 0 tel que
d´ ecrit ` a l’exercice 16. Un tel point X 0 correspond `
a une extr´ emit´ e du squelette. Nous
laissons la v´ erification de ce point un peu d´ elicat pour l’exercice 17. (Un changement
de variables nous permet de consid´ erer le cas plus facile o` u f 1 (x, y) = y − f (x) pour
une fonction f de classe C
2 .) Donc, si X 0 n’est pas sur le squelette, alors J(X 1 , X 0 ) est
inversible, ce qui assure l’existence d’un unique g de classe C
1 .
Maintenant on sait que d(x, y) = |X − g(X)| est de classe C
1 . Alors ∇d est continu.
Si on avait suppos´ e que f 1 ´ etait de classe C
3 , on aurait obtenu que ∇d est de classe C
1 .
145
est inversible. Alors, il existe un voisinage V de Y 0 , une fonction unique g : V → R
n et
un voisinage W de (X 0 , Y 0 ) tels que
(i) g est de classe C
r sur V , et son graphe est inclus dans W .
(ii) g(Y 0 ) = X 0 .
(iii) sur W on a F (X, Y ) = 0 si et seulement si X = g(Y ).
Preuve de la proposition 4.17 Soit X 0 = (x 0 , y 0 ) un point de R qui n’est pas sur le
squelette. Sa distance ` a la fronti` ere est donn´ ee par d(X 0 ) = |X 0 − X 1 |, o` u X 1 = (x 1 , y 1 )
est un point de ∂R tel que le vecteur X 0 − X 1 est normal ` a ∂R. On veut montrer que
d(X) est de classe C
1 au voisinage de X 0 . La principale difficult´ e est de calculer d(X).
Pour cela, on doit trouver le point Y = (x, y) de la fronti` ere qui est le plus proche de
X = (x, y). On va le trouver par le th´ eor` eme des fonctions implicites (th´ eor` eme 4.22).
D’apr` es la d´ efinition 4.16, on peut supposer que la fronti` ere est une courbe de niveau
f 1 (Y ) = 0 d’une fonction f 1 de classe C
2 ` a valeurs dans R. De plus, il faut que le vecteur
X − Y soit normal `
a la fronti` ere en Y . Comme la normale ` a la fronti` ere a la direction
du gradient ∇f 1 (Y ) de f 1 , le vecteur X − Y doit ˆ etre parall` ele au vecteur ∇f 1 (Y ), qui
s’exprime comme suit :
f 2 (x, y, x, y) =
x − x
∂f1
∂x (Y )
y − y
∂f1
∂y (Y )
= 0.
On cherche donc les solutions de F (x, y, x, y) = 0, o` u F = (f 1 , f 2 ). Si f 1 est de classe
C
2 , alors f 2 , donc F , est de classe C
1 . D’apr` es le th´ eor` eme des fonctions implicites
(th´ eor` eme 4.22), les solutions de F = 0 seront donn´ ees sous la forme d’une unique
fonction (x, y) = g(x, y) = g(X), de classe C
1 , si on montre que
J(x 1 , y 1 , x 0 , y 0 ) =
∂f1
∂x
∂f1
∂y
∂f2
∂x
∂f2
∂y
(x 1 , y 1 , x 0 , y 0 )
est inversible. On a
J(X 1 , X 0 )
t =
∂f1
∂x (X 1 )
∂f1
∂y (X 1 ) − (y 1 − y 0 )
∂
2 f1
∂x 2 (X 1 ) + (x 1 − x 0 )
∂
2 f1
∂x∂y (X 1 )
∂f1
∂y (X 1 ) −
∂f1
∂x (X 1 ) + (x 1 − x 0 )
∂
2 f1
∂y 2 (X 1 ) − (y 1 − y 0 )
∂
2 f1
∂x∂y (X 1 )
.
(4.5)
Que signifie la condition det(J(x 1 , y 1 , x 0 , y 0 )) = 0 ? C’est pr´ ecis´ ement la condition pour
laquelle le cercle S(X 0 , |X 1 − X 0 |) a un contact d’ordre sup´ erieur ` a 1 en X 0 tel que
d´ ecrit ` a l’exercice 16. Un tel point X 0 correspond `
a une extr´ emit´ e du squelette. Nous
laissons la v´ erification de ce point un peu d´ elicat pour l’exercice 17. (Un changement
de variables nous permet de consid´ erer le cas plus facile o` u f 1 (x, y) = y − f (x) pour
une fonction f de classe C
2 .) Donc, si X 0 n’est pas sur le squelette, alors J(X 1 , X 0 ) est
inversible, ce qui assure l’existence d’un unique g de classe C
1 .
Maintenant on sait que d(x, y) = |X − g(X)| est de classe C
1 . Alors ∇d est continu.
Si on avait suppos´ e que f 1 ´ etait de classe C
3 , on aurait obtenu que ∇d est de classe C
1 .
