Partage
  • Partager sur Facebook
  • Partager sur Twitter

Isolation d'un membre dans une équation

Appliquée à la modélisation d'un réseau Wi-Fi

Sujet résolu
    9 juin 2019 à 16:45:59

    Bonjour à tous,

    Je travaille en ce moment sur un projet dans lequel je dois modéliser un réseau Wi-Fi non-saturé (IEE 802.11).

    Pour cela, je dois effectuer entre autres une modélisation de la probabilité de collision entre plusieurs paquets. Le papier sur lequel je m'appuie pour ce projet me donne une équation de la forme :

    Ma seule variable ici est p, représentant justement ma probabilité de collision.

    Je modélise le tout en utilisant Python3, mais je ne voit pas comment implémenter une telle formule sans isoler p. Mais une fois de plus, isoler p semble être compliqué si ce n'est impossible (j'ai essayé avec du calcul formel sous Matlab, à la main en substituant et en utilisant le binôme de Newton...), mais je pense qu'il faut approximer.

    Quelqu'un m'a proposé d'écrire quelque chose de la forme :

    def update_p(p):
        return #equation_de_p
    
    def get_p():
        epsilon = 10**(-6)
        p_old = 0.2
        p_next = p_old+0.1
    
        while(abs(p_next-p_old) > epsilon):
            p_old = p_next
            p_next = update_p(p_old)
    
        return p_next

    Mais je ne vois pas entièrement où il veut en venir, si quelqu'un peut m'éclairer je lui en serais reconnaissant ! :)

    Merci !

    Clément.

    -
    Edité par Clement_Vinci 9 juin 2019 à 17:40:48

    • Partager sur Facebook
    • Partager sur Twitter

    “Ne pas railler, ne pas déplorer, ne pas maudire, mais comprendre”

      9 juin 2019 à 18:22:44

      Salut,

      si tu n'arrives pas à résoudre cette équation analytiquement, tu peux essayer une résolution numérique en cherchant les 0 de f(p) = p - 1 - ...

      Tu peux par exemple utiliser scipy.optimize

      • Partager sur Facebook
      • Partager sur Twitter

      Avez-vous entendu parler de Julia ? Laissez-vous tenter ...

        9 juin 2019 à 21:42:36

        Je ne suis pas sûr d'avoir compris l'idée de ton collègue (notamment les lignes 6 et 7 me paraissent bizarres). Je vais te proposer une idée qui fonctionnera s'il y a une solution, et ça se trouve c'était la même idée...

        Principe : on cherche une solution entre 0 et 1. (Mine de rien c'est une chance, car si on cherchait une solution dans R, la méthode que je propose ne marcherait pas ou bien pourrait conduire à de très longs calculs.)

        Notons u(p) toute la parenthèse à la puissance N-1. L'équation à résoudre est : \( u(p) + p - 1 = 0 \). Aller, je simplifie encore : notons f(p) = u(p) + p -1. L'équation à résoudre est : \( f(p) = 0 \). Ça y est, là je comprends !

        Idée : on va balayer l'intervalle [0 ; 1] avec un certain pas et on va calculer le minimum de f(p) en valeur absolue. Le p qui donne ce minimum sera considéré comme une solution si ce minimum est proche de 0.

        Algorithme en pseudo-code :

        pas := 0.000001    (pas d'itération, ç-à-d précision de la solution)
        x   := 0           (valeur initiale)
        min := |f(0)|      (initialisation du minimum trouvé)
        p   := 0           (initialisation de la solution)
        Tant-Que pas <= 1.0 :
            x  := x + pas
            fx := f(x)
            Si |fx| < min Alors :   (on a trouvé mieux)
                min = fx
                p   = x
            Fin-Si
        Fin-Tant-Que
        

        Il ne reste plus qu'à afficher 'p' et 'min' et à conclure en fonction de la valeur de 'min'. En cas de doute, on peut diminuer le pas (un million de calculs d'une formule compliquée, ça se fait rapidement sur nos ordinateur actuels).

        -
        Edité par robun 9 juin 2019 à 21:47:21

        • Partager sur Facebook
        • Partager sur Twitter
          9 juin 2019 à 23:46:53

          Merci beaucoup !

          Je crois que c'est la même idée mais mieux expliquée ;)

          En effet, heureusement qu'il s'agit là d'une probabilité !

          Encore merci ! Ça me débloque :)

          • Partager sur Facebook
          • Partager sur Twitter

          “Ne pas railler, ne pas déplorer, ne pas maudire, mais comprendre”

          Isolation d'un membre dans une équation

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          • Editeur
          • Markdown