Newton forward and backward interpolation

A table of measurements never has the exact point you need — a sensor logs temperature every ten minutes but you want the value at minute four, or a trig table lists sin⁡x\sin x every ten degrees but the exam wants sin⁡4∘\sin 4^\circ. Interpolation fills that gap using only the numbers already in the table, no new measurement required. Newton's forward and backward difference formulae are the two workhorses for equally spaced data: forward when the unknown point sits near the start of the table, backward when it sits near the end. Both are built from a single finite-difference table and both are truncated polynomials in disguise — keep enough terms and you reproduce a curve of any desired degree through the nearest tabulated points. This article derives the forward formula from the shift operator, applies both formulae to a sin⁡x\sin x table, and flags the sign and reference-point errors that cost the most marks.

The core insight

Newton's forward formula f(x)=f0+pΔf0+(p2)Δ2f0+⋯f(x)=f_0+p\Delta f_0+\binom{p}{2}\Delta^2f_0+\cdots (with p=(x−x0)/hp=(x-x_0)/h) fits a polynomial through equally spaced data starting at x0x_0, and its mirror-image backward formula does the same anchored at the last point xnx_n, so you always pick whichever keeps pp small.

The core idea

Interpolation near equally spaced data reduces to one question: which end of the table is the unknown point closest to? That choice fixes both the formula and the anchor point, and it matters because the accuracy of a truncated series depends entirely on how small ∣p∣|p| stays.

Forward difference formula. For x0,x1,…,xnx_0, x_1, \dots, x_n spaced hh apart with values f0,f1,…,fnf_0, f_1, \dots, f_n, and xx near x0x_0:

f(x)=f0+p Δf0+p(p−1)2!Δ2f0+p(p−1)(p−2)3!Δ3f0+⋯ ,p=x−x0hf(x) = f_0 + p\,\Delta f_0 + \frac{p(p-1)}{2!}\Delta^2 f_0 + \frac{p(p-1)(p-2)}{3!}\Delta^3 f_0 + \cdots, \qquad p = \frac{x-x_0}{h}

where: Δf0,Δ2f0,…\Delta f_0, \Delta^2 f_0, \dots are entries along the top diagonal of the forward difference table, and pp measures how many step-sizes xx lies past x0x_0.

Backward difference formula. For xx near the last point xnx_n:

f(x)=fn+p ∇fn+p(p+1)2!∇2fn+p(p+1)(p+2)3!∇3fn+⋯ ,p=x−xnhf(x) = f_n + p\,\nabla f_n + \frac{p(p+1)}{2!}\nabla^2 f_n + \frac{p(p+1)(p+2)}{3!}\nabla^3 f_n + \cdots, \qquad p = \frac{x-x_n}{h}

where: ∇fn,∇2fn,…\nabla f_n, \nabla^2 f_n, \dots are entries along the bottom diagonal of the same difference table (read upward), and pp is now negative when xx lies before xnx_n. Three points tie the two formulae together. First, both are the same underlying idea — the unique degree-kk polynomial through k+1k+1 consecutive tabulated points — differing only in which point anchors the expansion. Second, the coefficients flip pattern: forward uses the decreasing product p(p−1)(p−2)⋯p(p-1)(p-2)\cdots, backward uses the increasing product p(p+1)(p+2)⋯p(p+1)(p+2)\cdots, because backward differences are naturally indexed from the far end. Third, both formulae demand equally spaced xx-values; unequally spaced data needs divided differences instead, which lies outside this article's scope.

Figure
A single difference table with the forward diagonal from the top row highlighted and the backward diagonal from the bottom row highlighted, showing both formulae read from the same table
One difference table, two diagonals, two formulae x f Delta f Delta^2 f Delta^3 f x0 f0 df0 d2f0 d3f0 x1 f1 x2 f2 nf3 n2f3 n3f3 x3 f3 forward: top diagonal, anchor x0 backward: bottom diagonal, anchor x3 Same table, same numbers — only the starting corner and the reading direction change
Derivation ANewton's forward formula from the shift operator

The goal is to derive the forward-difference interpolation formula f(x0+ph)=f0+pΔf0+(p2)Δ2f0+(p3)Δ3f0+⋯f(x_0+ph) = f_0 + p\Delta f_0 + \binom{p}{2}\Delta^2 f_0 + \binom{p}{3}\Delta^3 f_0 + \cdots purely from the algebra of the forward-difference operator Δfi=fi+1−fi\Delta f_i = f_{i+1}-f_i and the shift operator Efi=fi+1Ef_i = f_{i+1}, treating p=(x−x0)/hp=(x-x_0)/h as an ordinary real variable so that the binomial theorem for a general (non-integer) exponent applies.

Step 1. Relate EE and Δ\Delta. By definition Efi=fi+1=fi+ΔfiEf_i = f_{i+1} = f_i + \Delta f_i, so E=1+ΔE = 1+\Delta as operators. This single identity is the entire engine of the derivation: every forward difference can be traded for a power of EE, and vice versa.

Step 2. Write the unknown value as a shift. If x=x0+phx = x_0 + ph for some real number pp, then reaching f(x)f(x) from f0f_0 means applying the shift operator pp times: f(x0+ph)=Epf0f(x_0+ph) = E^p f_0. This is exact when pp is a positive integer (shifting pp whole steps along the table) and is defined to extend consistently to non-integer pp, which is exactly the case of interest since the point we want to interpolate almost never lands exactly on a tabulated xix_i.

Step 3. Substitute E=1+ΔE = 1+\Delta and expand with the binomial series. Epf0=(1+Δ)pf0=[1+pΔ+p(p−1)2!Δ2+p(p−1)(p−2)3!Δ3+⋯ ]f0E^p f_0 = (1+\Delta)^p f_0 = \left[1 + p\Delta + \frac{p(p-1)}{2!}\Delta^2 + \frac{p(p-1)(p-2)}{3!}\Delta^3 + \cdots\right] f_0, using the general binomial expansion (1+u)p=∑k(pk)uk(1+u)^p = \sum_k \binom{p}{k}u^k with u=Δu=\Delta treated as a formal operator raised to integer powers Δ2,Δ3,…\Delta^2, \Delta^3,\dots — a legitimate step because Δkf0\Delta^k f_0 is just an ordinary number once applied to the table.

Step 4. Read off the formula. Distributing f0f_0 through the bracket gives f(x0+ph)=f0+p Δf0+p(p−1)2!Δ2f0+p(p−1)(p−2)3!Δ3f0+⋯f(x_0+ph) = f_0 + p\,\Delta f_0 + \frac{p(p-1)}{2!}\Delta^2 f_0 + \frac{p(p-1)(p-2)}{3!}\Delta^3 f_0 + \cdots, which is exactly Newton's forward-difference formula. In practice the series is truncated after the highest difference the table supports (an n+1n+1-point table only determines differences up to Δnf0\Delta^n f_0 reliably), which is precisely why using a longer series than the data supports is meaningless — there is no more information in the table beyond that order. The backward formula follows by the identical argument applied to the operator ∇fi=fi−fi−1\nabla f_i = f_i - f_{i-1} and E−1=1−∇E^{-1} = 1-\nabla, anchored at fnf_n instead of f0f_0.

Worked example

Use the table (values of sin⁡x\sin x, xx in degrees, h=10h=10):

xx0102030
f(x)f(x)00.17360.34200.5000

Estimate f(4)f(4) with the forward formula and f(27)f(27) with the backward formula.

Step 1. Build the difference table. The first forward differences are Δf0=0.1736\Delta f_0 = 0.1736, Δf1=0.1684\Delta f_1 = 0.1684, Δf2=0.1580\Delta f_2 = 0.1580; the second differences are Δ2f0=−0.0052\Delta^2 f_0 = -0.0052, Δ2f1=−0.0104\Delta^2 f_1 = -0.0104; the third difference is Δ3f0=−0.0012\Delta^3 f_0 = -0.0012. Reading the same table from the bottom gives the backward differences at x3=30x_3=30: ∇f3=0.1580\nabla f_3 = 0.1580, ∇2f3=−0.0104\nabla^2 f_3 = -0.0104, ∇3f3=−0.0052\nabla^3 f_3 = -0.0052.

Step 2. For f(4)f(4), since 44 is near x0=0x_0=0, use forward with p=(4−0)/10=0.4p = (4-0)/10 = 0.4:

f(4)≈0+(0.4)(0.1736)+(0.4)(−0.6)2(−0.0052)+(0.4)(−0.6)(−1.6)6(−0.0012)f(4) \approx 0 + (0.4)(0.1736) + \frac{(0.4)(-0.6)}{2}(-0.0052) + \frac{(0.4)(-0.6)(-1.6)}{6}(-0.0012)
=0.06944+0.000624−0.0000768≈0.06999= 0.06944 + 0.000624 - 0.0000768 \approx 0.06999

This is close to the true value sin⁡4∘≈0.0698\sin 4^\circ \approx 0.0698.

Step 3. For f(27)f(27), since 2727 is near x3=30x_3=30, use backward with p=(27−30)/10=−0.3p = (27-30)/10 = -0.3:

f(27)≈0.5000+(−0.3)(0.1580)+(−0.3)(0.7)2(−0.0104)+(−0.3)(0.7)(1.7)6(−0.0052)f(27) \approx 0.5000 + (-0.3)(0.1580) + \frac{(-0.3)(0.7)}{2}(-0.0104) + \frac{(-0.3)(0.7)(1.7)}{6}(-0.0052)
=0.5000−0.0474+0.00109+0.00031≈0.4540= 0.5000 - 0.0474 + 0.00109 + 0.00031 \approx 0.4540

This compares well with sin⁡27∘≈0.4540\sin 27^\circ \approx 0.4540.

Final answer: f(4)≈0.0699f(4) \approx 0.0699 using forward differences and f(27)≈0.4540f(27) \approx 0.4540 using backward differences — both formulae read the same underlying difference table, just from opposite ends.

Common traps

  • Using the forward formula when xx is near the end of the table (or the reverse) — the series does converge in principle but needs far more terms, so an early truncation gives a poor answer.
  • Miscomputing pp: forward measures from the first point, p=(x−x0)/hp=(x-x_0)/h; backward measures from the last, p=(x−xn)/hp=(x-x_n)/h; swapping the reference point silently corrupts every term after the first.
  • Sign confusion in the backward coefficients — they grow as p(p+1)p(p+1), p(p+1)(p+2)p(p+1)(p+2), an increasing product, unlike the forward formula's decreasing p(p−1)p(p-1), p(p−1)(p−2)p(p-1)(p-2).
  • Forgetting the equal-spacing requirement — both formulae assume constant hh; unequally spaced tables need divided-difference interpolation instead.

Ask the tutor: if you are unsure which formula fits a given table position, or want a difference table double-checked term by term, ask the AI tutor to walk through it with you.

How do I decide whether to use the forward or the backward formula?

Look at where the point you want lies relative to the table. If it is close to the first entry x0x_0, use forward and compute p=(x−x0)/hp=(x-x_0)/h; if it is close to the last entry xnx_n, use backward and compute p=(x−xn)/hp=(x-x_n)/h. The rule of thumb is to keep ∣p∣|p| as small as possible, because the higher-order terms in the truncated series shrink fastest when pp is small — that keeps a short series accurate.

Why does the backward formula use p(p+1) instead of p(p-1)?

It comes straight from the derivation: the backward operator satisfies E−1=1−∇E^{-1} = 1-\nabla, so expanding fnf_n shifted by −p-p steps as (1−∇)−pfn(1-\nabla)^{-p}f_n (equivalently reindexing the same binomial series anchored at the last point) produces coefficients built from the increasing product p(p+1)(p+2)⋯p(p+1)(p+2)\cdots rather than the decreasing one. It is not an arbitrary convention — it falls out of which end of the table you anchor the expansion at.

Can I use the same difference table for both formulae?

Yes — that is the whole point of building one difference table. The forward formula reads the top diagonal starting at f0f_0 (Δf0,Δ2f0,…\Delta f_0, \Delta^2 f_0,\dots), and the backward formula reads the bottom diagonal starting at fnf_n (∇fn,∇2fn,…\nabla f_n, \nabla^2 f_n,\dots), but for a single table these are literally the same numbers viewed from opposite corners — no separate table needs to be constructed for backward interpolation.

Before this

Where this leads