Méthode du produit-somme

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis Méthode de produit-somme)

La méthode du produit-somme, en mathématiques, est un procédé algébrique permettant de factoriser une équation du second degré de la forme

[1],[2].

Méthode[modifier | modifier le code]

Pour factoriser le trinôme, il faut en premier lieu chercher deux nombres et tels que leur produit est égal à la valeur du produit de par et dont la somme est égale à la valeur de .

Il faut ensuite remplacer le terme par la somme des deux nombres et tels que .

Puis effectuer une double mise en évidence.

Démonstration[modifier | modifier le code]

[3]

En introduisant , plus grand commun diviseur de et .

Ce qui donne :

Utilisation[modifier | modifier le code]

Cette méthode peut être utilisée si et seulement si :

Et elle ne devrait être utilisée que sur des petits nombres entiers étant donné qu'il faut trouver empiriquement et issus d’une combinaison de facteur premiers de .

Et bien évidemment le discriminant (Δ) du trinôme doit être positif[1].

Elle est néanmoins utile de l’envisager avant de tenter d’autres méthodes plus contraignantes comme celle de la complétion du carré.

Les conditions précédentes peuvent paraître contraignantes mais en réalité elles sont vérifiées pour toute forme car pour , le “terme du milieu” ( dans le trinôme ) est la somme de et , et est équivalent à [3].

Exemples de mise en œuvre informatique[modifier | modifier le code]

La méthode du produit-somme peut être mise en algorithme, il existe à ce jour des programmes informatiques permettant de trouver et .

Python[modifier | modifier le code]

Ce programme a été créé par l'utilisateur marceaupatu123 et est trouvable sur le site internet Github[4].

import math

def primefactors(n):
    factors = []
   #Le but est de rendre n impair, tant qu'il est pair on ajoute 2 au tableau
    while n % 2 == 0:
      factors.append(2),
      n = int(n / 2)
    
   #Les diviseurs vont de pair, on s’arrête donc à srqt(n)+1 (voir https://math.stackexchange.com/questions/3875424/sieve-of-eratosthenes-why-can-we-stop-at-the-sqrt-n)
    for i in range(3,int(abs(n)**0.5)+1,2):
     
      while (n % i == 0):
         factors.append(i)
         n = int(n / i)
    
    #S'il reste encore un nombre n > 2 c'est qu'il est un facteur du nombre.
    if n:
      factors.append(n)
      
    return factors

#Cette fonction génère toutes les possibilités de somme via les facteurs
def genp(ac, factors):
    tableauDeToutesLesPossibilités = []
    tableau1 = factors.copy()
    tableau2 = []
    for i in range(0,len(factors)-1):
        tableau2.append(tableau1[0])
        tableau1.pop(0)
        n1 = 1
        n2 = 1
        for i in range(0,len(tableau1)):
            n1 = tableau1[i] * n1
        for i in range(0,len(tableau2)):
            n2 = tableau2[i] * n2
        tableauDeToutesLesPossibilités.append([n1, n2])
    return tableauDeToutesLesPossibilités

# Commute l'élément 0 et 1, 2 et 3...
def PairFactors(factorsarray):
    tableauareverse = factorsarray.copy()
    tour = math.floor((len(tableauareverse)/2))
    for i in range(0, tour*2, 2):
        element = 1
        while tableauareverse[i] == tableauareverse[i+element]:
            if i+element < len(tableauareverse)-1:
                element = element+1
            else:
                break
        tableauareverse[i] , tableauareverse[i+element] = tableauareverse[i+element], tableauareverse[i]
    return tableauareverse    

# Commute l’élément 0 et 3, 3 et 4, 6 et 7...
def ChangeBy3Factors(factorsarray):
    tableauareverse = factorsarray.copy()
    tour = math.floor((len(tableauareverse)/3)) 
    for i in range(0, tour*3, 3):
        element = 1
        while tableauareverse[i] == tableauareverse[i+element]:
            if i+element < len(tableauareverse)-1:
                element = element+1
            else:
                break
        tableauareverse[i] , tableauareverse[i+element] = tableauareverse[i+element], tableauareverse[i]
    return tableauareverse

# Création d'un "super tableau" regroupant toutes les possibilités
def Donnemoiunbeautableau(ac):
    facteurs = primefactors(ac)
    tableaunormal = genp(ac, facteurs)
    tableaupair = genp(ac,PairFactors(facteurs))
    tableauchangedby3 = genp(ac,ChangeBy3Factors(facteurs))
    lepluscomplet = tableaunormal + tableaupair + tableauchangedby3
    lepluscomplettrie = []
    for i in lepluscomplet:
        if i not in lepluscomplettrie:
            lepluscomplettrie.append(i)
    return lepluscomplettrie
    
# Test de M et P pour voir si m+p = b
def MPS(ac, b):
    posibilities = Donnemoiunbeautableau(ac)
    for i in range(0,len(posibilities)):
        m = posibilities[i][0]
        p = posibilities[i][1]
        if m + p == b:
            return [m,p]
        elif -m + p == b:
            return [-m,p]
        elif m + -p == b:
            return [m,-p]
        elif -m + -p == b:
            return [-m,-p]
    return "Aucun m et p valable."  

# Listes de Tests de Trinômes
# print(MPS(4*25, 20))
# print(MPS(16*9, 24))
# print(MPS(15*-4, -4))
# print(MPS(12, 7))
# print(MPS(-32, 4))
# print(MPS(6*8, 16))
# print(MPS(3*4, 8))
# print(MPS(12*32,56))

Articles connexes[modifier | modifier le code]

Notes et références[modifier | modifier le code]

  1. a et b « Alloprof aide aux devoirs | Alloprof », sur www.alloprof.qc.ca (consulté le )
  2. (en-US) « How To Factorise A Polynomial By Splitting The Middle Term », sur A Plus Topper, (consulté le )
  3. a et b Patureaux Marceau (Elève en classe de seconde (lycée)), « Méthode produit somme trinome (Marceau) », sur Notion (consulté le )
  4. Marceau Patureaux, Générateur de M et P pour la Méthode Somme Produit, (lire en ligne)