Bonjour à tous;
j'essaye de programmer une fonction qui me donne toutes les solutions entières d'une équation à plusieurs variables entières
j'espère que quelqu'un pourra me donner un coup de main
Merci d'avance.
Bonjour à tous;
j'essaye de programmer une fonction qui me donne toutes les solutions entières d'une équation à plusieurs variables entières
j'espère que quelqu'un pourra me donner un coup de main
Merci d'avance.
Qu'as-tu essayé jusqu'à présent ?
Autre question: comment fais-tu sans ordinateur?
Merci pour vos réponses; alors pour la question de Matt_Houston, j'ai pensé à résoudre un système d'équation à plusieurs variables car normalement cette étape contient deux sommes dont une variable est commune exemple :
x1+x2+x3+x4+x5=7
x2+x6+x7+x8+x9=10 normalement y a une infinité de solution si on travaille sur R mais pour mon cas je travaille sur N.
sinon sans ordinateur, pour la question de ternel, je vais par exemple :
7 0 0 0 0
6 1 0 0 0
6 0 1 0 0
6 0 0 1 0
6 0 0 0 1
5 2 0 0 0
5 0 2 0 0
....
Ma première idée était de travailler sur la distribution de la somme de cette façon mais je n'aurai pas toute les combinaisons le problème principale et comment générer toutes les solutions possibles, par exemple j'aurai pas 5 1 1 0 0 j'ai pensé même à la récursivité mais franchement j'ai pas su comment l'appliquer pour cette exemple.
Tu as un ensemble V de variables, avec des domaines de valeurs, tu dois trouver toutes les combinaisons qui vérifie un ensemble C de contraintes.
Il n'y a que deux manières de procéder: soit tu sais construire la liste des solutions en passant directement d'une quelconque à la suivante, soit ce n'est pas le cas.
Si tu le sais, il suffit de coder l'opération "solution suivante".
Sinon, il te faudra parcourir l'ensemble des possibilités en vérifiant si chacune est une solution.
Visiblement, tu es dans la seconde solution.
Si tu as la garantie que les variables sont toutes positives, tu peux trouver une valeur maximale à chacune.
Si tu sait qu'elles sont même strictement positives, tu peux aller encore plus loin.
avec x1+x2+x3+x4+x5=7:
si pour tout i, xi >= 0, tu peux déduire que pour i dans {1,2,3,4,5}, xi <= 7.
si pour tout i, xi > 0, tu peux déduire que pour i dans {1,2,3,4,5}, xi <= 7 - 5 = 2.
tu as aussi toutes les équations sous-jacentes, telles que:
- x2 + x3 + x4 + x5 = 7 - x1
- x3 + x4 + x5 = 7 - x1 - x2
- x4 + x5 = 7 - x1 - x2 - x3
- x5 = 7 - x1 - x2 - x3 - x4
Cela signifie que tu n'as pas besoin de tester toutes les combinaisons. (cas positif)
A priori, il y a des techniques mathématiques d'optimisation (à base de matrice, je crois). Cherche "système d'équations linéaires"pour x1 de 0 à 7 pour x2 de 0 à 7 - x1 pour x3 de 0 à 7 - x1 - x2 pour x4 de 0 à 7 - x1 - x2 - x3 une solution est {x1, x2, x3, x4, (7 - x1 - x2 - x3 - x4)}
Merci d'avoir détaillé votre réponse mais le problème est la généralisation c'est à dire pour N variables entières et pour n'importe quelle somme donc pour N boucles ce n'est pas évident
Pour que les choses soient bien claires, on parle ici d'équations à plusieurs inconnues, pas d'équations polynomiales ?
Non parce que « x2+x6+x7+x8+x9 » peut prêter à confusion, peut-être faudrait-il écrire « a + b + c + ... » ?![]()
Partager