Le but est de résoudre par du tir simple indirect, deux problèmes simples de contrôle optimal dont le contrôle maximisant est lisse.
Le premier problème est en dimension 1 et possède des conditions aux limites simples tandis que le second est en dimension 2 et aura des conditions de transversalités sur le vecteur adjoint.
On propose un dernier exercice sur la dérivation de fonctions par les nombres duaux.
1. Afficher le flot du système hamiltonien associé et afficher 5 fronts aux temps $0$, $0.25$, $0.5$, $0.75$ et $1$ ainsi que quelques extrémales. On utilisera le TP précédent.
2. Coder la fonction de tir
$$
S(p_0) = \pi(z(t_f, x_0, p_0)) - x_f,
$$
où $t_f = 1$, $x_0=-1$, $x_f = 0$ et où $z=(x,p)$ et $\pi(z) = x$. Vous pouvez utiliser votre cours.
3. Afficher la fonction de tir pour $p_0 \in [0, 1]$.
4. Résoudre l'équation $S(p_0) = 0$ et tracer l'extrémale dans le plan de phase, cf. question 1. Vous donnerez une bonne initialisation au solveur de Newton sous-jacent.
Vous venez d'utiliser le package `ForwardDiff` pour calculer la Jacobienne de la fonction de tir. Ce package utilise les nombres duaux afin de pouvoir diférencier automatiquement vos fonctions.
Les nombres duaux s'écrivent sous la forme $a + b\varepsilon$ avec $(a,b)\in \mathbb{R}^2$ tels que $\varepsilon^2 = 0$.
On définit une fonction
$$ F(x) = \left(x_1 + x_2-1 , x_2^2 \right) $$
avec $x = (x_1, x_2)$
1. Calculer à la main $J_F$ la Jacobienne de $F$.
2. Calculer à la main $F(x + e_1 \varepsilon )$ et $F(x + e_2 \varepsilon )$ avec $(e_1, e_2)$ les vecteurs unitaires de la base canonique, et mettre le résultat sous la forme duale. Que remarquez-vous ?
3. Coder ci-dessous $F$ et $J_F$ grâce aux nombre duaux. Calculez $F(x)$ et $J_F(x)$ pour $x = \left(1, 5 \right)$. Vérifier le résultat.
**Note.**
Voici quelques fonctions utiles :
```julia
a=Dual.(x,e1)# crée le vecteur dual x + e₁ϵ
dualpart.(a)# Récupère la partie dual du vecteur a