You kick a ball straight up. For a moment it keeps going — then it slows, stops, and falls back down. The height isn’t a straight line; it curves up and back. That curve has an equation.
You’re fencing off a rectangular garden and you’ve got 40 metres of fencing. You want the biggest possible area. If you make it long and thin, the area shrinks. If you make it square, the area is as large as it can be. Finding that optimum — that maximum — is a polynomial problem.
Your school sells tickets to a performance. At a lower price more people buy, but revenue per ticket drops. At a higher price fewer people buy. Somewhere in the middle is the price that brings in the most money. That relationship between price and total revenue follows a curve — a polynomial.
Straight lines describe constant rates. Polynomials describe the rest.
18.1 What this chapter helps you do
Symbols to keep handy
These are the bits of notation you'll see a lot. If a line of symbols feels like a fence, read it out loud once, then keep going.
x = : x equals negative b, plus or minus the square root of the discriminant, all divided by two a
= b^2 - 4ac: the discriminant — b squared minus four a c
ax^2 + bx + c: a times x-squared, plus b times x, plus c
Here is the main move this chapter is making, in plain terms. You do not need to be fast. You just need to keep the thread.
Coming in: You already know how to work with linear relationships — straight lines, constant rates, one unknown. But most real relationships curve. The straight line is the exception, not the rule.
Leaving with: A polynomial is a relationship where powers of the unknown combine. The squared term is what makes it curve. Factoring breaks a polynomial back into the pieces that multiplied together to make it, which lets you find where it equals zero — and where it reaches its peak or trough.
18.2 What the notation is saying
Start with a contrast from earlier chapters. A line keeps the same steepness. A quadratic bends. The extra power of x is what creates that bend.
Here is a polynomial:
ax^2 + bx + c
Read it aloud: a times x-squared, plus b times x, plus c.
The letters a, b, and c are coefficients — the numbers multiplying each power of x. They’re just fixed numbers; you’ll swap them for actual values in any particular problem. The letter x is the unknown — the variable you’re either solving for, or letting run freely while you watch what the output does. When you write y = ax^2 + bx + c, y is the output — the value the polynomial produces for each value of x.
This means the coefficients shape the curve, while x moves along it.
Each piece — ax^2, bx, c — is called a term. Count the terms and you know you have three. The c term has no x at all; it’s a plain number, a constant.
The degree of a polynomial is the highest power of x present. In ax^2 + bx + c the highest power is 2, so the degree is 2. Degree-2 polynomials are called quadratics. Degree-1 polynomials — like 3x + 7 — are the linear equations from Vol 2. Degree-3 polynomials are called cubics, and so on.
This means the degree tells you what kind of behaviour to expect.
Why does the x^2 term make the graph curve? Because x^2 grows faster than x. When x = 2, x^2 = 4. When x = 10, x^2 = 100. The squared term pulls the output away from the straight line. Take a = 0 and you’re back to a line. Leave a nonzero and the whole shape bends.
A specific example: y = x^2 - 5x + 6. Here a = 1, b = -5, c = 6. The negative b means the straight-line part is pulling down, and the positive c shifts the whole thing up by 6 units. The coefficient a = 1 means the parabola opens upward — a positive a always curves upward, a negative a always curves downward.
This means the sign of a tells you whether the graph has a minimum or a maximum.
18.3 The method
18.3.1 Part a: Expanding
Before you can factor, it helps to know how to expand — to go from the factored form back to the full polynomial. This makes the reverse step (factoring) easier to recognise.
The distributive law says: multiply everything inside the brackets by everything outside.
3(x + 4) = 3x + 12
When you have two brackets multiplied together, you apply the same idea twice — every term in the first bracket multiplies every term in the second. This is sometimes called FOIL (First, Outer, Inner, Last), though the name matters less than the idea: don’t miss any pair.
(x + 3)(x + 2)
First terms: x \cdot x = x^2
Outer terms: x \cdot 2 = 2x
Inner terms: 3 \cdot x = 3x
Last terms: 3 \cdot 2 = 6
Add them up: x^2 + 2x + 3x + 6 = x^2 + 5x + 6.
The pattern is worth noticing. With (x + 3)(x + 2), the number in the middle (5) is the sum of 3 and 2. The constant term (6) is their product. That observation is what makes factoring work in reverse.
This means expanding and factoring are inverse ideas.
18.3.2 Part b: Factoring
Factoring means breaking a polynomial back into the brackets that produced it. There are three main methods; apply them in this order.
Method 1: Common factor. Check whether every term shares a factor you can pull out.
6x^2 + 9x = 3x(2x + 3)
The common factor here is 3x. Dividing both terms by 3x gives the bracket. Always check for a common factor first — it simplifies what comes next.
This means factoring should start with the simplest shared structure.
Method 2: Difference of squares. When you have two perfect squares separated by a minus sign, it factors as:
This works because the middle terms cancel. It doesn’t work if the sign between the squares is positive — x^2 + 25 doesn’t factor over the real numbers.
This means the pattern needs both perfect squares and a minus sign.
Method 3: Factoring a trinomial ax^2 + bx + c. When a = 1, look for two numbers that multiply to c and add to b.
x^2 - 5x + 6
You need two numbers that multiply to 6 and add to -5. Try: -2 and -3. Product: (-2)(-3) = 6. Sum: (-2) + (-3) = -5. Yes.
x^2 - 5x + 6 = (x - 2)(x - 3)
This means factoring a trinomial is a search for two numbers that fit both the sum and the product condition.
When a \neq 1, try the grouping method (also called the ac method). Multiply a by c, find two numbers with that product and sum b, then split the middle term and factor in pairs.
2x^2 + 7x + 3
Multiply a \cdot c = 2 \cdot 3 = 6. Find two numbers that multiply to 6 and add to 7: those are 1 and 6.
Split the middle term:
2x^2 + x + 6x + 3
Factor in pairs:
x(2x + 1) + 3(2x + 1) = (x + 3)(2x + 1)
Here’s the key insight: because you chose the two numbers (1 and 6) to multiply to a \cdot c and add to b, they must create a common factor when you split the middle term. It’s not a guess or a lucky accident — the strategy guarantees it. Both terms contain the factor (2x + 1), so it can be pulled out — the same distributive law used in expanding, run backwards.
This means grouping turns a harder trinomial into a familiar common-factor problem.
Try it yourself: Factoring a trinomial means finding two numbers that multiply to c and add to b. The example below shows x^2 - 5x + 6: we need two numbers that multiply to 6 and add to −5. Those are −2 and −3. Try changing the sliders to explore other trinomials:
Code
{let content ='<div style="font-family: system-ui, -apple-system, sans-serif; padding: 20px; background: #f8f9fa; border-radius: 8px;">'; content +='<div style="margin-bottom: 20px;"><label style="font-weight: 600; font-size: 14px; color: #1f2937;">Target product (c): <input type="range" min="1" max="24" value="6" id="productSlider" style="vertical-align: middle;"> <span id="productValue">6</span></label></div>'; content +='<div style="margin-bottom: 20px;"><label style="font-weight: 600; font-size: 14px; color: #1f2937;">Target sum (b): <input type="range" min="-15" max="15" value="5" id="sumSlider" style="vertical-align: middle;"> <span id="sumValue">5</span></label></div>'; content +='<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(50px, 1fr)); gap: 8px; margin-top: 20px;" id="factorGrid"></div>'; content +='<div style="margin-top: 20px; padding: 12px; background: #dbeafe; border-radius: 4px; border-left: 4px solid #2563eb;"><div style="font-size: 13px; color: #1e40af;"><span id="feedback"></span></div></div>'; content +='</div>';const div =document.createElement('div'); div.innerHTML= content;const productSlider = div.querySelector('#productSlider');const sumSlider = div.querySelector('#sumSlider');const productValue = div.querySelector('#productValue');const sumValue = div.querySelector('#sumValue');const feedback = div.querySelector('#feedback');const factorGrid = div.querySelector('#factorGrid');functionupdateDisplay() {const product =parseInt(productSlider.value);const sum =parseInt(sumSlider.value); productValue.textContent= product; sumValue.textContent= sum;let html ='';for (let i =1; i <=12; i++) {if (product % i ===0) {const j = product / i;if (i <= j) {const match = (i + j === sum);const color = match ?'#10b981':'#e5e7eb';const textColor = match ?'#fff':'#374151'; html +=`<div style="padding: 10px; border-radius: 4px; background: ${color}; color: ${textColor}; text-align: center; font-weight: 600;">${i}×${j}</div>`; } } } factorGrid.innerHTML= html;let found =false;for (let i =1; i <= product /2; i++) {if (product % i ===0) {const other = product / i;if (i + other === sum) { feedback.textContent='Found it! The numbers are '+ i +' and '+ other +'.'; found =true;break; } } }if (!found) { feedback.textContent='(No pair of factors found yet)'; } } productSlider.addEventListener('input', updateDisplay); sumSlider.addEventListener('input', updateDisplay);updateDisplay();return div;}
18.3.3 Part c: Solving quadratic equations
A quadratic equation is when you set a quadratic equal to zero:
ax^2 + bx + c = 0
There are two methods.
Solving by factoring. If you can factor the left side, you can use the fact that if two things multiply to zero, at least one of them must be zero.
x^2 - 5x + 6 = 0
(x - 2)(x - 3) = 0
Either (x - 2) = 0 or (x - 3) = 0. So x = 2 or x = 3.
This means solving by factoring finds the x-values where the polynomial becomes zero.
Solving with the quadratic formula. Not every quadratic factors neatly. For any quadratic ax^2 + bx + c = 0, the solutions are always:
x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
Read it: x equals negative b, plus or minus the square root of b-squared minus four-a-c, all over two-a.
Before you plug in numbers, notice the piece under the square root: b^2 - 4ac. This single expression answers a crucial question: How many solutions does this quadratic have? The piece under the square root is called the discriminant, often written \Delta (delta). It literally discriminates between different cases.
The \pm sign means there are two candidate answers — one where you add the square root term, one where you subtract it. But whether you get two, one, or zero real solutions depends entirely on whether b^2 - 4ac is positive, zero, or negative:
Discriminant (\Delta = b^2 - 4ac) tells you how many solutions exist before you do any arithmetic:
\Delta > 0: two real solutions (the parabola crosses the x-axis twice)
\Delta = 0: one solution (the parabola just touches the x-axis at one point)
\Delta < 0: no real solutions (the parabola doesn’t reach the x-axis)
Visualize the three cases: The discriminant tells the whole story about how many times a parabola meets the x-axis:
Code
{const width =900, height =300;const margin = { top:30,right:30,bottom:40,left:50 };const w = (width -2* margin.left- margin.right) /3;const h = height - margin.top- margin.bottom;const svg = d3.create("svg").attr("viewBox", [0,0, width, height]).attr("width", width).attr("height", height);// Case 1: Δ > 0 (two roots) {const g = svg.append("g").attr("transform",`translate(${margin.left},${margin.top})`);const x = d3.scaleLinear().domain([-3,3]).range([0, w]);const y = d3.scaleLinear().domain([-2,4]).range([h,0]);// Axes g.append("line").attr("x1",0).attr("x2", w).attr("y1",y(0)).attr("y2",y(0)).attr("stroke","#d1d5db").attr("stroke-width",1); g.append("line").attr("x1",x(0)).attr("x2",x(0)).attr("y1",0).attr("y2", h).attr("stroke","#d1d5db").attr("stroke-width",1);// Parabola: y = x² - 2const points = [];for (let px =-3; px <=3; px +=0.1) { points.push([x(px),y(px * px -2)]); } g.append("path").attr("d", d3.line()(points)).attr("fill","none").attr("stroke","#2563eb").attr("stroke-width",2);// Roots at x = -√2, √2const r1 =-Math.sqrt(2), r2 =Math.sqrt(2); g.append("circle").attr("cx",x(r1)).attr("cy",y(0)).attr("r",5).attr("fill","#ef4444").attr("stroke","#fff").attr("stroke-width",1.5); g.append("circle").attr("cx",x(r2)).attr("cy",y(0)).attr("r",5).attr("fill","#ef4444").attr("stroke","#fff").attr("stroke-width",1.5);// Vertex g.append("circle").attr("cx",x(0)).attr("cy",y(-2)).attr("r",4).attr("fill","#f59e0b").attr("stroke","#fff").attr("stroke-width",1.5);// Labels g.append("text").attr("x", w/2).attr("y",-10).attr("text-anchor","middle").attr("font-weight","600").attr("font-size","13px").attr("fill","#1f2937").text("Δ > 0: Two roots"); }// Case 2: Δ = 0 (one root) {const g = svg.append("g").attr("transform",`translate(${margin.left+ w + margin.right},${margin.top})`);const x = d3.scaleLinear().domain([-3,3]).range([0, w]);const y = d3.scaleLinear().domain([-2,4]).range([h,0]);// Axes g.append("line").attr("x1",0).attr("x2", w).attr("y1",y(0)).attr("y2",y(0)).attr("stroke","#d1d5db").attr("stroke-width",1); g.append("line").attr("x1",x(0)).attr("x2",x(0)).attr("y1",0).attr("y2", h).attr("stroke","#d1d5db").attr("stroke-width",1);// Parabola: y = x²const points = [];for (let px =-3; px <=3; px +=0.1) { points.push([x(px),y(px * px)]); } g.append("path").attr("d", d3.line()(points)).attr("fill","none").attr("stroke","#2563eb").attr("stroke-width",2);// Single root at x = 0 g.append("circle").attr("cx",x(0)).attr("cy",y(0)).attr("r",5).attr("fill","#ef4444").attr("stroke","#fff").attr("stroke-width",1.5);// Vertex (same point) g.append("circle").attr("cx",x(0)).attr("cy",y(0)).attr("r",4).attr("fill","#f59e0b").attr("stroke","#fff").attr("stroke-width",1.5);// Labels g.append("text").attr("x", w/2).attr("y",-10).attr("text-anchor","middle").attr("font-weight","600").attr("font-size","13px").attr("fill","#1f2937").text("Δ = 0: One root"); }// Case 3: Δ < 0 (no roots) {const g = svg.append("g").attr("transform",`translate(${margin.left+2* (w + margin.right)},${margin.top})`);const x = d3.scaleLinear().domain([-3,3]).range([0, w]);const y = d3.scaleLinear().domain([-2,4]).range([h,0]);// Axes g.append("line").attr("x1",0).attr("x2", w).attr("y1",y(0)).attr("y2",y(0)).attr("stroke","#d1d5db").attr("stroke-width",1); g.append("line").attr("x1",x(0)).attr("x2",x(0)).attr("y1",0).attr("y2", h).attr("stroke","#d1d5db").attr("stroke-width",1);// Parabola: y = x² + 1const points = [];for (let px =-3; px <=3; px +=0.1) { points.push([x(px),y(px * px +1)]); } g.append("path").attr("d", d3.line()(points)).attr("fill","none").attr("stroke","#2563eb").attr("stroke-width",2);// Vertex at (0, 1) g.append("circle").attr("cx",x(0)).attr("cy",y(1)).attr("r",4).attr("fill","#f59e0b").attr("stroke","#fff").attr("stroke-width",1.5);// Labels g.append("text").attr("x", w/2).attr("y",-10).attr("text-anchor","middle").attr("font-weight","600").attr("font-size","13px").attr("fill","#1f2937").text("Δ < 0: No real roots"); }return svg.node();}
This single number — the discriminant — immediately tells you three distinct possibilities, each with different real-world meaning. If you’re throwing a ball, no real roots means it doesn’t fall. If you’re pricing a good, no real roots in the constraint equations means there’s no break-even point.
18.3.4 Part d: Reading the graph
Every quadratic y = ax^2 + bx + c draws a parabola — a symmetric U-shape (or inverted U if a < 0).
The roots are where the parabola crosses the x-axis — the values of x where y = 0. These are exactly the solutions to ax^2 + bx + c = 0. Factoring gives you the roots. The roots are the x-intercepts of the graph.
This means solving the equation and reading x-intercepts are the same task.
The vertex is the turning point — the very top of a downward parabola (the maximum) or the very bottom of an upward one (the minimum). Because a parabola is symmetric, the vertex always sits exactly halfway between the two roots. For y = x^2 - 5x + 6 with roots at x = 2 and x = 3, the vertex lands at x = 2.5 — right in the middle.
This halfway-point idea gives us a formula. The x-coordinate of the vertex is:
x_v = -\frac{b}{2a}
Read it: negative b over two a. This formula computes that midpoint directly, without needing to find the roots first. Substitute this x-value back into the equation to find the y-coordinate — the maximum or minimum value itself.
For y = x^2 - 5x + 6: x_v = -(-5)/(2 \cdot 1) = 5/2 = 2.5. Then y = (2.5)^2 - 5(2.5) + 6 = 6.25 - 12.5 + 6 = -0.25. The vertex is at (2.5, -0.25) — the minimum point, halfway between the two roots at x = 2 and x = 3.
This means the vertex summarises the turning behaviour of the parabola.
The vertex — the highest point — is at t = 14/(2 \times 4.9) = 14/9.8
\approx 1.43 s, at height h(1.43) = 14(1.43) - 4.9(1.43)^2 \approx
20.02 - 10.02 \approx 10 m.
This means one quadratic can answer several different questions about the same motion.
viewof ballV = Inputs.range([1,20], { value:14,step:1,label:"Initial speed v (m/s)" })
Code
{const h0 = ballH0, v = ballV;// h(t) = h0 + v*t - 4.9*t^2// Landing: positive root of -4.9t^2 + v*t + h0 = 0const disc = v * v +4*4.9* h0;const tLand = (v +Math.sqrt(disc)) / (2*4.9);const tPeak = v / (2*4.9);const hPeak = h0 + v * tPeak -4.9* tPeak * tPeak;const svgW =500, svgH =320;const margin = { top:40,right:30,bottom:40,left:55 };const W = svgW - margin.left- margin.right;const H = svgH - margin.top- margin.bottom;const tMax = tLand *1.05;const tArr = d3.range(0, tLand +0.01, tLand /200);const hArr = tArr.map(t =>Math.max(0, h0 + v * t -4.9* t * t));const xScale = d3.scaleLinear([0, tMax], [0, W]);const yMax = hPeak *1.15+1;const yScale = d3.scaleLinear([0, yMax], [H,0]);const svg = d3.create("svg").attr("width", svgW).attr("height", svgH).style("font-family","inherit");const g = svg.append("g").attr("transform",`translate(${margin.left},${margin.top})`);// Axes g.append("line").attr("x1",0).attr("y1", H).attr("x2", W).attr("y2", H).attr("stroke","#6b7280").attr("stroke-width",1.5); g.append("line").attr("x1",0).attr("y1",0).attr("x2",0).attr("y2", H).attr("stroke","#6b7280").attr("stroke-width",1.5);// Axis labels g.append("text").attr("x", W /2).attr("y", H +32).attr("text-anchor","middle").attr("font-size","12px").attr("fill","#374151").text("time t (seconds)"); g.append("text").attr("transform","rotate(-90)").attr("x",-H /2).attr("y",-40).attr("text-anchor","middle").attr("font-size","12px").attr("fill","#374151").text("height h (metres)");// Curveconst lineGen = d3.line().x((_, i) =>xScale(tArr[i])).y(h =>yScale(h)); g.append("path").datum(hArr).attr("d", lineGen).attr("fill","none").attr("stroke","#2563eb").attr("stroke-width",2.5);// Peak marker g.append("circle").attr("cx",xScale(tPeak)).attr("cy",yScale(hPeak)).attr("r",6).attr("fill","#f59e0b").attr("stroke","#fff").attr("stroke-width",1.5);// Landing marker g.append("circle").attr("cx",xScale(tLand)).attr("cy",yScale(0)).attr("r",6).attr("fill","#dc2626").attr("stroke","#fff").attr("stroke-width",1.5);// Labels g.append("text").attr("x",xScale(tPeak) +8).attr("y",yScale(hPeak) -8).attr("font-size","12px").attr("fill","#d97706").text(`peak: ${hPeak.toFixed(2)} m at t=${tPeak.toFixed(2)} s`); g.append("text").attr("x",xScale(tLand) -8).attr("y",yScale(0) +18).attr("text-anchor","end").attr("font-size","12px").attr("fill","#dc2626").text(`lands at t=${tLand.toFixed(2)} s`);// Title svg.append("text").attr("x", margin.left).attr("y",24).attr("font-size","13px").attr("font-weight","600").attr("fill","#111827").text(`h(t) = ${h0} + ${v}t − 4.9t²`);return svg.node();}
Example 2 (eng) — maximum area from fixed fencing
You have 40 m of fencing and want to enclose a rectangular garden with the largest possible area. What dimensions give the maximum area?
Let the width be x metres. Since the total perimeter is 40 m, the two widths use 2x metres, leaving 40 - 2x for the two lengths. Each length is (40 - 2x)/2 = 20 - x metres.
Area:
A = x(20 - x) = 20x - x^2
This is a downward parabola (a = -1). Maximum at:
x_v = -\frac{20}{2 \times (-1)} = 10 \text{ m}
Length = 20 - 10 = 10 m. Area = 10 \times 10 = 100 m². A square encloses the most area for a given perimeter.
This means the vertex can represent the best possible design choice.
Example 3 (biz) — maximum revenue from a pricing function
A small business sells handmade candles. Market research shows that at a price of p dollars each, the number sold per week is q = 60 - 2p. Revenue is:
R = p \cdot q = p(60 - 2p) = 60p - 2p^2
This is a downward parabola (a = -2). Maximum revenue at:
Price of $15. Revenue: R = 15 \times (60 - 30) = 15 \times 30 = 450 per week.
To confirm it’s a maximum and not a minimum: a = -2 < 0, so the parabola opens downward. The vertex is the top. Any price above or below $15 gives less revenue.
This means the sign of the quadratic term quickly tells you what kind of optimum you have.
Example 4 (comp) — character jump arc
A game character jumps. The height of the character above the ground in metres at time t seconds after the jump is:
h(t) = -5t^2 + 10t
Find the maximum height and the time the character lands.
The parabola opens downward (a = -5), so the vertex is the maximum.
Evaluating a polynomial at a specific value — like checking the height at t = 1 or t = 2 — is a calculation every game engine runs many times per second to determine where characters and objects are.
This means polynomial models can directly control motion and timing.
18.6 Where this goes
This chapter turns curved relationships into algebra you can expand, factor, solve, and interpret.
The natural next step is Vol 3, Chapter 4: Functions and relations. A quadratic is a function — it takes an x value and produces a y value, one output for each input. Once you have the function concept, the parabola becomes one member of a large family: linear functions, quadratic functions, exponential functions, trigonometric functions. The machinery you’ve built here — reading coefficients, finding roots, locating vertices — applies across all of them.
The bigger horizon is calculus. The vertex formula x_v = -b/(2a) gives you the maximum or minimum, but it only works for quadratics. What about a cubic, or a more complicated curve? That’s what differential calculus (Vol 5) answers: a general method for finding the exact peak or trough of any smooth curve. The quadratic vertex is the simplest case of a much more powerful idea. When you reach it, what you learned here will already be familiar.
Where this shows up
A structural engineer calculating deflection in a beam under a distributed load solves a polynomial equation.
A physicist modelling projectile trajectory — range, maximum height, time of flight — works with quadratics throughout.
A pricing analyst finding the revenue-maximising price point solves dR/dp = 0, which for a linear demand function produces a quadratic.
A computer graphics programmer evaluating a Bezier spline is computing a polynomial at a parameter value thousands of times per frame.
A data scientist fitting a parabola to experimental data (polynomial regression of degree 2) uses the same ax^2 + bx + c form.
18.7 Exercises
These are puzzles. Each has a clean answer. The interesting part is setting up the equation first, then solving it.
A ball is thrown upward from a cliff 20 m above the ground with an initial upward speed of 10 m/s. Its height above the ground after t seconds is h(t) = 20 + 10t - 4.9t^2. When does it hit the ground?
makeStepperHTML(1, [ { op:"Set height equal to zero",eq:"20 + 10t - 4.9t^2 = 0",note:"The ball hits the ground when h = 0." }, { op:"Rearrange into standard form",eq:"-4.9t^2 + 10t + 20 = 0",note:null }, { op:"Identify coefficients (the quadratic formula handles any sign of a)",eq:"a = -4.9,\\quad b = 10,\\quad c = 20",note:"No need to rearrange further — the formula works with a negative leading coefficient." }, { op:"Compute the discriminant",eq:"\\Delta = 10^2 - 4(-4.9)(20) = 100 + 392 = 492",note:"Positive discriminant means two real solutions; we take the one giving positive t." }, { op:"Apply the quadratic formula",eq:"t = \\frac{-10 \\pm \\sqrt{492}}{2 \\times (-4.9)} = \\frac{-10 \\pm 22.18}{-9.8}",note:null }, { op:"Take the root that gives positive t",eq:"t = \\frac{-10 - 22.18}{-9.8} = \\frac{-32.18}{-9.8} \\approx 3.28 \\text{ s}",note:"The other root gives t ≈ −1.24 s, which is before the ball was thrown." }, { op:"Check",eq:"h(3.28) = 20 + 10(3.28) - 4.9(3.28)^2 \\approx 20 + 32.8 - 52.7 \\approx 0.1 \\approx 0 \\checkmark",note:null }])
Factor x^2 - 7x + 12 completely, then write down the two roots of x^2 - 7x + 12 = 0.
Code
makeStepperHTML(2, [ { op:"Write the trinomial",eq:"x^2 - 7x + 12",note:null }, { op:"Find two numbers that multiply to 12 and add to -7",eq:"(-3) \\times (-4) = 12 \\quad\\text{and}\\quad (-3) + (-4) = -7",note:null }, { op:"Write the factored form",eq:"x^2 - 7x + 12 = (x - 3)(x - 4)",note:null }, { op:"Set each factor to zero",eq:"x - 3 = 0 \\implies x = 3 \\qquad x - 4 = 0 \\implies x = 4",note:null }, { op:"Check",eq:"(3)^2 - 7(3) + 12 = 9 - 21 + 12 = 0 \\checkmark \\qquad (4)^2 - 7(4) + 12 = 16 - 28 + 12 = 0 \\checkmark",note:null }])
A rectangular garden has an area of 48 m². Its length is 2 m more than its width. Find the dimensions.
Code
makeStepperHTML(3, [ { op:"Let width = x, then length = x + 2",eq:"x(x + 2) = 48",note:null }, { op:"Expand",eq:"x^2 + 2x = 48",note:null }, { op:"Rearrange into standard form",eq:"x^2 + 2x - 48 = 0",note:null }, { op:"Find two numbers that multiply to -48 and add to 2",eq:"8 \\times (-6) = -48 \\quad\\text{and}\\quad 8 + (-6) = 2",note:null }, { op:"Factor",eq:"(x + 8)(x - 6) = 0",note:null }, { op:"Solve — take the positive root",eq:"x = 6 \\text{ (width)}, \\quad x + 2 = 8 \\text{ (length)}",note:"x = -8 is rejected since a width cannot be negative." }, { op:"Check",eq:"6 \\times 8 = 48 \\checkmark",note:null }])
Use the quadratic formula to solve 2x^2 - 3x - 2 = 0.
A candle company finds its weekly profit in dollars is P(p) = -3p^2 + 48p - 165, where p is the price per candle. At what price is profit maximised, and what is that profit?
Code
makeStepperHTML(5, [ { op:"Identify coefficients",eq:"a = -3,\\quad b = 48,\\quad c = -165",note:"The negative a confirms this is a downward parabola — it has a maximum." }, { op:"Find the price at the vertex",eq:"p_v = -\\frac{b}{2a} = -\\frac{48}{2(-3)} = -\\frac{48}{-6} = 8",note:null }, { op:"Substitute to find maximum profit",eq:"P(8) = -3(64) + 48(8) - 165 = -192 + 384 - 165 = 27",note:null }, { op:"State the answer",eq:"\\text{Maximum profit: } \\$27 \\text{ per week at a price of } \\$8",note:null }, { op:"Check",eq:"P(7) = -3(49) + 48(7) - 165 = -147 + 336 - 165 = 24 < 27 \\checkmark",note:"Checking a neighbouring value confirms 8 is the peak." }])
Factor 4x^2 - 25 completely.
Code
makeStepperHTML(6, [ { op:"Recognise the structure",eq:"4x^2 - 25 = (2x)^2 - 5^2",note:"Both terms are perfect squares separated by a minus sign — use the difference of squares identity." }, { op:"Apply a² - b² = (a + b)(a - b)",eq:"4x^2 - 25 = (2x + 5)(2x - 5)",note:null }, { op:"Check by expanding",eq:"(2x + 5)(2x - 5) = 4x^2 - 10x + 10x - 25 = 4x^2 - 25 \\checkmark",note:null }])