Partage
  • Partager sur Facebook
  • Partager sur Twitter

Brute force equaton solver

Sujet résolu
    5 avril 2020 à 19:50:01

    Bonjour,

    J'essaie de faire un programme qui résout cette équation : a**3 + b**3 = c**3 et ensuite je chronomètre le temps que ca a prit pour trouver.

    Mais quand j'executer c**3 est toujours inférieur à a**3 + b**3. Je penses que le problème est au niveau de  quand on définit la variable root : root = math.pow(sum,0.2)


    from array import *
    import math
    import time

    #PYTHON, BRUTEFORCE : ~30 s
    millis1 = int(round(time.time() * 1000))
    keep_searching = True
    a=1
    result=""
    while(keep_searching):
        a+=1
        for b in range(1,a+1):
                    sum=math.pow(a,3)+math.pow(b,3)
                    root = math.pow(sum,0.2)
                    e = round(root)
                    e5 = math.pow(e,3)
                    if(e5==sum):
                        result="{}^3 + {}^3 = {}^3".format(int(a),int(b), int(e))
                        keep_searching = False
                        millis2 = int(round(time.time() * 1000))

    print(result)
    print("Found solution in {} ms".format(millis2-millis1))
    Merci j'espere que vous pourrez m'aider.
    • Partager sur Facebook
    • Partager sur Twitter
      5 avril 2020 à 22:16:00

      Utilises Sympy, t'embêtes pas...
      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        5 avril 2020 à 22:35:48

        Oui mais sympy ne prendre pas les équations de type a + 2 = 3 - a ca prend seulement les inéquations je crois et à mon niveau de math(3eme) je ne sais pas comment passer de a**3 + b**3 = c**3   inéquation c'est pour cela que j'utilise une bruteforce

        • Partager sur Facebook
        • Partager sur Twitter
          5 avril 2020 à 23:16:20

          Je sais pas, je connais pas assez Sympy, je suis assez surpris vu sa réputation mais je te fais confiance si t'as déjà bien cherché.

          Par contre on peut utiliser l'API de Wolfram Alpha qui est sympa

          Mais pour toi l'utilisation de son API me semble un peu complexe quand même...

          • Partager sur Facebook
          • Partager sur Twitter

          Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
          La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

            6 avril 2020 à 8:52:29

            h27D3 a écrit:

            Bonjour,

            J'essaie de faire un programme qui résout cette équation : a**3 + b**3 = c**3 et ensuite je chronomètre le temps que ca a prit pour trouver.

            Mais quand j'executer c**3 est toujours inférieur à a**3 + b**3. Je penses que le problème est au niveau de  quand on définit la variable root : root = math.pow(sum,0.2)

            Donne ton énoncé précis qu'on t' a donné puisque tu es en collège en 3e dis-tu.

            Tu sembles chercher toutes les solutions entières de l'équation a**3+b**3=c**3. D'abord, cette  équation est bien connue (équation de Fermat) et n'a aucun solution entière véritable (les seules solutions sont quand a, b ou c vaut 0) donc je vois pas ce que tu peux chercher.

            D'autre part, ta recherche souffre de multiples problèmes. Mais déjà, tu écris

            root = math.pow(sum,0.2)

            et la ligne n'a aucun rapport avec ton problème (c'est la racine 5e de sum).

            -
            Edité par PascalOrtiz 6 avril 2020 à 8:54:45

            • Partager sur Facebook
            • Partager sur Twitter
              6 avril 2020 à 9:46:20

              Bonjour merci de ta réponse voici l'énoncé :" Existe-t-il un triangle ABC rectangle en A tel que BC3 est égal à AB3 + AC3 ?"
              • Partager sur Facebook
              • Partager sur Twitter
                6 avril 2020 à 10:40:43

                • Que veut dire BC3 ? C'est BC*BC*BC ?
                • Il s'agit  de trouver des côtés de longueur un nombre entier ?
                • Je ne vois pas le rapport avec la programmation en Python. C'est un problème de math, de niveau lycée, pas de niveau 3e.
                • Partager sur Facebook
                • Partager sur Twitter
                  6 avril 2020 à 10:59:43

                  BC puissance 3 = AB puissance 3 +AC puissance 3

                  BC*BC*BC = AB*AB*AB + AC*AC*AC

                  -
                  Edité par h27D3 6 avril 2020 à 11:00:43

                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 avril 2020 à 12:02:07

                    h27D3 a écrit:

                    BC puissance 3 = AB puissance 3 +AC puissance 3

                    BC*BC*BC = AB*AB*AB + AC*AC*AC


                    Très bien, tu réponds à mon premier point. Et les deux autres ?
                    • Partager sur Facebook
                    • Partager sur Twitter
                      6 avril 2020 à 12:06:37

                      Il faut dire si un triangle peut être rectangle avec la formule ci-dessus et si oui le prouver avec des nombres entiers ou décimaux

                      Vue que je n'ai pas les compétences de math de niveau lycée j'ai essayer de résoudre l'équation avec un script qui essaye toute les possibilités possible.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        6 avril 2020 à 12:12:25

                        h27D3 a écrit:

                        Vue que je n'ai pas les compétences de math de niveau lycée j'ai essayer de résoudre l'équation avec un script qui essaye toute les possibilités possible.


                        Toutes les possibilités ? Mais comment est-ce possible, tu as une infinité de nombres entiers, comment vas-tu pouvoir les tester ? Tu pourrais avoir des côtés a, b et c extrêmement grands qui seraient solutions, comment vas tu les passer en revue si tu dois tout essayer ?

                        Donc, si je comprends bien, en fait c'est à la base un problème de math ? de 3e ?

                        • Partager sur Facebook
                        • Partager sur Twitter
                          6 avril 2020 à 12:19:59

                          Quand je dit toutes les possibiltés ces une facon de parler, je compte laisser tourner le programme pendant 1-2 heures. Et le prof a dit que c'était quasiment impossible que nous trouvons mais j'essaye quand même.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            6 avril 2020 à 13:06:39

                            Mais il pourrait y avoir des solutions même si ton programme tourne 42 millénaires sans rien trouver.

                            Bon de toutes façons, inutile de perdre son temps, ton problème n'admet aucune solution. Tu dois trouver des nombres réels positifs x, y et z qui vérifient à la fois x²+y²=z² et x³+y³=z³. En divisant par z² et z³, tu te ramènes à u²+v²=1 et u³+v³=1 (on a u=x/z et v=y/z) ce qui n'est possible que si u ou v est nul et donc x ou y est nul. Au total, tu n'a spas de vrai triangle qui satisfasse tes deux contraintes.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              6 avril 2020 à 13:15:23

                              Merci pour ta réponse est ce que vous connaissez un site ou il y un cour sur le calcul littérale avec lequel je pourrais comprendre ton explication. Car je n'ai toujours pas vue les les équations du second degrés donc je penses que tu comprends pourquoi c'est difficile pour moi de comprendre ta reponses.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                6 avril 2020 à 13:34:38

                                h27D3 a écrit:

                                Merci pour ta réponse est ce que vous connaissez un site ou il y un cour sur le calcul littérale avec lequel je pourrais comprendre ton explication. Car je n'ai toujours pas vue les les équations du second degrés donc je penses que tu comprends pourquoi c'est difficile pour moi de comprendre ta reponses.


                                Ça n'a pas de rapport avec les équations du second degré et ce n'est pas seulement du calcul littéral. Je comprends parfaitement que ma réponse ne te soit pas compréhensible mais franchement ce n'est pas du niveau 3e et même en lycée, je me demande quel pourcentage d'élèves sauraient résoudre  le système x²+y²=z² et x³+y³=z³. Après, je crois qu'il y a un forum de math sur ce site.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  6 avril 2020 à 13:48:47

                                  Bonjour,

                                  EDIT: Pascal a tout dit

                                  -
                                  Edité par KoaTao 6 avril 2020 à 14:56:24

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    6 avril 2020 à 18:18:44

                                    Bonjour,

                                    Edit : KoaTao  tout résumé

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      6 avril 2020 à 18:40:28

                                      On peut le faire avec un peu de logique. On a x³ + y³ = z³ et x² + y² = z². Donc on a x³ + y³ = z³ = (x² + y²)z = x²z + y²z. z est le plus grand côté du triangle, donc z > x et z > y (sinon x = y = z = 0). Donc x²z + y²z > x³ + y³. Mais ces deux données sont égales et sont égales à z³. Donc x = y = z = 0.

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                                        6 avril 2020 à 21:14:17

                                        yo@n97one a écrit:

                                        On peut le faire avec un peu de logique. On a x³ + y³ = z³ et x² + y² = z². Donc on a x³ + y³ = z³ = (x² + y²)z = x²z + y²z. z est le plus grand côté du triangle, donc z > x et z > y (sinon x = y = z = 0). Donc x²z + y²z > x³ + y³. Mais ces deux données sont égales et sont égales à z³. Donc x = y = z = 0.


                                        Tu n'aurais pas oublié des solutions ?

                                        -
                                        Edité par PascalOrtiz 6 avril 2020 à 21:14:49

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          6 avril 2020 à 21:37:45

                                          Effectivement, je n'ai pas donné tous les autres triangles plats avec A = B et C un autre point. Ça m'apprendra à écrire sans y réfléchir plus que ça. Merci pour la remarque :)

                                          -
                                          Edité par yo@n97one 6 avril 2020 à 21:38:36

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Tutoriel Ruby - Bon tutoriel C - Tutoriel SDL 2 - Python avancé - Faîtes un zeste, devenez des zesteurs
                                            6 avril 2020 à 21:47:42

                                            yo@n97one a écrit:

                                            Effectivement, je n'ai pas donné tous les autres triangles plats avec A = B et C un autre point.


                                            Tout à fait. Ça se voyait aussi avec l'équation en u, v plus haut : u²+v²=1 est le cercle trigo et u³+v³=1 est une astroïde qui se coupent aux quatre points cardinaux. On pouvait aussi factoriser :

                                            sage: var("x y")
                                            (x, y)
                                            sage: factor ((x**2+y**2)**3 - (x**3+y**3)**2)
                                            (3*x^2 - 2*x*y + 3*y^2)*x^2*y^2
                                            
                                            
                                            

                                            ce qui laisse penser qu'il doit y avoir des solutions complexes non triviales. Mais là on s'éloigne :)

                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            Brute force equaton solver

                                            × 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