6
$\begingroup$

Given $p+2$ nondecreasing (and not all identical) knots $t_0, \ldots, t_{p+1}$ on the real line, consider the normalized B-spline of degree $p$ defined over these knots.

We know that the B-spline is nonnegative. Where is its maximum, and what is its value?

If the knots are equispaced, the maximum is assumed at $(t_0 + t_{p+1})/2$. What is known about its value?

$\endgroup$
2
  • $\begingroup$ I don't know the answer. But the first derivative is a b-spline of degree $p-1$ over the same knots, so finding its zero should not be too difficult (there will only be a single zero). $\endgroup$
    – bubba
    Commented Dec 24, 2016 at 10:44
  • $\begingroup$ @bubba That is true, however the involved expressions become rather involved very quickly, and I don't know of a way to do it generically for all values of $p$. $\endgroup$
    – cfh
    Commented Jan 13, 2017 at 15:02

1 Answer 1

4
$\begingroup$

Using the recursive derivative formula (see for example here): $$N'_{i,p}(t) = \frac{p}{t_{i+p}-t_i} N_{i,p-1}(t) - \frac{p}{t_{i+p+1}-t_{i+1}} N_{i+1,p-1}(t)$$ We get that the maximum is achieved when: $$f(t) = \frac{N_{0,p-1}(t)}{t_{p}-t_0} - \frac{N_{1,p-1}(t)}{t_{p+1}-t_{1}} = 0$$ This corresponds to the intersection point of two basis functions of degree $p-1$, which lies in the interval $[t_1, t_p]$. Since the ratio between the denominators ${t_{p}-t_0}$ and ${t_{p+1}-t_1}$ can be arbitrary, I don't see a way to narrow it further than that..

So the problem now becomes finding the (single) root of this equation.

One way to proceed is to use a bisection method over the $\{t_i\}$ knot values, and once the root knot interval is isolated you're in polynomial territory and can use any univariate polynomial root method you like, or just continue with the bisection inside the interval.

Regarding the value of the maximum, for the general case, I don't see any simpler way than evaluating the basis function at the root point. However, for the special case of equispaced knots, the root is at $(t_0 + t_{p+1})/2$ as you correctly noted, and there is some symmetry that might be used to simplify some of the expressions.

The basic recursive function for B-Spline basis functions is: $$N_{i,p}(t) = \frac{t-t_i}{t_{i+p}-t_i} N_{i,p-1}(t) + \frac{t_{i+p+1}-t}{t_{i+p+1}-t_{i+1}} N_{i+1,p-1}(t)$$ For the rest of the answer I assume for simplicity that $t_i = i$, this enables to derive expressions that involve only integer numerators and denominators. The basis functions become simpler: $$N_{i,p}(t) = \frac{t-i}{p} N_{i,p-1}(t) + \frac{i+p+1-t}{p} N_{i+1,p-1}(t)$$ Note that this recursion implies that the denominator of the value is always the factorial $p!$ (since you can factor $\frac{1}{p}$ out in every level of the recursion).

The case where $p$ is odd is simpler since the root falls on a knot and specifically on the middle knot $t_{\frac{p+1}{2}} = (p+1)/2$. Assigning the above recursive function to the knots (omitting the denominator) results in a nice "Pascal-triangle-like" pattern: $$ \begin{array}{{13}{c}} p=1 &&&&&0&&1&&0&&&&\\ p=2 &&&&0&&1&&1&&0&&&\\ p=3 &&&0&&1&&4&&1&&0&&\\ p=4 &&0&&1&&11&&11&&1&&0&\\ p=5 &0&&1&&26&&66&&26&&1&&0&\\ \end{array} $$ Each row in the triangle above represents the (numerator of the) values of the basis function at the knots. The values for row $p$ in the triangle are computed with the recursive formula (the start and end values are zero by definition): $$V_p[k] = k V_{p-1}[k] + (p+1-k) V_{p-1}[k-1] , k=1..p$$ This recursive relation is derived directly from the basis recursive formula above.

The maximum value (finally) for the odd cases is then $\frac{V[(p+1)/2]}{ p!}$. For example, for $p=3$ the maximal value is $\frac{4}{3!} = \frac{2}{3}$ and for $p=5$ it is $\frac{66}{5!} = \frac{11}{20}$.

EDIT: Turns out this triangle has a respectable name - "Euler's Triangle". See Wikipedia and this MO answer for its nice properties.

For the even case, the derivation is a little more complicated, since the maximal value is achieved at the middle of the middle knot interval, namely at $(p+1)/2$, which is now no longer integer. To compute this value we evaluate the values at half-points (namely at the $p+3$ points $-0.5, 0.5, 1.5, ..., p+0.5, p+1.5$). Similar to the integer solution the recursive formula results in an integer numerator and denominator, however the denominator here is $2^p p!$ since we deal with half-points. The resulting triangle is: $$ \begin{array}{{13}{c}} p=1 &&&&0&&1&&1&&0&&&\\ p=2 &&&0&&1&&6&&1&&0&&\\ p=3 &&0&&1&&23&&23&&1&&0&\\ p=4 &0&&1&&76&&230&&76&&1&&0&\\ \end{array} $$ Each row in the triangle above represents the (numerator of the) values of the basis function at the $p+3$ half points above. The values for line $p$ are computed with the recursive formula (the start and end values are zero by definition): $$V_p[k] = (2k-1) V_{p-1}[k] + (2p+3-2k) V_{p-1}[k-1] , k=1..p+1$$

The maximum value (finally finally) for the even cases is then $\frac{V[(p+2)/2]}{2^p p!}$. For example, for $p=2$ the maximal value is $\frac{6}{2^2 2!} = \frac{3}{4}$ and for $p=4$ it is $\frac{230}{2^4 4!} = \frac{230}{384}$.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .