In short
A formula made from stock dilutions and premixes is a linear system. If A is the matrix of what fraction of each pure material each stock contains, and w the stock weights, the pure composition is p = A·w. To hit a target composition you solve A·w = p*. Seeing it this way tells you when a target is exactly achievable, when many weightings achieve it, and when none can.
What you will learn
- Express the pure composition of a formula as a composition matrix times a weight vector
- Solve for the stock weights that deliver a target pure composition
- Recognize underdetermined and infeasible systems and what each means at the bench
- Check a solution by multiplying back
Before this lesson: Active Material: The Number Behind Every Formula, Stock Solutions in Practice, Normalize a Formula to 1,000 Parts, Sample Size and Sensory Statistics
Before you start
You need active material, stock solutions and normalization. Matrix multiplication is introduced here; the Research and Innovation track's sample size lesson is the level of mathematical comfort assumed.
The model
List the pure materials as rows i = 1…m (odorants and solvents alike) and the stocks you will weigh as columns j = 1…k. Entry aij is the mass fraction of material i in stock j. Then
pi = Σj aij wj, or p = A w.
Every column sums to 1, because a stock is entirely made of the listed materials. Summing all rows therefore gives Σp = Σw: total pure mass equals total weighed mass, which is the conservation check you already do by hand.
Worked example: a triangular system
Four stocks: S1 = 10% X in DPG, S2 = 1% Y in DPG, Z neat, and DPG. Target: 0.5 g X, 0.02 g Y, 20 g Z and 30 g DPG in total.
| S1 | S2 | Z | DPG | |
|---|---|---|---|---|
| X | 0.10 | 0 | 0 | 0 |
| Y | 0 | 0.01 | 0 | 0 |
| Z | 0 | 0 | 1 | 0 |
| DPG | 0.90 | 0.99 | 0 | 1 |
The matrix is lower triangular, so it solves by forward substitution: wS1 = 0.5/0.10 = 5 g; wS2 = 0.02/0.01 = 2 g; wZ = 20 g; and the DPG row gives 0.90·5 + 0.99·2 + wDPG = 30, so wDPG = 30 − 4.5 − 1.98 = 23.52 g. Total weighed: 50.52 g. Multiply back to check: every target is reproduced.
The DPG row is the one people get wrong by hand. Forgetting that stocks carry solvent overshoots the solvent target by exactly the 6.48 g the stocks bring.
Premixes: when columns share rows
Add a premix S5 that is 5% X and 0.5% Y in DPG. Now X can come from S1 or S5, and Y from S2 or S5: five unknowns, four equations. The system is underdetermined and has a one-parameter family of solutions. Choose wS5 = 4 g, for example: it supplies 0.2 g X and 0.02 g Y, so S2 drops to 0, S1 falls to 3 g, and DPG is recalculated. Choose 10 g and the Y from S5 alone (0.05 g) overshoots the 0.02 g target, so S2 would have to be negative.
That negative weight is what infeasibility looks like. Feasible solutions need every wj ≥ 0, which bounds the free parameter: here 0 ≤ wS5 ≤ 4 g. Inside that range, a second criterion — fewest weighings, every weight above your practical minimum, lowest cost — picks the answer. That is the bridge to the next lesson, where the choice becomes an optimization.
Least squares, when exactness is impossible
If you have fewer stocks than targets (more equations than unknowns), an exact solution usually does not exist. The least-squares solution minimizes the sum of squared shortfalls. In perfumery that is rarely what you want unreflectively, because a 0.01 g error on a trace material matters far more than on a carrier: weight the rows by how much each error matters before minimizing.
Where it stops
- Linear means additive by mass. The model says nothing about reactions, evaporation during weighing, or smell.
- A stock's composition is itself uncertain. A "10%" dilution is 10% within your weighing error; the measurement-uncertainty lesson propagates that.
- Naturals are vectors, not scalars. To track constituents (for allergens or a restricted component) a natural becomes a column with many non-zero rows, which is exactly how constituent calculations are structured in the natural constituents lesson.
In professional practice
Formulation software stores formulas as ingredients that may themselves be compositions, and computes pure composition exactly this way. Knowing the algebra lets you test such software and spot a premix whose solvent has been double-counted or dropped.
Practical exercise: Solve a premix formula three ways
- Write a formula of your own that uses at least five stocks, including one premix of two materials, and set a target pure composition.
- Write its composition matrix. Check that each column sums to 1.
- Find the feasible range of the free weight by hand, and choose a solution with every weight above your practical minimum.
- Solve the same system in a spreadsheet (matrix multiplication to check) and in Python (for example
numpy.linalg.lstsq, which handles the non-square case). Multiply back each time.
You have done this well if all three methods give the same weights within rounding, the back-multiplication reproduces every target, you can state the feasible range with its limiting stock, and you chose among solutions by a criterion you wrote down first.
Common mistakes
- Percentages in the matrix. Use fractions, or every result is out by a hundred.
- Dropping the solvent row. Stocks carry solvent; the total solvent must include it.
- Accepting a negative weight. It signals an infeasible target, not an arithmetic slip to ignore.
Key terms
- Composition matrix
- A table whose entry in row i and column j is the fraction of pure material i in stock j. Multiplying it by the stock weights gives the pure amount of each material.
- Underdetermined system
- A system with more unknown weights than independent targets. It has many solutions, and something else, such as cost or a minimum weight, must choose among them.
- Infeasible target
- A target composition that no non-negative set of stock weights can deliver, for example one asking for less solvent than the stocks already carry.
Knowledge check
Written and reviewed by the RUŌOD Lab team. This is general education, not legal, regulatory, medical or safety advice. Example dilutions and exercises are for learning, are not validated products, and have not been safety-assessed. Completing a lesson confers no qualification. How we check these lessons.