Inscription / Connexion Nouveau Sujet
Niveau Loisir
Partager :

Un énoncé ancien qui casse la tête

Posté par
vinc76
05-04-24 à 10:54

Bonjour ,

Je viens vers vous car j'ai trouvé dans un vieux livre d'algèbre un problème que j'ai voulu résoudre , mais cela fait plusieurs jours que je bloque sur la finalisation du problème. J'ai trouvé une solution mais j'ai l'impression que c'est juste de la chance car je n'arrive pas à trouver d'autres solutions censées fonctionner.
Je vous présente l'énoncé :

Une fermière achète des oies , des dindons , des poulets et des pigeons. Elle achète en tout 76 animaux. Elle paye les oies 2 euros pièce , les dindons 1 euro et 5 centimes pièce , les poulets 70 centimes l'unité et enfin les pigeons 40 centimes d'euros l'unité.
Sa facture totale est de 70 euros et 70 centimes.
Question : Quel est le nombre d'animaux de chaque espèce qu'elle a acheté ?

Je vous montre mon raisonnement :

Soit x le nombre d'oies , y le nombre de dindons , z le nombre de poulets et t le nombre de pigeons.
On a :
x+y+z+t = 76 (E1)
2x + 1.05y+0.7z + 0.4t = 70.7 (E2)

Je multiplie E2 par 140 pour obtenir des nombres entiers. J'exprime avec E1 x en fonction de y , z et t. Puis je remplace x dans E2 par cette expression avec d'obtenir une équation avec trois inconnues.
J'obtiens :

-19y-26z-32t = - 1626

Nous avons une équation diophantienne que j'ai réussi à résoudre ( Avec k et m des paramètres entiers relatifs)
Les solutions sont :
y= 962-26k-1184m
z= -702+19k+864m
t = 50 +m
On en déduit la valeur de x , x= -234+319m+7k

C'est ensuite que je bloque énormément. En effet je ne sais vraiment comment m'y prendre pour respecter la condition de 76 animaux au total. J'ai voulu résoudre un système d'inéquations du style :

0< -234+319m+7k < 74
0< 962-26k-1184m<74
0< -702+19k+864m<74
0< 50 + m < 74

74 car maximum il me faut 73 animaux d'une espèce pour en avoir un de chaque des trois autres mais ce système ne fonctionne pas. Je me suis dis que ça n'allait pas car on autorise à avoir 73 au maximum dans chaque espèce ce qui n'est pas possible si on a ce nombre partout. Intuitivement je me suis dis qu'il fallait que je fasse en sorte que la somme de ma borne supérieure doit etre égale à 76 mais après comment gérer tous les cas possibles avec la valeur de m variable etc , c'est pas simple.
En tâtonnant et en posant les quatre inéquations précédentes avec 19 à la place de 73 et en se prenant m= -31 , celà me donne le quadruplet suivant qui fonctionne :
13 oies
18 dindons
26 poulets
19 pigeons

Mais ce que je ne comprends pas c'est qu'avec d'autres valeurs de m celà ne fonctionne pas ce qui est bizarre.
Je suis perdu

Merci du soutien si quelqu'un connait la mécanique de ce genre de problème

Posté par
Ulmiere
re : Un énoncé ancien qui casse la tête 05-04-24 à 13:19

Tu veux une solution théorique ou un code qui crache toutes les solutions ?

Ton équation diophantienne a effectivement une infinité de solutions et c'est parfaitement normal. Si tu imposes en plus les quatre inégalités que tu as écrites, comme elles sont bilatérales, m et k deviennent bornés et donc il y a une quantitié finie de solutions, éventuellement nulle si les inéquations se contredisent (ce n'est pas le cas, puisque tu exhibé une solution tout à la fin de ton message précédent). Qu'est-ce qui te gène exactement ?

Posté par
Ulmiere
re : Un énoncé ancien qui casse la tête 05-04-24 à 15:12

Voilà un petit code Python (c'est cadeau ) qui fait le boulot et affiche proprement les résultats

(https://gist.github.com/rust-play/f73e7e9822d6aca30eaf967f095c0a33)


Ne prête pas trop attention aux 76 premières lignes,  c'est juste de la mise en forme. Ni au fait que github dit que c'est du rust, ce n'en est pas

J'utilise z3, qui est un solveur SMT bien pratique, mais tu peux facilement adapter les dernières lignes pour utiliser sympy si tu préfères.

Posté par
carpediem
re : Un énoncé ancien qui casse la tête 05-04-24 à 15:14

salut

vinc76 @ 05-04-2024 à 10:54


x + y + z + t = 76 (E1)
2x + 1.05y + 0.7z + 0.4t = 70.7 (E2)

Je multiplie E2 par 140 pour obtenir des nombres entiers.
pourquoi multiplier par 140 alors que multiplier par 20 suffit ?

(E2) devient alors : 40x + 21y + 14z + 8t = 1414

et alors (E2) - 8 (E1) donne 32x + 13y + 6z = 806  (E3)

ensuite il n'y a pas besoin de paramètres k et m puisque tu as déjà les inconnues x, y, z et t qui sont comprises entre 0 et 76

en exprimant alors z et t en fonction de x et y (parce que les coefficients de x et y sont les plus gros) on a alors :

6z = 808 - 32x - 13y avec x < 806/32 < 26 et y < 806/13 = 62 (pour que z > 0)

cela donne malheureusement encore beaucoup de solutions ...

mais on peut remarquer que (E3) implique que y est pair et on divise par 2 le nombre de tests

enfin (E3) s'écrit encore 6(5x + 2y + z) + 2x + y = 806 = 804 +2

et donc modulo 6 : 2x + y = 4 qui diminue encore le nombre de solutions ...

et on continue ainsi avec des conditions de plus en plus restrictives (dans la mesure du possible)

par exemple (E1) nous dit que x, y, z et t ont même parité ou deux sont pairs et deux sont impairs et puisque y est pair, au moins deux sont pairs ...

Posté par
candide2
re : Un énoncé ancien qui casse la tête 05-04-24 à 18:43

Bonjour,

Ce problème n'a rien d'intéressant.

Tel quel, il y a 57 quadruplets qui satisfont l'énoncé.
... Ce qui rend ce problème inintéressant pour l'attaquer autrement que par un mini programme informatique.

On peut certes diminuer le nombre de cas à étudier par la parité et d'autres astuces, mais le nombre de solutions possibles reste beaucoup trop grand.

Il faudrait quelques conditions supplémentaires dans l'énoncé pour ramener le nombre de solutions à un nombre décent... dans le cas contraire, mettre cet énoncé à la corbeille, c'est tout ce qu'il mérite.

Posté par
Ulmiere
re : Un énoncé ancien qui casse la tête 05-04-24 à 23:45

Le programme que j'ai donné plus haut en donne en fait 79

Posté par
candide2
re : Un énoncé ancien qui casse la tête 06-04-24 à 09:51

79 ... parce que tu as comptabilisé ceux avec des 0.

Mais la phrase de l'énoncé :
"Une fermière achète des oies , des dindons , des poulets et des pigeons." implique qu'il y ait les 4 types d'animaux présents ... et donc aucun au nombre 0.

Posté par
candide2
re : Un énoncé ancien qui casse la tête 06-04-24 à 10:12

En fait, en empêchant les 0, c'est 70 cas qu'il y a et pas 57.

Citation :

cmpt = 0
for x in range (1,77):
   for y in range (1,77):
     for z in range (1,77):
       for t in range (1,77):
         if (x+y+z+t == 76):
           if (200*x+105*y+70*z+40*t == 7070):
             print(x,y,z,t)
             cmpt = cmpt+1
print(cmpt)

Posté par
Sylvieg Moderateur
re : Un énoncé ancien qui casse la tête 06-04-24 à 11:06

Bonjour,

Citation :
mettre cet énoncé à la corbeille, c'est tout ce qu'il mérite
Au vu des réponses qu'il a suscitées, il mérite un peu mieux
Changer la question " Quel est le nombre d'animaux de chaque espèce qu'elle a acheté ? " en " Quelles sont les possibilités pour le nombre d'animaux de chaque espèce qu'elle a acheté ? "

Posté par
carpediem
re : Un énoncé ancien qui casse la tête 06-04-24 à 11:30

oui il n'en reste pas moins qu'il sera difficile (mais pas impossible) d'arriver à ces conditions nécessaires et suffisantes donnant exactement les ... solutions comme tu le proposes.

c'est un jeu intéressant mais pour une recherche de solutions directes et rapides il n'en reste pas moins qu'un script est le plus efficace.

Posté par
larrech
re : Un énoncé ancien qui casse la tête 06-04-24 à 11:51

Bonjour,

Souvent, dans ce genre d'exercice, afin, comme il est recommandé aujourd'hui de croiser les compétences, on indique le nombre de pattes, ce qui permet d'associer  maths et  sciences naturelles. Dans le cas présent, évidemment...

Posté par
thetapinch27
re : Un énoncé ancien qui casse la tête 06-04-24 à 17:45

Bonjour à tous,

Le pb se résout bien à la main avec un petit peu de calcul sur les entiers.

Je reprends ici ce qu'a écrit carpediem :
40x + 21y + 14z + 8t = 1414 conduit à
32x + 13y + 6z = 806 = 2*13*31
L'étude modulo 13 montre que 6(x+z) 0 [13]
Et que donc 13 | (x+z).

Par ailleurs, si on fait (E1)-21(E2) on aboutit à :
19x - 7z - 13t = -182 = -2*7*13
L'étude modulo 13 montre que 6x-z0 [13] donc 13|6x-z ce qui revient à écrire 13|6x+12z donc 13|x+2z

En combinant ces deux résultats on montre que 13|x et 13|z
Puis on déduit de (E1) que y+t-2 [13] car 76=6*13-2

Notons x=13x' ; z=13z' et y+t=13*u'-2
L'équation (E1) devient:
x'+z'+u'=6 avec les conditions
x', y', u'1
x', y', u'4

En injectant ces notations dans (E2) et en simplifiant par 13 on aboutit à :
40x'+14z'+8u'+y=110, que l'on peut réécrire en éliminant u' comme
32x'+6z'+y=110-8*6=62,
sachant que chaque inconnue vaut au minimum 1.
On voit donc que x' ne peut valoir que 1 (sinon c'est trop grand).
Donc x=13.

Ainsi, il reste à résoudre :
6z'+y = 30, et
z'+u'=5
donc z'=5-u', que l'on injecte dans l'équation du dessus, ce qui donne : y=6u'

Ainsi les solutions au pb initial sont de la forme:
(x,y,z,t)=(13, 6u', 13*(5-u'), 7u'-2) pour u' variant entre 1 et 4, et on réalise que parmi les 4, u'=3 est le seul qui satisfait la contrainte sur le prix.

Posté par
thetapinch27
re : Un énoncé ancien qui casse la tête 06-04-24 à 18:24

Je viens de m'apercevoir d'une coquille. On ne peut pas affirmer que 13|x et 13|z mais seulement qu'il divise la somme x+z.

Citation :
Par ailleurs, si on fait (E1)-21(E2) on aboutit à :
19x - 7z - 13t = -182 = -2*7*13
L'étude modulo 13 montre que 6x-z=0 [13] donc 13|6x-z ce qui revient à écrire 13|6x+12z donc 13|x+2z


En fait c'est :
L'étude modulo 13 montre que 6x-7z [13] donc 13|6x-7z ce qui revient à écrire 13|6x+6z donc 13|x+z
==> ce qui n'ajoute aucune information, et ce qui ne permet pas de dire que 13|x et 13|z mais seulement que 13|x+z

Posté par
candide2
re : Un énoncé ancien qui casse la tête 06-04-24 à 19:12

Bonjour,

Je persiste à penser que ce problème est sans le moindre intérêt.

Même en le modifiant par :
"Changer la question " Quel est le nombre d'animaux de chaque espèce qu'elle a acheté ? " en " Quelles sont les possibilités pour le nombre d'animaux de chaque espèce qu'elle a acheté ? "

Il y a 70 quadruplets solutions et rien de vraiment intelligent qui permet de les trouver tous ou de simplement les dénombrer ... si ce n'est un mini programme informatique.
Alors où est l'intérêt mathématique ?

Mais chacun peut en penser ce qu'il veut...
Ou trouver une  méthode intelligente qui en vient à bout par des raisonnements courts et subtils si possible.

  

Posté par
thetapinch27
re : Un énoncé ancien qui casse la tête 06-04-24 à 20:19

Re-Bonjour,

@candide2, c'est peut-être une déformation professionnelle de ma part, mais les problèmes d'ingénierie ressemblent bien plus souvent à ce genre de choses qu'à des problèmes qui se résolvent de manière élégante et subtile. Il est courant d'avoir plein de manières d'aboutir à un résultat satisfaisant, voire d'avoir des problèmes mal posés voire même de ne pas avoir toute l'information. Donc ça peut avoir un certain mérite ; mais peut-être pas dans un forum de math certes.

Pour en revenir au pb je n'ai pas pu tiré davantage d'information avec les congruences (voir mon erreur plus haut), donc voici une méthode qui utilise une résolution de système à 2 paramètres  :

Notons
x+z=13v' et
y+t=13u'-2.

Et on note que u'+v'=6

On injecte dans (E2) et on obtient :
26x + 14*13*v' + 8*13*u' + 13y= 110*13, soit
2x+14v'+8u'+y=110

Donc y=2y' donc on réduit encore un peu le problème :
x+7v'+4u'+y'=55 avec v'+u'=6 donc,
x+3v'+y'=31


D'où :
x+z=13v'
x+y'=31-3v'
y=2y'
y+t=13u'-2
u'+v'=6

Donc en éliminant u' et y
x=31-(3v'+y')
x+z=13v'
t=13*(6-v')-2=76-(13v'+2y')

Les solutions seront toujours des nombres entiers (ce que l'on veut). J'aboutis à:

x=31- (3v'+y')
y=2y'
z=y'+16v'-31
t=76-(13v'+2y')

où l'on peut choisir v' librement entre 1 et 5, et où y' est choisi librement mais sans donner de solution négative ou nulle, c'est à dire que y' est choisi dans l'intervalle entier [31-16v'; min(38-6.5v', 31-3v') ]

Quelques solutions vérifiées
(v',y')=(1,16) => (12,32,1,31)
(v',y')=(1,17) =>(11,34,2,29)
(v',y')=(2,1) =>(24, 2, 2, 48)
...

Posté par
candide2
re : Un énoncé ancien qui casse la tête 07-04-24 à 11:18

Bonjour,

"Donc ça peut avoir un certain mérite ; mais peut-être pas dans un forum de math certes. "

Et bien voila, là on est d'accord.

Si on doit résoudre un tel type d'exercice comme "ingénieur" dans le cadre de son boulot. Time is money et tout qui tentera de le résoudre autrement que par 10 lignes de programme informatique avec résultats immédiats sera "remercié".

Et dans le cadre "Enseignement",  on peut faire de jolis raisonnements qui aboutissent par exemple à tes propositions ...
qui ne permettent pas vraiment de trouver rapidement toutes les solutions, ni même d'en trouver aisément le nombre...

Ce qui me conforte dans mon opinion, un tel exercice posé dans l'enseignement (avec interdiction d'utiliser l'informatique) ne mérite qu'une place ... dans la corbeille.

Chacun son avis.

Posté par
carpediem
re : Un énoncé ancien qui casse la tête 07-04-24 à 11:36

effectivement ...

en math expertes cet exercice a un intérêt pour déterminer des propriétés des solutions, travailler la divisibilité et autres ... donc manipuler et travailler des propriétés du cours !!

l'objectif n'étant pas nécessairement de résoudre ce pb ... pénible ....

Posté par
candide2
re : Un énoncé ancien qui casse la tête 07-04-24 à 12:55

Rebonjour,

On peut quant même dénombrer les solutions et les trouver ... si on le veut vraiment.

Je propose les 5 familles de quadruplets solutions :

a) x = 28-y' ; y = 2y' ; z = y' - 15 ; t = 63-2y'  avec 16 <= y' <= 27 ----> 12 quadruplets solutions.
b) x = 25-y' ; y = 2y' ; z = y' + 1 ; t = 50-2y'  avec 1 <= y' <= 24 ----> 24 quadruplets solutions.
c) x = 22-y' ; y = 2y' ; z = y' + 17 ; t = 37-2y'  avec 1 <= y' <= 18 ----> 18 quadruplets solutions.
d) x = 19-y' ; y = 2y' ; z = y' + 33 ; t = 24-2y'  avec 1 <= y' <= 11 ----> 11 quadruplets solutions.
e) x = 16-y' ; y = 2y' ; z = y' + 49 ; t = 11-2y'  avec 1 <= y' <= 5 ----> 5 quadruplets solutions.

Soit au total : 12+24+18+11+5 = 70 quadruplets solutions qu'on trouve à partir du tableau ci-avant.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1682 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !