1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
<html lang="en">
<head>
<title>Overview of B-splines - GNU Scientific Library -- Reference Manual</title>
<meta http-equiv="Content-Type" content="text/html">
<meta name="description" content="GNU Scientific Library -- Reference Manual">
<meta name="generator" content="makeinfo 4.8">
<link title="Top" rel="start" href="index.html#Top">
<link rel="up" href="Basis-Splines.html" title="Basis Splines">
<link rel="next" href="Initializing-the-B_002dsplines-solver.html" title="Initializing the B-splines solver">
<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
<!--
Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 The GSL Team.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``GNU General Public License'' and ``Free Software
Needs Free Documentation'', the Front-Cover text being ``A GNU Manual'',
and with the Back-Cover Text being (a) (see below). A copy of the
license is included in the section entitled ``GNU Free Documentation
License''.
(a) The Back-Cover Text is: ``You have freedom to copy and modify this
GNU Manual, like GNU software.''-->
<meta http-equiv="Content-Style-Type" content="text/css">
<style type="text/css"><!--
pre.display { font-family:inherit }
pre.format { font-family:inherit }
pre.smalldisplay { font-family:inherit; font-size:smaller }
pre.smallformat { font-family:inherit; font-size:smaller }
pre.smallexample { font-size:smaller }
pre.smalllisp { font-size:smaller }
span.sc { font-variant:small-caps }
span.roman { font-family:serif; font-weight:normal; }
span.sansserif { font-family:sans-serif; font-weight:normal; }
--></style>
</head>
<body>
<div class="node">
<p>
<a name="Overview-of-B-splines"></a>
<a name="Overview-of-B_002dsplines"></a>
Next: <a rel="next" accesskey="n" href="Initializing-the-B_002dsplines-solver.html">Initializing the B-splines solver</a>,
Up: <a rel="up" accesskey="u" href="Basis-Splines.html">Basis Splines</a>
<hr>
</div>
<h3 class="section">38.1 Overview</h3>
<p><a name="index-basis-splines_002c-overview-2425"></a>
B-splines are commonly used as basis functions to fit smoothing
curves to large data sets. To do this, the abscissa axis is
broken up into some number of intervals, where the endpoints
of each interval are called <dfn>breakpoints</dfn>. These breakpoints
are then converted to <dfn>knots</dfn> by imposing various continuity
and smoothness conditions at each interface. Given a nondecreasing
knot vector
<!-- {$t = \{t_0, t_1, \dots, t_{n+k-1}\}$} -->
t = {t_0, t_1, <small class="dots">...</small>, t_{n+k-1}},
the n basis splines of order k are defined by
<pre class="example"> B_(i,1)(x) = (1, t_i <= x < t_(i+1)
(0, else
B_(i,k)(x) = [(x - t_i)/(t_(i+k-1) - t_i)] B_(i,k-1)(x) + [(t_(i+k) - x)/(t_(i+k) - t_(i+1))] B_(i+1,k-1)(x)
</pre>
<p>for i = 0, <small class="dots">...</small>, n-1. The common case of cubic B-splines
is given by k = 4. The above recurrence relation can be
evaluated in a numerically stable way by the de Boor algorithm.
<p>If we define appropriate knots on an interval [a,b] then
the B-spline basis functions form a complete set on that interval.
Therefore we can expand a smoothing function as
<pre class="example"> f(x) = \sum_i c_i B_(i,k)(x)
</pre>
<p>given enough (x_j, f(x_j)) data pairs. The c_i can
be readily obtained from a least-squares fit.
<hr>The GNU Scientific Library - a free numerical library licensed under the GNU GPL<br>Back to the <a href="/software/gsl/">GNU Scientific Library Homepage</a></body></html>
|