In the mathematical subfield of numerical analysis, monotone cubic interpolation is a variant of cubic interpolation that preserves monotonicity of the data set being interpolated.
Monotonicity is preserved by linear interpolation but not guaranteed by cubic interpolation.
Contents |
Monotone cubic Hermite interpolation
Monotone interpolation can be accomplished using cubic Hermite spline with the tangents mi modified to ensure the monotonicity of the resulting Hermite spline.
Data preprocessing
Let the data points be (xk,yk) for k = 1,...,n
- Compute the slopes of the secant lines between successive points:
for
. - Initialize the tangents at every data point as the average of the secants,
for
; these may be updated in further steps. For the endpoints, use one-sided differences:

- For
, if Δk = 0 (if two successive yk = yk + 1 are equal), then set mk = mk + 1 = 0, as the spline connecting these points must be flat to preserve monotonicity. Ignore step 4 and 5 for those k. - Let αk = mk / Δk and βk = mk + 1 / Δk.
- Now, since to prevent overshoot or undershoot, we are trying to restrict the position vector (αk,βk) to a circle of radius 3, if
, then set mk = τkαkΔk and mk + 1 = τkβkΔk where
.
Note that only one pass of the algorithm is required.
Cubic interpolation
After the preprocessing, evaluation of the interpolated spline is equivalent to cubic Hermite spline, using the data xk, yk, and mk for k = 1,...,n.
To evaluate at x, find the smallest value larger than x, xupper, and the largest value smaller than x, xlower, among xk such that
. Calculate
- h = xupper − xlower and

then the interpolant is
- finterpolated(x) = ylowerh00(t) + hmlowerh10(t) + yupperh01(t) + hmupperh11(t)
where hii are the basis functions for the cubic Hermite spline.
References
- Fritsch, F. N.; Carlson, R. E. (1980). "Monotone Piecewise Cubic Interpolation". SIAM Journal on Numerical Analysis (SIAM) 17 (2): 238–246. doi:.
This entry is from Wikipedia, the leading user-contributed encyclopedia. It may not have been reviewed by professional editors (see full disclaimer)




