In numerical analysis, a B-spline (short for basis spline) is a type of spline function designed to he minimal support (overlap) for a given degree, smoothness, and set of breakpoints (knots that partition its domain), making it a fundamental building block for all spline functions of that degree. A B-spline is defined as a piecewise polynomial of order n {\displaystyle n} , meaning a degree of n − 1 {\displaystyle n-1} . It is built from sections that meet at these knots, where the continuity of the function and its derivatives depends on how often each knot repeats (its multiplicity). Any spline function of a specific degree can be uniquely expressed as a linear combination of B-splines of that degree over the same knots,[1] a property that makes them versatile in mathematical modeling. A special subtype, cardinal B-splines, uses equidistant knots.
The concept of B-splines traces back to the 19th century, when Nikolai Lobachevsky explored similar ideas at Kazan University in Russia,[2] though the term "B-spline" was coined by Isaac Jacob Schoenberg[3] in 1967, reflecting their role as basis functions.[4]
B-splines are widely used in fields like computer-aided design (CAD) and computer graphics, where they shape curves and surfaces through a set of control points, as well as in data analysis for tasks like curve fitting and numerical differentiation of experimental data. From designing car bodies to smoothing noisy measurements, B-splines offer a flexible way to represent complex shapes and functions with precision.
A B-spline of order p + 1 {\displaystyle p+1} is a collection of piecewise polynomial functions B i , p ( t ) {\displaystyle B_{i,p}(t)} of degree p {\displaystyle p} in a variable t {\displaystyle t} . The values of t {\displaystyle t} where the pieces of polynomial meet are known as knots, denoted t 0 , t 1 , t 2 , … , t m {\displaystyle t_{0},t_{1},t_{2},\ldots ,t_{m}} and sorted into nondecreasing order.
For a given sequence of knots, there is, up to a scaling factor, a unique spline B i , p ( t ) {\displaystyle B_{i,p}(t)} satisfying
B i , p ( t ) = { non-zero if t i ≤ t