File: CQUAD-doubly_002dadaptive-integration.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 (141 lines) | stat: -rw-r--r-- 8,353 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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<!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: CQUAD doubly-adaptive integration</title>

<meta name="description" content="GNU Scientific Library &ndash; Reference Manual: CQUAD doubly-adaptive integration">
<meta name="keywords" content="GNU Scientific Library &ndash; Reference Manual: CQUAD doubly-adaptive integration">
<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="Numerical-Integration.html#Numerical-Integration" rel="up" title="Numerical Integration">
<link href="Fixed-order-Gauss_002dLegendre-integration.html#Fixed-order-Gauss_002dLegendre-integration" rel="next" title="Fixed order Gauss-Legendre integration">
<link href="QAWF-adaptive-integration-for-Fourier-integrals.html#QAWF-adaptive-integration-for-Fourier-integrals" rel="previous" title="QAWF adaptive integration for Fourier integrals">
<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="CQUAD-doubly_002dadaptive-integration"></a>
<div class="header">
<p>
Next: <a href="Fixed-order-Gauss_002dLegendre-integration.html#Fixed-order-Gauss_002dLegendre-integration" accesskey="n" rel="next">Fixed order Gauss-Legendre integration</a>, Previous: <a href="QAWF-adaptive-integration-for-Fourier-integrals.html#QAWF-adaptive-integration-for-Fourier-integrals" accesskey="p" rel="previous">QAWF adaptive integration for Fourier integrals</a>, Up: <a href="Numerical-Integration.html#Numerical-Integration" accesskey="u" rel="up">Numerical Integration</a> &nbsp; [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="CQUAD-doubly_002dadaptive-integration-1"></a>
<h3 class="section">17.11 CQUAD doubly-adaptive integration</h3>
<a name="index-cquad_002c-doubly_002dadaptive-integration"></a>

<p><small>CQUAD</small> is a new doubly-adaptive general-purpose quadrature
routine which can handle most types of singularities,
non-numerical function values such as <code>Inf</code> or <code>NaN</code>,
as well as some divergent integrals. It generally requires more
function evaluations than the integration routines in
<small>QUADPACK</small>, yet fails less often for difficult integrands.
</p>
<p>The underlying algorithm uses a doubly-adaptive scheme in which
Clenshaw-Curtis quadrature rules of increasing degree are used
to compute the integral in each interval. The <em>L_2</em>-norm of
the difference between the underlying interpolatory polynomials
of two successive rules is used as an error estimate. The
interval is subdivided if the difference between two successive
rules is too large or a rule of maximum degree has been reached.
</p>     
<dl>
<dt><a name="index-gsl_005fintegration_005fcquad_005fworkspace_005falloc"></a>Function: <em>gsl_integration_cquad_workspace *</em> <strong>gsl_integration_cquad_workspace_alloc</strong> <em>(size_t <var>n</var>) </em></dt>
<dd><a name="index-gsl_005fintegration_005fcquad_005fworkspace"></a>
<p>This function allocates a workspace sufficient to hold the data for
<var>n</var> intervals. The number <var>n</var> is not the maximum number of
intervals that will be evaluated. If the workspace is full, intervals
with smaller error estimates will be discarded. A minimum of 3
intervals is required and for most functions, a workspace of size 100
is sufficient.
</p></dd></dl>

<dl>
<dt><a name="index-gsl_005fintegration_005fcquad_005fworkspace_005ffree"></a>Function: <em>void</em> <strong>gsl_integration_cquad_workspace_free</strong> <em>(gsl_integration_cquad_workspace * <var>w</var>)</em></dt>
<dd><p>This function frees the memory associated with the workspace <var>w</var>.
</p></dd></dl>

<dl>
<dt><a name="index-gsl_005fintegration_005fcquad"></a>Function: <em>int</em> <strong>gsl_integration_cquad</strong> <em>(const gsl_function * <var>f</var>, double <var>a</var>, double <var>b</var>, double <var>epsabs</var>, double <var>epsrel</var>, gsl_integration_cquad_workspace * <var>workspace</var>,  double * <var>result</var>, double * <var>abserr</var>, size_t * <var>nevals</var>)</em></dt>
<dd><p>This function computes the integral of <em>f</em> over <em>(a,b)</em>
within the desired absolute and relative error limits, <var>epsabs</var>
and <var>epsrel</var> using the <small>CQUAD</small> algorithm.  The function returns
the final approximation, <var>result</var>, an estimate of the absolute
error, <var>abserr</var>, and the number of function evaluations required,
<var>nevals</var>.
</p>
<p>The <small>CQUAD</small> algorithm divides the integration region into
subintervals, and in each iteration, the subinterval with the largest
estimated error is processed.  The algorithm uses Clenshaw-Curits
quadrature rules of degree 4, 8, 16 and 32 over 5, 9, 17 and 33 nodes
respectively. Each interval is initialized with the lowest-degree
rule. When an interval is processed, the next-higher degree rule is
evaluated and an error estimate is computed based on the
<em>L_2</em>-norm of the difference between the underlying interpolating
polynomials of both rules. If the highest-degree rule has already been
used, or the interpolatory polynomials differ significantly, the
interval is bisected.
</p>
<p>The subintervals and their results are stored in the memory 
provided by <var>workspace</var>. If the error estimate or the number of 
function evaluations is not needed, the pointers <var>abserr</var> and <var>nevals</var>
can be set to <code>NULL</code>.
</p></dd></dl>

<hr>
<div class="header">
<p>
Next: <a href="Fixed-order-Gauss_002dLegendre-integration.html#Fixed-order-Gauss_002dLegendre-integration" accesskey="n" rel="next">Fixed order Gauss-Legendre integration</a>, Previous: <a href="QAWF-adaptive-integration-for-Fourier-integrals.html#QAWF-adaptive-integration-for-Fourier-integrals" accesskey="p" rel="previous">QAWF adaptive integration for Fourier integrals</a>, Up: <a href="Numerical-Integration.html#Numerical-Integration" accesskey="u" rel="up">Numerical Integration</a> &nbsp; [<a href="Function-Index.html#Function-Index" title="Index" rel="index">Index</a>]</p>
</div>



</body>
</html>