A recipe for 4 people needs 300 g of flour. You’re cooking for 10. How much flour do you need?
A map is drawn at 1:25,000. A road measures 8 cm on the map. How long is it on the ground?
You and two friends split a streaming subscription. The monthly cost is £14.99 for three people. One friend joins. What does each person pay now?
These three questions share the same calculation underneath.
6.1 What the notation is saying
The ratio \(a:b\) means “for every \(a\) of the first thing, there are \(b\) of the second.” It is a comparison by division. Writing \(a:b\) is the same as writing the fraction \(\frac{a}{b}\).
Two quantities \(y\) and \(x\) are proportional when:
\[y = kx\]
where \(k\) is a constant. Double \(x\), you double \(y\). Halve \(x\), you halve \(y\). The ratio \(\frac{y}{x} = k\) stays fixed.
Write this as \(y \propto x\) (read: “\(y\) is proportional to \(x\)”). The constant \(k\) is called the constant of proportionality — it is the fixed multiplier that links the two quantities.
A proportion equation sets two ratios equal:
\[\frac{a}{b} = \frac{c}{d}\]
Read: “\(a\) is to \(b\) as \(c\) is to \(d\).” If you know three of the four values, you can find the fourth. The next section shows how.
Adjust the two parts of a ratio below. The bars show how A and B relate to each other and to the total.
Code
ratioVis = {const d3 =awaitrequire("d3@7");const W =560, H =200;const ML =20, MR =20, MT =20, MB =20;const innerW = W - ML - MR;const container = d3.create("div").style("font-family","sans-serif").style("max-width", W +"px");// controlsconst controls = container.append("div").style("display","flex").style("gap","24px").style("align-items","flex-end").style("flex-wrap","wrap").style("margin-bottom","10px");functionmakeSlider(parent, labelText, defaultVal) {const wrap = parent.append("label").style("display","flex").style("flex-direction","column").style("font-size","0.85rem").style("gap","3px");const header = wrap.append("div").style("display","flex").style("justify-content","space-between"); header.append("span").text(labelText);const valSpan = header.append("span").style("font-weight","bold");const inp = wrap.append("input").attr("type","range").attr("min",1).attr("max",20).attr("step",1).attr("value", defaultVal).style("width","160px");return { inp, valSpan }; }const { inp: inpA,valSpan: vsA } =makeSlider(controls,"Part A",3);const { inp: inpB,valSpan: vsB } =makeSlider(controls,"Part B",5);// info lineconst infoDiv = container.append("div").style("font-size","0.95rem").style("text-align","center").style("margin-bottom","10px").style("color","#1e293b");// SVGconst svg = container.append("svg").attr("width", W).attr("height", H).attr("viewBox",`0 0 ${W}${H}`).attr("aria-label","Ratio bar visualisation");const g = svg.append("g").attr("transform",`translate(${ML},${MT})`);const BAR_H =36;const GAP =16;const rows = [ { label:"A",y:0,fill:"#2563eb",stroke:"#1e3a8a" }, { label:"B",y: BAR_H + GAP,fill:"#d97706",stroke:"#92400e" }, { label:"Total (A+B)",y: (BAR_H + GAP) *2,fill:"#64748b",stroke:"#334155" } ];// background tracks rows.forEach(row => { g.append("rect").attr("x",0).attr("y", row.y).attr("width", innerW).attr("height", BAR_H).attr("fill","#f1f5f9").attr("rx",4); });// bar rectsconst barRects = rows.map(row => {return g.append("rect").attr("x",0).attr("y", row.y).attr("height", BAR_H).attr("fill", row.fill).attr("rx",4); });// row labels (left side, outside) rows.forEach(row => { g.append("text").attr("x",-8).attr("y", row.y+ BAR_H /2+4).attr("text-anchor","end").attr("font-size","12px").attr("fill","#334155").attr("font-weight","bold").text(row.label); });// value labels inside barsconst barLabels = rows.map(row => {return g.append("text").attr("y", row.y+ BAR_H /2+5).attr("font-size","13px").attr("font-weight","bold").attr("fill","#fff"); });functionupdate() {const a =+inpA.property("value");const b =+inpB.property("value");const total = a + b;const maxVal =20;// slider max for A and B; total can reach 40 vsA.text(a); vsB.text(b);const values = [a, b, total];const maxDisplay =40;// total bar always represents full width when a=b=20 values.forEach((v, i) => {const w = (v / maxDisplay) * innerW; barRects[i].attr("width",Math.max(w,4)); barLabels[i].attr("x",Math.max(w /2,20)).attr("text-anchor","middle").text(v); });const decimal = (a / b).toFixed(3); infoDiv.html(`A : B = <strong>${a} : ${b}</strong> | `+`A / B = <strong>${decimal}</strong> | `+`Total parts = <strong>${total}</strong>` ); }update(); inpA.on("input", update); inpB.on("input", update);// legendconst legend = container.append("div").style("display","flex").style("gap","16px").style("font-size","0.8rem").style("margin-top","6px").style("flex-wrap","wrap"); [ { color:"#2563eb",label:"Part A" }, { color:"#d97706",label:"Part B" }, { color:"#64748b",label:"Total (A + B)" } ].forEach(({ color, label }) => {const item = legend.append("div").style("display","flex").style("align-items","center").style("gap","5px"); item.append("div").style("width","14px").style("height","14px").style("border-radius","3px").style("background", color).style("flex-shrink","0"); item.append("span").text(label); });return container.node();}
6.2 The method
Finding a missing value in a proportion
Given \(\frac{a}{b} = \frac{c}{d}\), find \(d\).
Multiply both sides by \(bd\) — this clears both denominators at once, leaving \(ad = bc\). Rearranging for \(d\):
\[d = \frac{bc}{a}\]
Dividing a quantity in a given ratio
To divide total \(T\) in the ratio \(a:b\):
Count the total number of parts: \(a + b\) — this tells you how many equal slices the whole is cut into.
Value of one part: \(T \div (a + b)\) — the size of each slice.
First share: \(a \times\) (one part); second share: \(b \times\) (one part) — multiply each person’s slices by the slice size.
Cascaded ratios
Two ratios applied in series multiply. A 3:1 ratio followed by a 4:1 ratio gives a combined ratio of \(3 \times 4 = 12:1\).
Gear ratio from tooth counts
For meshing gears, the ratio equals the number of teeth on the driven gear divided by the teeth on the driving gear.
Finding a constant of proportionality
Given one known pair \((x_0, y_0)\) where \(y \propto x\):
\[k = \frac{y_0}{x_0}\]
Then for any other \(x\): \(y = kx\).
Why this works
A ratio is a relative relationship — it does not depend on the size of either quantity, only on their comparison. When two quantities are proportional, their ratio \(k\) is constant by definition. Cross-multiplication works because multiplying both sides of \(\frac{a}{b} = \frac{c}{d}\) by \(bd\) gives \(ad = bc\) — a balanced equation.
Enter three known values in a proportion. The fourth is calculated for you. Use this to check your worked-example answers.
Code
proportionSolver = {const d3 =awaitrequire("d3@7");const container = d3.create("div").style("font-family","sans-serif").style("max-width","560px"); container.append("p").style("font-size","0.85rem").style("margin-bottom","10px").style("color","#475569").text("Given a/b = c/d, enter a, b, and c — d is calculated. Enter any three values to find the fourth.");// controls gridconst grid = container.append("div").style("display","grid").style("grid-template-columns","repeat(4, 1fr)").style("gap","12px").style("align-items","end").style("margin-bottom","14px");functionmakeField(parent, labelText, defaultVal, isResult) {const wrap = parent.append("label").style("display","flex").style("flex-direction","column").style("font-size","0.85rem").style("gap","4px"); wrap.append("span").style("font-weight","bold").style("color", isResult ?"#15803d":"#1e293b").text(labelText);const inp = wrap.append("input").attr("type","number").attr("step","any").attr("value", defaultVal).style("width","100%").style("font-size","1rem").style("padding","4px 6px").style("border", isResult ?"2px solid #16a34a":"1px solid #cbd5e1").style("border-radius","4px").style("background", isResult ?"#f0fdf4":"#fff").property("readOnly", isResult);return inp; }const inpA2 =makeField(grid,"a",3,false);const inpB2 =makeField(grid,"b",4,false);const inpC2 =makeField(grid,"c",6,false);const inpD2 =makeField(grid,"d = b·c ÷ a","?",true);// equation displayconst eqDiv = container.append("div").style("font-size","1.1rem").style("text-align","center").style("margin-bottom","10px").style("padding","10px").style("background","#f8fafc").style("border-radius","6px").style("border","1px solid #e2e8f0");// explanation lineconst explDiv = container.append("div").style("font-size","0.85rem").style("color","#475569").style("text-align","center");functionupdate() {const a =parseFloat(inpA2.property("value"));const b =parseFloat(inpB2.property("value"));const c =parseFloat(inpC2.property("value"));if (isNaN(a) ||isNaN(b) ||isNaN(c) || a ===0) { inpD2.property("value","—"); eqDiv.text("Enter values for a, b, and c above (a must not be zero)."); explDiv.text("");return; }const d = (b * c) / a;const dDisplay =Number.isInteger(d) ? d : d.toFixed(4); inpD2.property("value", dDisplay); eqDiv.html(`${a} / ${b} = ${c} / <strong style="color:#15803d">${dDisplay}</strong>` ); explDiv.text(`d = b × c ÷ a = ${b} × ${c} ÷ ${a} = ${dDisplay}`); }update(); inpA2.on("input", update); inpB2.on("input", update); inpC2.on("input", update);return container.node();}
6.3 Worked examples
Example 1 — Recipe scaling. A recipe for 4 people needs 300 g flour, 150 g butter, and 80 g sugar. How much of each do you need for 10 people?
The quantities scale in proportion with the number of people. Find the ratio of new to old: \(\frac{10}{4} = 2.5\).
Multiply each ingredient by 2.5 — this keeps everything in the same ratio:
Example 3 — Splitting costs. Three friends split a monthly phone plan costing £36 in the ratio 2:3:1 (based on how much data each uses). How much does each pay?
Total parts: \(2 + 3 + 1 = 6\). One part = \(£36 \div 6 = £6\).
Friend A (2 parts): \(2 \times £6 = £12\) Friend B (3 parts): \(3 \times £6 = £18\) Friend C (1 part): \(1 \times £6 = £6\)
Check: \(£12 + £18 + £6 = £36\). Yes.
Example 4 — Finance: dividing profit. Two partners invest in a business in the ratio 3:5. The year’s profit is £24,000. How much does each receive?
Total parts: \(3 + 5 = 8\). One part = \(£24,000 \div 8 = £3,000\).
Partner A (3 parts): \(3 \times £3,000 = £9,000\) Partner B (5 parts): \(5 \times £3,000 = £15,000\)
Check: \(£9,000 + £15,000 = £24,000\). Yes.
6.4 Where this goes
Proportion is the first multiplicative relationship you encounter. Percent and rates (Chapter 3) is proportion restricted to a denominator of 100 — a special case of this chapter.
Later, proportion reappears inside trigonometry (the sine ratio is a ratio of lengths) and in logarithms (where proportional growth becomes additive). In engineering mathematics, dimensional analysis — checking that equations are consistent in their units — is a systematic application of ratio.
The notation \(y \propto x\) is also the simplest case of a functional relationship. Volume 3’s treatment of functions generalises this to any rule that maps inputs to outputs.
Where this shows up
Scaling a recipe up or down is proportion — every ingredient changes by the same factor.
Reading a map involves ratio: every measurement on paper is a proportional reduction of the real distance.
Splitting a bill by how much each person ordered is dividing a quantity in a ratio.
A gear ratio on a bike tells you how many times the back wheel turns for each turn of the pedals.
The arithmetic is identical in every case.
6.5 Exercises
A recipe for 4 people needs 300 g flour, 150 g butter, and 80 g sugar. Scale the recipe to serve 7 people. (Exact grams to one decimal place.)
A map has scale 1:25,000. Two towns are 14.6 cm apart on the map. What is the actual distance in kilometres?
A car engine produces 250 Nm of torque. It drives through a gearbox with a 3.8:1 ratio, then a differential with a 3.2:1 ratio. What is the torque at the rear wheels?
Silver and copper are mixed in the ratio 7:3 by mass to make an alloy. You need 2.5 kg of alloy. How many grams of each metal do you need?
A 500 mL bottle of concentrated cleaning fluid requires diluting 1:15 before use. How many litres of diluted product can you make from one bottle?
Three investors share profits in the ratio 2:3:7. Total profit this year is £48,000. How much does each investor receive?
A gear system has a driver gear with 24 teeth and a driven gear with 60 teeth. What is the gear ratio? If the driver rotates at 900 rpm, what is the speed of the driven gear?