Partage
  • Partager sur Facebook
  • Partager sur Twitter

Forme canonique

    10 octobre 2021 à 19:31:32

    Bonjour , je suis entrain d'essayer de créer un programme qui permet de transformer une forme classique d'un trinôme en sa forme canonique ( je sais c'est très basique), le fait est qu'il faut que j'exprime une valeur pour x, etant donné que nous ne connaisson pas cette valeur, comment je pourrai faire ? Merci.

    a = int(input("Choisisser un nombre a pour l'expression : ax^2 +bx +c"))
    b = int(input("Choisisser un nombre b pour l'expression : ax^2 +bx +c"))
    c = int(input("Choisisser un nombre c pour l'expression : ax^2 +bx +c"))
    print(a,"x^2 + ",b,"x + ",c)
    x = 0 // je cherche quelque chose pour le remplacer
    alpha = 0
    beta = 0
    o = a*(x)^2 + b*x +c
    
    d = (b*x) /a
    
    o = a*((x^2) + d ) +c
    
    e = d / 2
    
    
    o = a((x^2) + d + (e/x) - (e/x)) +c // c'est ici que la valeur 0 de x pose problème
    
    o = a((x + (e/x))^2 -(e/x)) +c
    
    o = a(x +(e/x))^2 - a(e/x) + c
    
    alpha = (e/2)
    beta -a(e/x) + c
    
    o = a(x +alpha)^2 + beta
    
    print (a,"(x + ", alpha, ") + ", beta)
    print (o)
    
    
    
    
    
    

    (Je n'utilise pas les formule par choix. )

    -
    Edité par ArthusGodelu 10 octobre 2021 à 19:40:09

    • Partager sur Facebook
    • Partager sur Twitter
      10 octobre 2021 à 21:17:26

      Bonjour, si tu as un trinôme de la forme ax²+bx+c (avec a≠0 forcément) alors la forme canonique est simplement a( (x+b/(2a))² - ( (b²-4ac)/(2a)²) ). Tu n'as nul besoin de donner une valeur à x pour cela. Il faut juste calculer α=b/(2a) et β=(b²-4ac) / (2a)² et afficher que la forme canonique est a( (x+α)² - β ).

      • Partager sur Facebook
      • Partager sur Twitter
        11 octobre 2021 à 3:20:14

        Qui a dit qu'on a besoin de connaître les valeurs pour faire de l'algèbre?
        Je fais l'expansion de (a+b)^3:
        Je n'ai pas éliminé les facteurs ou les exposants égaux à 1.
        -
        from collections import Counter
        import re
        f = "a+b"
        for _ in range(1,3):
            f=f.split("+")
            f ="+".join([re.sub("^(.+)$", r"a\1+\1b", t) for t in f])
        terme = lambda t: "".join([k+"^"+str(v) for k,v in sorted(Counter(t).items(), key=lambda i: i[0])])
        print("+".join([str(v)+"*"+terme(k) for k,v in Counter(f.split("+")).items()]))
        -
        1*a^3+3*a^2b^1+3*a^1b^2+1*b^3

        edit:
        dans terme: remplacer "^"+str(v) par ("^"+str(v), "")[v==1]
        Dans le print: remplacer str(v)+"*" par (str(v)+"*", "")[v==1]

        edit2:
        On peut faire plus simple et plus efficace. Je publierai si intéressés.
        On peut avoir plus de deux variables (une lettre par variable, toutes différentes)
        On peut évaluer l'expression. (je remplace '^' par '**' et je joint les variables dans terme par '*')

        -
        Edité par PierrotLeFou 11 octobre 2021 à 7:30:06

        • Partager sur Facebook
        • Partager sur Twitter

        Le Tout est souvent plus grand que la somme de ses parties.

        Forme canonique

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown