Finite Difference Derivatives (cross-cutting/numerics/finite-difference-derivatives)
Use when the task is computing numerical derivatives with finite
difference stencils: first derivatives of a function by forward,
backward, or central differences, the second derivative by the
centered three point stencil, and derivatives of evenly spaced
tabulated data with one sided differences at the boundaries.
Domain quick reference
- Forward difference: f'(x) ~= (f(x + h) - f(x)) / h, one sided
stencil with truncation error O(h).
- Backward difference: f'(x) ~= (f(x) - f(x - h)) / h, one sided
stencil with truncation error O(h).
- Central difference: f'(x) ~= (f(x + h) - f(x - h)) / (2 h), the
centered stencil with truncation error O(h^2); exact for
quadratics.
- Second derivative: f''(x) ~= (f(x + h) - 2 f(x) + f(x - h)) / h^2,
the centered three point stencil, error O(h^2).
- Tabulated data: the centered stencil at interior points, the
forward stencil at the first point, and the backward stencil at
the last point; the x values must be evenly spaced.
- Step sizing: halving h halves the error of the one sided stencils
and quarters the error of the centered stencils, until roundoff
from the h^2 divisions takes over; the step must stay strictly
positive.
Workflow
- Decide which derivative and which stencil: one sided when the
derivative sits at a boundary, centered when interior accuracy
matters.
- Pick the step h: small enough for a small truncation error, large
enough to keep roundoff away from the division by h.
- Compute the first derivative with forward_difference,
backward_difference, or central_difference(f, x, h).
- Compute the second derivative with second_central_difference.
- For tabulated data, pass xs and ys to tabulated_derivative and
read the derivative at each point before gating the step.
Pitfalls
- Using a zero or negative step: the stencils raise ValueError; a
step of zero divides by nothing.
- Choosing the centered stencil at a domain boundary: it samples
f(x - h) outside the domain; use the one sided stencil there.
- Expecting the forward stencil to match the centered accuracy: the
one sided error is O(h), the centered error is O(h^2).
- Shrinking h without bound: roundoff grows as h shrinks; the
centered stencil on sin reaches its best accuracy near h = 1e-5
for double precision.
- Feeding unevenly spaced tabulated data: tabulated_derivative
raises ValueError; resample to even spacing first.
- Confusing this leaf with the convergence-verification leaf:
Richardson extrapolation, the grid convergence index, and mesh
refinement studies belong to convergence-verification; this leaf
computes plain stencil derivatives.
Behavior contract (gate 3)
The stencil and tabulated-data logic is exercised by the gate 3
contract test: scripts/test_finite_difference_derivatives.py against
scripts/finite_difference_derivatives_logic.py (stdlib unittest,
offline). Run:
python3 scripts/test_finite_difference_derivatives.py
Compliance
- NACA Report 824 is US government work (public domain); the pack
anchor per standards-map.yaml. Finite difference stencils are
generic numerical methodology, not RTCA or SAE content; summary
and formulas only.
- compliance: STANDARDS-REF, gated: false.
1---2name: finite-difference-derivatives3description: Use when you must compute numerical derivatives of a function or of tabulated data with finite difference formulas: choose between the forward, backward, and central difference stencils, size the step h, compute the second derivative with the centered three point stencil, and differentiate evenly spaced tabulated data with one sided differences at the boundaries. Produces the first and second derivative estimates and the tabulated derivative values that gate the differentiation step. Trigger: finite difference, central difference, forward difference, backward difference, step size, truncation error, second derivative, tabulated data.4license: Apache-2.05---67# Finite Difference Derivatives (cross-cutting/numerics/finite-difference-derivatives)89Use when the task is computing numerical derivatives with finite10difference stencils: first derivatives of a function by forward,11backward, or central differences, the second derivative by the12centered three point stencil, and derivatives of evenly spaced13tabulated data with one sided differences at the boundaries.1415## Domain quick reference1617- Forward difference: f'(x) ~= (f(x + h) - f(x)) / h, one sided18 stencil with truncation error O(h).19- Backward difference: f'(x) ~= (f(x) - f(x - h)) / h, one sided20 stencil with truncation error O(h).21- Central difference: f'(x) ~= (f(x + h) - f(x - h)) / (2 h), the22 centered stencil with truncation error O(h^2); exact for23 quadratics.24- Second derivative: f''(x) ~= (f(x + h) - 2 f(x) + f(x - h)) / h^2,25 the centered three point stencil, error O(h^2).26- Tabulated data: the centered stencil at interior points, the27 forward stencil at the first point, and the backward stencil at28 the last point; the x values must be evenly spaced.29- Step sizing: halving h halves the error of the one sided stencils30 and quarters the error of the centered stencils, until roundoff31 from the h^2 divisions takes over; the step must stay strictly32 positive.3334## Workflow35361. Decide which derivative and which stencil: one sided when the37 derivative sits at a boundary, centered when interior accuracy38 matters.392. Pick the step h: small enough for a small truncation error, large40 enough to keep roundoff away from the division by h.413. Compute the first derivative with forward_difference,42 backward_difference, or central_difference(f, x, h).434. Compute the second derivative with second_central_difference.445. For tabulated data, pass xs and ys to tabulated_derivative and45 read the derivative at each point before gating the step.4647## Pitfalls4849- Using a zero or negative step: the stencils raise ValueError; a50 step of zero divides by nothing.51- Choosing the centered stencil at a domain boundary: it samples52 f(x - h) outside the domain; use the one sided stencil there.53- Expecting the forward stencil to match the centered accuracy: the54 one sided error is O(h), the centered error is O(h^2).55- Shrinking h without bound: roundoff grows as h shrinks; the56 centered stencil on sin reaches its best accuracy near h = 1e-557 for double precision.58- Feeding unevenly spaced tabulated data: tabulated_derivative59 raises ValueError; resample to even spacing first.60- Confusing this leaf with the convergence-verification leaf:61 Richardson extrapolation, the grid convergence index, and mesh62 refinement studies belong to convergence-verification; this leaf63 computes plain stencil derivatives.6465## Behavior contract (gate 3)6667The stencil and tabulated-data logic is exercised by the gate 368contract test: scripts/test_finite_difference_derivatives.py against69scripts/finite_difference_derivatives_logic.py (stdlib unittest,70offline). Run:7172python3 scripts/test_finite_difference_derivatives.py7374## Compliance7576- NACA Report 824 is US government work (public domain); the pack77 anchor per standards-map.yaml. Finite difference stencils are78 generic numerical methodology, not RTCA or SAE content; summary79 and formulas only.80- compliance: STANDARDS-REF, gated: false.