Trouve le ratio pour mélanger un ingrédient bon marché et un ingrédient cher (ou une concentration faible et élevée) pour atteindre une valeur cible, plus la quantité exacte de chacun. Calculateur d'alligation alternatif gratuit avec un diagramme croisé travaillé.
Ce calculateur vous aide à résoudre des problèmes mathématiques d'alliage. Entrez les prix des ingrédients moins chers et plus chers, ainsi que le prix du mélange souhaité. Le calculateur déterminera le ratio selon lequel les ingrédients doivent être mélangés.
Tu as deux choses de valeur différente — une bon marché et une chère — et tu veux les mélanger pour obtenir un mélange à une valeur cible entre les deux. L'alligation te dit combien de chacune utiliser.
Pense à une balançoire. La valeur cible est le pivot. L'ingrédient dont la valeur est loin de la cible doit être en petite quantité, et celui proche de la cible doit être en grande quantité, pour que les deux côtés s'équilibrent. L'alligation est juste l'arithmétique de cet équilibre.
Saisis trois nombres — la valeur moins chère, la valeur plus chère et la cible — et l'outil te donne :
« Valeur » peut être un prix, un pourcentage de force ou une concentration (%, mg/mL, p/v) — n'importe quoi mesuré sur une échelle cohérente.
Avec une valeur moins chère C, une valeur plus chère D et une valeur de mélange cible M où C < M < D :
Les parties de chaque ingrédient proviennent de la différence opposée — plus la cible est éloignée d'un ingrédient, plus tu as besoin de l'autre ingrédient. Si tu connais aussi la quantité totale Q :
La façon classique de présenter cela est la « croix » : place les deux valeurs d'ingrédient à gauche, la cible au milieu, et soustrais le long de chaque diagonale. Chaque différence aboutit au coin opposé et devient les parties de cet ingrédient.
1 Dearer (D) ───────┐ ┌─────── (M − C) = dearer parts
2 ╲ ╱
3 Target (M)
4 ╱ ╲
5 Cheaper (C) ───────┘ └─────── (D − M) = cheaper parts
6Mélanger un ingrédient à 10 pour vendre à 20$ :
Parties égales. Pour 100 unités au total, c'est 50 du moins cher et 50 du plus cher — et la valeur du mélange est exactement 20 et le ratio devient 5 : 15 = 1 : 3 : plus la cible est proche de la valeur plus chère, plus tu as besoin d'ingrédient plus cher.
Les deux sont inverses l'un de l'autre, ce qui est un bon moyen de vérifier ton travail : repose les quantités que cet outil te donne dans une moyenne pondérée et tu devrais atteindre ta cible.
Parce que la règle ne nécessite qu'une seule valeur sur une échelle cohérente, les trois mêmes entrées couvrent tous ces cas.
Les entrées se synchronisent avec l'URL de la page, tu peux donc créer un signet ou partager une configuration exacte. La cible doit se situer strictement entre les deux valeurs d'ingrédient — sinon, aucun mélange des deux ne peut l'atteindre, et l'outil te le dit.
Chaque extrait prend la valeur moins chère c, la valeur plus chère d, la cible m et la quantité totale q, et retourne les deux parties et les deux quantités.
En supposant que C2 = moins cher, D2 = plus cher, M2 = cible, Q2 = quantité totale :
1=D2-M2 ' cheaper parts (D − M)
2=M2-C2 ' dearer parts (M − C)
3=(D2-M2)/((D2-M2)+(M2-C2))*Q2 ' cheaper amount
4=(M2-C2)/((D2-M2)+(M2-C2))*Q2 ' dearer amount
51def alligation(c, d, m, q=None):
2 if not (c < m < d):
3 raise ValueError("need cheaper < target < dearer")
4 cheaper_parts, dearer_parts = d - m, m - c
5 total = cheaper_parts + dearer_parts
6 if q is None:
7 return cheaper_parts, dearer_parts
8 return cheaper_parts / total * q, dearer_parts / total * q
91function alligation(c, d, m, q) {
2 if (!(c < m && m < d)) throw new Error("need cheaper < target < dearer");
3 const cheaper = d - m, dearer = m - c, total = cheaper + dearer;
4 return q == null
5 ? { cheaper, dearer }
6 : { cheaperAmount: (cheaper / total) * q, dearerAmount: (dearer / total) * q };
7}
81double[] alligation(double c, double d, double m, double q) {
2 if (!(c < m && m < d)) throw new IllegalArgumentException("need c < m < d");
3 double cheaper = d - m, dearer = m - c, total = cheaper + dearer;
4 return new double[] { cheaper / total * q, dearer / total * q };
5}
61(double cheaper, double dearer) Alligation(double c, double d, double m, double q)
2{
3 if (!(c < m && m < d)) throw new ArgumentException("need c < m < d");
4 double cp = d - m, dp = m - c, total = cp + dp;
5 return (cp / total * q, dp / total * q);
6}
71#include <stdexcept>
2#include <utility>
3std::pair<double, double> alligation(double c, double d, double m, double q) {
4 if (!(c < m && m < d)) throw std::invalid_argument("need c < m < d");
5 double cheaper = d - m, dearer = m - c, total = cheaper + dearer;
6 return { cheaper / total * q, dearer / total * q };
7}
81func Alligation(c, d, m, q float64) (float64, float64, error) {
2 if !(c < m && m < d) {
3 return 0, 0, errors.New("need c < m < d")
4 }
5 cheaper, dearer := d-m, m-c
6 total := cheaper + dearer
7 return cheaper / total * q, dearer / total * q, nil
8}
91fn alligation(c: f64, d: f64, m: f64, q: f64) -> Option<(f64, f64)> {
2 if !(c < m && m < d) { return None; }
3 let (cheaper, dearer) = (d - m, m - c);
4 let total = cheaper + dearer;
5 Some((cheaper / total * q, dearer / total * q))
6}
71function alligation($c, $d, $m, $q) {
2 if (!($c < $m && $m < $d)) throw new InvalidArgumentException('need c < m < d');
3 $cheaper = $d - $m; $dearer = $m - $c; $total = $cheaper + $dearer;
4 return [$cheaper / $total * $q, $dearer / $total * $q];
5}
61def alligation(c, d, m, q)
2 raise ArgumentError, "need c < m < d" unless c < m && m < d
3 cheaper, dearer = d - m, m - c
4 total = cheaper + dearer
5 [cheaper / total * q, dearer / total * q]
6end
71alligation <- function(c, d, m, q) {
2 stopifnot(c < m, m < d)
3 cheaper <- d - m; dearer <- m - c; total <- cheaper + dearer
4 c(cheaper = cheaper / total * q, dearer = dearer / total * q)
5}
6Que faire si la cible n'est pas entre les deux valeurs ? Alors aucun mélange des deux ne peut l'atteindre — un mélange d'un article à 10 aboutit toujours entre 10. L'outil signale cela au lieu de retourner un ratio faux.
L'unité a-t-elle de l'importance ? Non. Le ratio dépend uniquement des différences sur une échelle cohérente, donc les prix, pourcentages et mg/mL fonctionnent tous — garde simplement les trois entrées dans la même unité.
Puis-je l'utiliser pour trois ingrédients ou plus ? Cet outil traite le cas à deux ingrédients. Les problèmes avec trois composants ou plus ont de nombreuses réponses valides et sont généralement résolus en appairant les ingrédients ou avec des équations linéaires.
L'alligation est-elle la même chose qu'une moyenne pondérée ? Ce sont des inverses. Une moyenne pondérée (alligation médial) transforme les quantités en valeur de mélange ; l'alligation alternatif transforme une valeur cible en quantités.
Découvrez plus d'outils qui pourraient être utiles pour votre flux de travail