Une formule pour 3 inconnue ?
Résolu
Scoldt
Messages postés
48
Statut
Membre
-
Scoldt Messages postés 48 Statut Membre -
Scoldt Messages postés 48 Statut Membre -
Bonjour,
Je cherche à résoudre automatiquement un système avec trois inconnues sur Excel mais je n'ai aucune idée de la fonction à utiliser et ne sais même pas si elle existe ...
Dans mon exemple, je connais déjà le résultat.
Si le résultat est 17,76, je sais que cela correspond à la somme de trois produits ;
a * 5.8
b * 0.88
c * 3.7
Et dans cet exemple,
a = 7
b = 2
c = 0
Ce qui donne bien a* 5.8 + b * 0.88 + c * 3.7 = 17.76
Or j'aimerais donc savoir s'il y avait un moyen d'obtenir les valeurs de a, b et c automatiquement en posant le résultat ?
Et si oui, par quelle formule ?
En vous remerciant par avance ! :)
Je cherche à résoudre automatiquement un système avec trois inconnues sur Excel mais je n'ai aucune idée de la fonction à utiliser et ne sais même pas si elle existe ...
Dans mon exemple, je connais déjà le résultat.
Si le résultat est 17,76, je sais que cela correspond à la somme de trois produits ;
a * 5.8
b * 0.88
c * 3.7
Et dans cet exemple,
a = 7
b = 2
c = 0
Ce qui donne bien a* 5.8 + b * 0.88 + c * 3.7 = 17.76
Or j'aimerais donc savoir s'il y avait un moyen d'obtenir les valeurs de a, b et c automatiquement en posant le résultat ?
Et si oui, par quelle formule ?
En vous remerciant par avance ! :)
10 réponses
-
salut
Oui, si on a 3 inconnus donc il faut 3 formules
si on a x et y, z il faut:
a11*x+a12*y+a13*z=b1
a21*x+a22*y+a23*z=b2
a31*x+a32*y+a33*z=b3
comme ça on peut résoudre ce problème ou si on a déja 2 résultats pour x et y et il nous reste que z avec le coefficient bien sur. -
Merci pour votre réponse !
Mais le fait que le résultat soit connu, implique un nombre restreint de possibilités non ?
Si a, b et c sont des entiers réels, 17,76 ne peut pas être divisé par 0.88 ou 5.8 ni même 3.7 sans donner un résultat rond.
Dans mon cas, il n'y aurait donc qu'une unique possibilité (voir deux ?) avec ces trois inconnues et un résultat connu.
Certes c'est de l'arithmétique.
Sur papier je peux le résoudre, mais je ne sais pas comment tourner les formules sur Excel pour que cela fonctionne par contre .. -
Bonjour,
Ce n'est pas une question de "formule magique". c'est de l'arithmétique!
En l'état, Il y a une infinité de résultats...
Par exemple, si a=0 et c=0, il y a aussi un résultat pour b
Il manque d'autres égalités (deux). -
Bonjour,
chez moi 7*5.8 fait 40.6.
Le solveur dit plutôt 2, 7, 0 :
https://www.cjoint.com/c/CFCmb3oHg2H
Par contre il ne te diras pas si tu as plusieurs solutions, il s'arrête à la 1ère.
Il faut le relancer en lui ajoutant en contrainte $B$3 >= 3 (2 étant la valeur trouvée) pour voir qu'elle est unique.
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Euh effectivement dans l'exemple j'ai inversé le a et le b uh ...
Merci Eriiic pour la feuille mais euh .. sur Office 2013 je ne trouve pas l'onglet outils ..
J'ai repéré le bouton pour les macros mais il me demande de la créer .. -
Evidemment, il en va tout autrement si cette "équation" est assortie de 2 postulats :
1)° a, b, c : EXCLUSIVEMENT entiers positifs
2°) Résultat : EXCLUSIVEMENT = 17,76
Et si tu nous "écrivais" ta solution papier... ;)-
Juste pour info,
Tu peux appeler (et configurer) le solveur directement par macro (ou fonction) avec le code :
Sub Solveur()
'Dans le menu Outil/référence de VisualBasic,cocher la case SOLVER
'Regarder l'Aide à SOLVEROK
SolverOk SetCell:="$G$2", MaxMinVal:=3, ValueOf:="0", ByChange:="$B$3:$D$3"
SolverSolve
End Sub -
-
-
Bonjour à tous,
à défaut de formule, voici une macro type "force brute" qui sort toutes les solutions entières :
les coefficients sont à saisir en B1, D1, F1 et le total en H1
Les résultats s'affichent en ligne 4.Sub PLNE() Dim a As Integer Dim b As Integer Dim c As Integer a_1 = [$B$1] b_1 = [$D$1] c_1 = [$F$1] Total = [$H$1] a_lim = Int(Total / a_1) b_lim = Int(Total / b_1) c_lim = Int(Total / c_1) lig = 4 Range("$B$" & lig & ":$F$" & Range("$B$" & lig).End(xlDown).Row).Select Selection.ClearContents Range("$B$" & lig).Select For a = 0 To a_lim For b = 0 To b_lim If a * a_1 + b * b_1 > Total Then b = b_lim Else For c = 0 To c_lim If a * a_1 + b * b_1 + c * c_1 > Total Then c = c_lim Else If Abs(a * a_1 + b * b_1 + c * c_1 - Total) < 0.00000000000001 Then Cells(lig, 2) = a: Cells(lig, 4) = b: Cells(lig, 6) = c lig = lig + 1 End If End If Next End If Next Next End Sub
cordialement -
Alors, veuillez m'excuser pour le délai de réponse !
J'ai donc étudié attentivement les propositions de chacun ...
@ eriiic ; Effectivement j'ai trouvé, et j'ai bien les coefficients qui s'affichent.
Or, ceux-ci n'apparaissent pas comme des réels mais comme des décimals. Et dans les pages de dialogues qui s'affichent, je vous avoue ne pas trop voir où et comment modifier cela ..
Ensuite en ce qui concerne les macros .. à vrai dire je n'y comprends jamais grand chose .. j'ai tenté d'entrer la macro de JvDo, en étant attentif à ce qui était demandé, mais lorsque je fais résoudre une erreur m'indique "impossible de diviser par zéro". Ce qui est logique, certes, mais étant donné que je ne comprends pas le contenu de l'algorithme .. baaah ...
Et oui je ne suis pas un utilisateur facile ! ^^' ...
Je crois qu'après cela je vais me pencher sur des cours de codage d'algo et excel .. >< -
(je n'arrive pas à poster en commentaire, ça bug en me disant qu'il est déjà envoyé et ne s'affiche pas .. bref)
Pour l'exemple concret, ce serait ;
Je vends une quantité "a" de produit "A" au prix pièce de 5,80
Je vends une quantité "b" de produit "B", au prix pièce de 3,70
Je vends une quantité "c" de produit "C", au prix pièce de 0,88.
La somme des produits ( a*5.8 + b*3.7 + c*0.88) est connue, et est dans cet exemple ; 17,76.
Sachant que a, b et c sont des entiers, on cherche donc à connaître leur valeur.
Est-ce plus clair ainsi ?-
-
Bonsoir,
Voilà un fichier xlsm qui fait, d'après moi, le travail.
https://www.cjoint.com/c/CFExoncKufQ
Attention toutefois, pour 500.000 triplets solutions, il faut plusieurs minutes de traitements.
Cordialement
remarque : avec (a, b, c)=(1, 1, 1) et Total = 1.000 on obtient 501.501 solutions -
-
-
Bonjour
résolution d'une équation à 3 inconnues en utilisant le calcul matriciel toujours snobé bêtement par l'éducation nationale (sauf dernières nouvelles)....
https://www.cjoint.com/?3FDsy1U5FrD
-
Bonjour michel_m
Tu parles d'un système linéaire de 3 équations à 3 inconnues.
Là, il s'agit d'une équation linéaire à 3 inconnues avec 3 contraintes explicites (les inconnues sont des entiers naturels) et 3 contraintes implicites (a<=ent(total/prix_A), b<=ent(total/prix_B), c<=ent(total/prix_C)),
C'est pour cela que j'ai proposé une macro "marteau-piqueur" qui teste toutes les possibilités de triplets de nombres entiers (a,b,c) dans le domaine des contraintes [0, ent(total/prix_A)] x [0, ent(total/prix_B)] x [0, ent(total/prix_C)] .
Pour l'éducation nationale, je n'ai pas le souvenir d'une mise de côté du calcul matriciel.
A mon époque, ça commençait en 2nde, gentiment jusqu'en terminale; ça devenait de l'algèbre linéaire "abstraite" jusqu'en licence et ça prenait du sens en devenant "appliqué" partout ensuite.
Pour ce qui est de maintenant, je ne sais pas.
Cordialement -
-
-