File: Overview-of-B_002dsplines.html

package info (click to toggle)
gsl-ref-html 2.3-1
  • links: PTS
  • area: non-free
  • in suites: bullseye, buster, sid
  • size: 6,876 kB
  • ctags: 4,574
  • sloc: makefile: 35
file content (110 lines) | stat: -rw-r--r-- 4,955 bytes parent folder | download
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 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.3 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 the freedom to copy and modify this
GNU Manual." -->
<!-- Created by GNU Texinfo 5.1, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU Scientific Library &ndash; Reference Manual: Overview of B-splines</title>

<meta name="description" content="GNU Scientific Library &ndash; Reference Manual: Overview of B-splines">
<meta name="keywords" content="GNU Scientific Library &ndash; Reference Manual: Overview of B-splines">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Function-Index.html#Function-Index" rel="index" title="Function Index">
<link href="Basis-Splines.html#Basis-Splines" rel="up" title="Basis Splines">
<link href="Initializing-the-B_002dsplines-solver.html#Initializing-the-B_002dsplines-solver" rel="next" title="Initializing the B-splines solver">
<link href="Basis-Splines.html#Basis-Splines" rel="previous" title="Basis Splines">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>


</head>

<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="Overview-of-B_002dsplines"></a>
<div class="header">
<p>
Next: <a href="Initializing-the-B_002dsplines-solver.html#Initializing-the-B_002dsplines-solver" accesskey="n" rel="next">Initializing the B-splines solver</a>, Up: <a href="Basis-Splines.html#Basis-Splines" accesskey="u" rel="up">Basis Splines</a> &nbsp; [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="Overview-6"></a>
<h3 class="section">40.1 Overview</h3>
<a name="index-basis-splines_002c-overview"></a>

<p>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 <em>breakpoints</em>. These breakpoints
are then converted to <em>knots</em> by imposing various continuity
and smoothness conditions at each interface. Given a nondecreasing
knot vector
<em>t = {t_0, t_1, &hellip;, t_{n+k-1}}</em>,
the <em>n</em> basis splines of order <em>k</em> are defined by
</p>
<div class="example">
<pre class="example">B_(i,1)(x) = (1, t_i &lt;= x &lt; 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></div>

<p>for <em>i = 0, &hellip;, n-1</em>. The common case of cubic B-splines
is given by <em>k = 4</em>. The above recurrence relation can be
evaluated in a numerically stable way by the de Boor algorithm.
</p>
<p>If we define appropriate knots on an interval <em>[a,b]</em> then
the B-spline basis functions form a complete set on that interval.
Therefore we can expand a smoothing function as
</p>
<div class="example">
<pre class="example">f(x) = \sum_i c_i B_(i,k)(x)
</pre></div>

<p>given enough <em>(x_j, f(x_j))</em> data pairs. The coefficients
<em>c_i</em> can be readily obtained from a least-squares fit.
</p>



</body>
</html>