Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Exercices Python Discussion :

Equation bicarrée Programmation


Sujet :

Exercices Python

  1. #1
    Futur Membre du Club
    Equation bicarrée Programmation
    Bonjour tout le monde,

    Je découvre complètement Python.

    Je souhaiterai faire tourner un programme permettant de résoudre l'équation bicarrée suivante : (E) : aX^4+bX^2+c=0

    Je connais la méthode de résolution, et voici ci-dessous quelques réflexions.

    Posons T=X^2 (besoin de définir une nouvelle variable)

    Alors (E) : aT^2+bT+c=0

    Calcul de Delta

    Delta = b² - 4ac

    3 cas possibles : si Delta < 0, si Delta = 0 et si Delta > 0

    Pour Delta < 0, pas de solution.

    Si Delta = 0, une solution donnée par : T = -b/2a et donc X=(+ou-) sqrt(T) (besoin de tester le signe de T)

    Si Delta > 0, deux solutions réelles distinctes :

    T_1 = (-b-sqrt(Delta))/2a et T_2 = (-b+sqrt(Delta))/2a

    Donc X_1 = (+ou-) sqrt(T_1) et X_2 = (+ou-)sqrt(T_2) (besoin de tester le signe de T_1 et de T_2)

    Voilà, je n'ai absolument aucune idée de comment utiliser Python pour réaliser ceci.

    A l'aide !! ^^

    Merci d'avance

  2. #2
    Expert éminent sénior
    Salut,

    Citation Envoyé par Dhaka1212 Voir le message
    Voilà, je n'ai absolument aucune idée de comment utiliser Python pour réaliser ceci.

    A l'aide !! ^^
    Il faut commencer par vous choisir un tuto. et apprendre les bases.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert éminent
    Citation Envoyé par Dhaka1212 Voir le message
    Je souhaiterai faire tourner un programme permettant de résoudre l'équation bicarrée suivante : (E) : aX^4+bX^2+c=0
    résoudre une équation ça revient à faire du calcul symbolique, la très large majorité des langages de programmation ne sont *pas* conçus pour ça, Python y compris

    pour y arriver il va faudra utiliser un module spécialisé comme Sympy, un exemple rapide :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    >>> import sympy
    >>> from pprint import pprint
    >>> sympy.init_printing(use_unicode=False)
    >>> a,b,c,x = sympy.symbols('a b c x')
    >>> sympy.solve(a*x**4+b*x**2+c, x)
                  ________________________               ________________________
                 /          _____________               /          _____________
                /          /           2               /          /           2
        ___    /     b   \/  -4*a*c + b        ___    /     b   \/  -4*a*c + b
     -\/ 2 *  /    - - - ----------------    \/ 2 *  /    - - - ----------------
            \/       a          a                  \/       a          a
    [--------------------------------------, ------------------------------------,
                       2                                      2
     
                  ________________________               ________________________
                 /          _____________               /          _____________
                /          /           2               /          /           2
        ___    /     b   \/  -4*a*c + b        ___    /     b   \/  -4*a*c + b
     -\/ 2 *  /    - - + ----------------    \/ 2 *  /    - - + ----------------
            \/       a          a                  \/       a          a
     --------------------------------------, ------------------------------------]
                       2                                      2
    >>> pprint(sympy.solve(a*x**4+b*x**2+c, x))
    [-sqrt(2)*sqrt(-b/a - sqrt(-4*a*c + b**2)/a)/2,
     sqrt(2)*sqrt(-b/a - sqrt(-4*a*c + b**2)/a)/2,
     -sqrt(2)*sqrt(-b/a + sqrt(-4*a*c + b**2)/a)/2,
     sqrt(2)*sqrt(-b/a + sqrt(-4*a*c + b**2)/a)/2]


    note que la nomenclature est un peu différente, les puissances en python sont notées **, les multiplications doivent être explicites (pas de "ax + by"), sqrt() est le nom de la fonction chargée de calculer les racines carrées et de manière générale il convient de connaitre la précédence des opérateurs en Python, ce qui revient à connaitre les bases du langage

  4. #4
    Membre habitué
    Bonsoir,
    si vous voulez avoir les solutions approchées sans utiliser de module (à part la fonction sqrt du module math),
    le code suivant suffit:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    from math import sqrt
    def bicarrée(a,b,c):
        if a==0:
            print("ce n'est pas une équation bicarrée")
            break
        print("Equation: {}X^4+{}X^2+{}".format(a,b,c))
        d=b**2-4*a*c
        if d<0:
            print("pas de solution")
        else:
            t1,t2=(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)
            print("Solutions: ",set([i*sqrt(k) for i in (-1,1) for k in (t1,t2)  if k>=0]))

    résultat:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> bicarrée(2,-5,0)
    Equation: 2X^4+-5X^2+0
    Solutions:  {-0.0, 1.5811388300841898, -1.5811388300841898}
    >>> bicarrée(0,3,8)
    ce n'est pas une équation bicarrée

    Bon courage

  5. #5
    Futur Membre du Club
    Merci énormément !

    Je vais lancer un autre fil pour essayer de taper un code permettant de trouver l'aire d'un triangle.

    Ce langage est assez intuitif tout compte fait.

    Merci beaucoup encore une fois.

###raw>template_hook.ano_emploi###