Voici mon probleme : Je cherche de l'aide pour mettre en C la methode simplex decrite ci dessous. mais je n'y comprend rien a la méthode.
Ce que j'ai reussi a faire c'est :
- développer des fonctions permettant les opérations sur desnombres complexes
- échantillonnage l’espace des fréquences sur une échelle logarithmique
-----------------------------------------------------------------------------------------------------------------------------------
Sujet
-----------------------------------------------------------------------------------------------------------------------------------
Gabarit d'un filtre passe bande du deuxième ordre
Objectif :
Mettre en œuvre une méthode d'optimisation par simplex non linéaire de Nelder et Mead permettant de calculer les valeurs des éléments d'un filtre passe bande du deuxième ordre pour que la fonction de transfert de ce dernier rentre dans un gabarit donné.
Position du problème :
Un filtre passe bande du deuxième ordre peut être réalisé par le schéma de la figure 1.
On cherche à trouver les valeurs des composants R0, R1, R2, C1, C2, qui permettent à la
fonction de transfert de passer dans un gabarit donné comme sur la figure 2.
Le but de ce projet consiste à programmer une méthode d'optimisation permettant à la
fonction de transfert du filtre de passer dans un gabarit donné sur la gamme de fréquence de
10 à 1Mhz.
"figure en pièce jointe"
Le programme devra sortir les valeurs de A, ω0 et ω1 optimisées ainsi que l’évolution
des fonctions de transfert et des gabarits.
Mise en œuvre du problème :
Ce type de problème est ce que l'on appelle un problème d'optimisation basé sur la minimisation d'une fonction coût.
Dans notre cas, cette fonction peut être, pour un échantillonage de fréquence sur un interval donné, le nombre de points de la fonction de transfert qui ne respectent pas le gabarit. Plus ce nombre de points va être elevé, plus nous serons loin de la solution.
Plusieurs méthodes d'optimisation existent ( algorithmes génétiques, recuit simulé...). Une des méthodes les plus simples à mettre en oeuvre est la méthode du simplex non linéaire de Nelder et Mead.
Cette méthode, géométrique, peut être résumée de la manière suivante :
Il y a dans notre cas trois paramètres (A,ω0,ω1) à déterminer pour que le filtre cherché rentre dans le gabarit donné. Cherchant 3 paramètres, il s'agit de construire un polyèdre dans un espace à 3 dimensions.
Il nous faut alors 4 points choisis de manière aléatoire pour former un tétraèdree.
Chaque position correspond à un choix des trois paramètres (A,ω0,ω1). Ces quatre points forment alors le simplexe, un polyèdre à quatre sommets dans l’espace tri-dimensionnel. Si l’on note f, la fonction à minimiser (la fonction coût), chaque position donne des valeurs différentes de f.
La méthode consiste dans un premier temps à classer les quatre positions en fonction de la valeur de f qu’elles donnent.
Nous noterons les positions Pi et les valeurs associées f, avec l’index i allant de 0 à 3 par ordre croissant des valeurs de f.
Les trois « meilleurs » points (i = 0 à 2) permettent de calculer le centroïde, ou point barycentre, noté Pb.
Il s'agit alors d’améliorer le plus « mauvais » point P3 par des réflexions, expansions ou contractions géométriques par rapport au point Pb.
La méthode s'arrête lorsque la distance entre tous les points est inférieure à une certaine valeur.
Plus d’informations sur cette méthode peuvent être trouvées dans « Numerical Recipes » ou sur internet : http://en.wikipedia.org/wiki/Nelder-Mead_method
Quelques pistes
- Pour calculer la réponse dans le plan de Bode du filtre pour un jeu de valeurs donné, il sera probablement nécessaire de développer des fonctions permettant les opérations sur des
nombres complexes
- Il sera aussi probablement nécessaire d’échantillonner l’espace des fréquences sur une échelle logarithmique
- Une manière de calculer la fonction coût peut être de compter le nombre de points de l’échantillonnage qui sont hors du gabarit.
- Il vaudra mieux travailler sur les log de A, ω0,et ω1 que sur leurs valeurs naturelles.
Partager