接合計算機—混合比と量
安い成分と高い成分、あるいは低濃度と高濃度の液体を混ぜ合わせて目標の値に到達させるための比率を、交差法(接合法)と呼ばれる古典的な手法を用いて計算する無料ツール。各成分の正確な必要量も同時に算出され、薬局での調合や飲料の希釈、飼料の配合といった実例つきで手順を確認できる。
接合計算機
安い成分の価値、より高い(より高価な)成分、および目標混合値を入力します。ツールは、それらを混合する比率を返します—および全体の量を提供する場合は正確な量。
入力値
結果
混合比
量
接合交差図
接合公式
10.00 : 10.00 = (30.00 − 20.00) : (20.00 − 10.00)
混合物の組成
ドキュメンテーション
このCalculatorについて(ELI5)
異なる価値を持つ2つのもの—安いものと高いもの—があり、それらをブレンドして、その間にある目標値を持つ混合物にしたいとします。接合法(Alligation)は、それぞれどのくらいの量を使うかを教えてくれます。
シーソーを想像してください。目標値がピボット(支点)です。目標から価値が遠い成分は少量である必要があり、目標に近いものは大量である必要があるため、両側のバランスが取れます。接合法は、そのバランスの単純な算術です。
3つの数字を入力してください—より安い価値、より高い価値、目標—そしてこのツールは次を提供します:
- 混合比(例:1:2、つまり安い成分1部に対して高い成分2部)
- 全体の量を入力すると、各成分の正確な量
- 交差図と組成チャートで、ブレンドを視覚化
「価値」は価格、パーセンテージ強度、または濃度(%、mg/mL、w/v)など、1つの一貫したスケール上で測定されたすべてのものになります。
公式
より安い価値C、より高い価値D、目標混合値M(ここでC < M < D)では:
各成分の部分は対立する差から来ます—目標が成分からどのくらい遠いかによって、他の成分がどのくらい必要かが決まります。また、総量Qがわかっている場合:
接合交差図
これを配置する古典的な方法は「交差」です:2つの成分の値を左に、目標を中央に配置し、各対角線に沿って差を引きます。各差は対向するコーナーに表示され、その成分の部分になります。
1 高い成分 (D) ───────┐ ┌─────── (M − C) = 高い部分
2 ╲ ╱
3 目標 (M)
4 ╱ ╲
5 安い成分 (C) ───────┘ └─────── (D − M) = 安い部分
6実施例
30の成分をブレンドして$20で販売する場合:
同じ量です。全体で100単位の場合、それは安い成分50、高い成分50です—ブレンドされた値は正確に25に移すと、比率は5:15 =1:3になります:目標が高い価値にどのくらい近いかによって、高い成分がどのくらい必要かが決まります。
接合交換法対接合中央法
- 接合交換法(このツールが行うこと)—2つの成分の価値と目標がわかっており、比率を解きます。
- 接合中央法—成分の量と価値がわかっており、結果的な混合値を解きます。これは単なる加重平均です:
この2つは互いに逆操作なので、仕事をチェックするのに便利な方法です:このツールが提供する量を加重平均に戻すと、目標に到達するはずです。
どこで使われるか
- 薬局の調合—高濃度と低濃度の調剤をブレンドして処方箋の濃度に調合します(例えば70%と20%溶液をブレンドします)。値はドルではなくパーセンテージまたはmg/mLです;算術は同じです。
- ビジネスと価格設定—安い株と高級在庫をブレンドして、目標単価または売却価格に当たります。
- 化学と食品飲料—目標濃度、度数、またはBrixに希釈または強化します。
ルールは一貫したスケール上で単一の値しか必要としないため、同じ3つの入力がこれらのすべてをカバーしています。
使い方
- 安い価値、高い価値、目標混合値を入力します(一貫した単位)。
- 必要に応じて全体の量を入力して、各成分の正確な量を取得します。
- 比率、簡略化された比率、および量を読みます;交差図とドーナツチャートは分割を示します。
入力はページURLと同期されるため、正確なセットアップをブックマークまたは共有できます。目標は2つの成分の値の厳密に間に位置する必要があります—そうでない場合、それらのブレンドはそれに到達できず、ツールはそう言います。
コードで計算
各スニペットは、安い価値c、高い価値d、目標m、および全体の量qを取り、2つの部分と2つの量を返します。
Excel
C2 = 安い、D2 = 高い、M2 = 目標、Q2 = 全体の量と仮定:
1=D2-M2 ' 安い部分 (D − M)
2=M2-C2 ' 高い部分 (M − C)
3=(D2-M2)/((D2-M2)+(M2-C2))*Q2 ' 安い量
4=(M2-C2)/((D2-M2)+(M2-C2))*Q2 ' 高い量
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}
6よくある質問
目標が2つの値の間にない場合はどうなりますか? その場合、この2つのブレンドはそれに到達できません—30のアイテムのブレンドは常に30の間に着地します。このツールはこれを偽の比率を返す代わりにフラグを立てます。
単位は重要ですか? いいえ。比率は1つの一貫したスケール上の差のみに依存するため、価格、パーセンテージ、およびmg/mLはすべて機能します—3つの入力を同じ単位に保つだけです。
3つ以上の成分に使用できますか? このツールは2つの成分の場合を処理します。3つ以上のコンポーネントを持つ問題には多くの有効な答えがあり、通常は成分をペアリングするか線形方程式で解決されます。
接合法は加重平均と同じですか? それらは逆操作です。加重平均(接合中央法)は量を混合値に変えます;接合交換法は目標値を量に変えます。
ソース
- Alligation — Wikipedia — 接合交換法と中央法の定義と基本的なルール。
- Alligation Calculator — Omni Calculator — 薬局で使用される濃度ベースのフォーム、実施例付き。
- Pharmaceutical calculations by alligation method — EGPAT — 調合の接合交差図の第一原理ウォークスルー。