J.Ph. Chancelier1
On cherche ici à trouver numériquement tel que où est une fonction strictement croissante donnée et un réel donné. On suppose par ailleurs que la fonction est donnée par :
Un algorithme stochastique pour trouver un zéro de sera le suivant. On se donne et une suite de variables aléatoire indépendantes et de même loi que . On met à jour l'estimation de par :
Écrire une fonction Scilab qui mets en oeuvre cet algorithme. La fonction dont on cherche à calculer le zéro sera passée en argument. Faire tourner l'algorithme sur une fonction de votre choix (, ou , ...).
On regarde dans cette section le cas particulier où on cherche à évaluer un quantile. Soit la fonction de répartition d'une loi . On suppose ici continue. Calculer un quantile d'ordre de consiste à calculer vérifiant :
On peut donc utiliser l'algorithme décrit dans la section précédente. une autre méthode est aussi envisageable. Soient tirages indépendants de loi . On peut les réordonner en ordre croissant et estimer le quantile d'ordre par avec
Mettre en oeuvre les deux algorithmes par exemple pour la loi normale
ou pour d'autres loi de votre choix (grand
). Pour l'algorithme sur la
fonction de répartition empirique on pourra utiliser dsearch
pour rajouter un élément dans un tableau déjà trié.
Faire une animation graphique montrant l'évolution des deux
algorithme aux cours des itérations. Pour certaines lois
donc la loi normale on peut calculer les quantiles dans Scilab
(cdfnor
). On pourra utiliser cela pour superpose sur les
courbes la solution
.
driver('X11') xset('pixmap',1) // on utilise un mémoire graphique pour dessiner for i=1:n ....... xset('wwpc') // efface la mémoire graphique // commande graphiques à introduire ici xset('wshow') // affiche le contenu de la mémoire graphique à l'écran. end
On suppose cette fois que l'on veut maximiser une fonction concave . On pourrait utiliser des méthodes d'optimisation déjà vue, par exemple une méthode de gradient sur la fonction mais cela demanderait à chaque itération l'évaluation d'une espérance . On va donc plutôt utiliser un algorithme stochastique pour trouver un zéro de et plutôt que de calculer explicitement le gradient on va l'évaluer par :
Mettre en oeuvre cet algorithme dans Scilab.