[DEV] add v1.76.0

This commit is contained in:
2021-10-05 21:37:46 +02:00
parent a97e9ae7d4
commit d0115b733d
45133 changed files with 4744437 additions and 1026325 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Bessel Function Overview</title>
<link rel="stylesheet" href="../../math.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Math Toolkit 2.6.0">
<link rel="home" href="../../index.html" title="Math Toolkit 3.0.0">
<link rel="up" href="../bessel.html" title="Bessel Functions">
<link rel="prev" href="../bessel.html" title="Bessel Functions">
<link rel="next" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">
@@ -34,11 +34,12 @@
<p>
Bessel Functions are solutions to Bessel's ordinary differential equation:
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/bessel1.svg"></span>
</p></blockquote></div>
<p>
<span class="inlinemediaobject"><img src="../../../equations/bessel1.svg"></span>
</p>
<p>
where &#957; &#160; is the <span class="emphasis"><em>order</em></span> of the equation, and may be an arbitrary
where ν is the <span class="emphasis"><em>order</em></span> of the equation, and may be an arbitrary
real or complex number, although integer orders are the most common occurrence.
</p>
<p>
@@ -46,60 +47,69 @@
</p>
<p>
Since this is a second order differential equation, there must be two linearly
independent solutions, the first of these is denoted J<sub>v</sub> &#160;
independent solutions, the first of these is denoted J<sub>v</sub>
and known as a Bessel
function of the first kind:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/bessel2.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/bessel2.svg"></span>
</p></blockquote></div>
<p>
This function is implemented in this library as <a class="link" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>.
</p>
<p>
The second solution is denoted either Y<sub>v</sub> &#160; or N<sub>v</sub> &#160;
The second solution is denoted either Y<sub>v</sub> or N<sub>v</sub>
and is known as either a Bessel
Function of the second kind, or as a Neumann function:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/bessel3.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/bessel3.svg"></span>
</p></blockquote></div>
<p>
This function is implemented in this library as <a class="link" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_neumann</a>.
</p>
<p>
The Bessel functions satisfy the recurrence relations:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/bessel4.svg"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/bessel5.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/bessel4.svg"></span>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/bessel5.svg"></span>
</p></blockquote></div>
<p>
Have the derivatives:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/bessel6.svg"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/bessel7.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/bessel6.svg"></span>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/bessel7.svg"></span>
</p></blockquote></div>
<p>
Have the Wronskian relation:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/bessel8.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/bessel8.svg"></span>
</p></blockquote></div>
<p>
and the reflection formulae:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/bessel9.svg"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/bessel10.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/bessel9.svg"></span>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/bessel10.svg"></span>
</p></blockquote></div>
<h5>
<a name="math_toolkit.bessel.bessel_over.h1"></a>
<span class="phrase"><a name="math_toolkit.bessel.bessel_over.modified_bessel_functions"></a></span><a class="link" href="bessel_over.html#math_toolkit.bessel.bessel_over.modified_bessel_functions">Modified
@@ -111,21 +121,24 @@ and is known as either a Bessel
is purely imaginary: giving a real valued result. In this case the functions
are the two linearly independent solutions to the modified Bessel equation:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel1.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel1.svg"></span>
</p></blockquote></div>
<p>
The solutions are known as the modified Bessel functions of the first and
second kind (or occasionally as the hyperbolic Bessel functions of the first
and second kind). They are denoted I<sub>v</sub> &#160; and K<sub>v</sub> &#160;
and second kind). They are denoted I<sub>v</sub> and K<sub>v</sub>
respectively:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel2.svg"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel3.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel2.svg"></span>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel3.svg"></span>
</p></blockquote></div>
<p>
These functions are implemented in this library as <a class="link" href="mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_i</a>
and <a class="link" href="mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">cyl_bessel_k</a> respectively.
@@ -133,36 +146,43 @@ respectively:
<p>
The modified Bessel functions satisfy the recurrence relations:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel4.svg"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel5.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel4.svg"></span>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel5.svg"></span>
</p></blockquote></div>
<p>
Have the derivatives:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel6.svg"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel7.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel6.svg"></span>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel7.svg"></span>
</p></blockquote></div>
<p>
Have the Wronskian relation:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel8.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel8.svg"></span>
</p></blockquote></div>
<p>
and the reflection formulae:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel9.svg"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel10.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel9.svg"></span>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/mbessel10.svg"></span>
</p></blockquote></div>
<h5>
<a name="math_toolkit.bessel.bessel_over.h2"></a>
<span class="phrase"><a name="math_toolkit.bessel.bessel_over.spherical_bessel_functions"></a></span><a class="link" href="bessel_over.html#math_toolkit.bessel.bessel_over.spherical_bessel_functions">Spherical
@@ -172,19 +192,21 @@ respectively:
When solving the Helmholtz equation in spherical coordinates by separation
of variables, the radial equation has the form:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/sbessel1.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/sbessel1.svg"></span>
</p></blockquote></div>
<p>
The two linearly independent solutions to this equation are called the spherical
Bessel functions j<sub>n</sub> &#160; and y<sub>n</sub> &#160;, and are related to the ordinary Bessel functions
J<sub>n</sub> &#160; and Y<sub>n</sub> &#160; by:
Bessel functions j<sub>n</sub> and y<sub>n</sub> and are related to the ordinary Bessel functions
J<sub>n</sub> and Y<sub>n</sub> by:
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/sbessel2.svg"></span>
</p></blockquote></div>
<p>
<span class="inlinemediaobject"><img src="../../../equations/sbessel2.svg"></span>
</p>
<p>
The spherical Bessel function of the second kind y<sub>n</sub> &#160;
The spherical Bessel function of the second kind y<sub>n</sub>
is also known as the spherical
Neumann function n<sub>n</sub>.
</p>
@@ -195,11 +217,11 @@ is also known as the spherical
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2006-2010, 2012-2014, 2017 Nikhar
Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos,
Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Johan R&#229;de, Gautam
Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle Walker
and Xiaogang Zhang<p>
<td align="right"><div class="copyright-footer">Copyright © 2006-2021 Nikhar Agrawal, Anton Bikineev, Matthew Borland,
Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno
Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde,
Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle
Walker and Xiaogang Zhang<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

View File

@@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Finding Zeros of Bessel Functions of the First and Second Kinds</title>
<link rel="stylesheet" href="../../math.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Math Toolkit 2.6.0">
<link rel="home" href="../../index.html" title="Math Toolkit 3.0.0">
<link rel="up" href="../bessel.html" title="Bessel Functions">
<link rel="prev" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">
<link rel="next" href="mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">
@@ -70,7 +70,7 @@
<span class="identifier">OutputIterator</span> <span class="identifier">out_it</span><span class="special">);</span> <span class="comment">// Destination for zeros.</span>
</pre>
<p>
There are also versions which allow control of the <a class="link" href="../../policy.html" title="Chapter&#160;18.&#160;Policies: Controlling Precision, Error Handling etc">Policies</a>
There are also versions which allow control of the <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policies</a>
for error handling and precision.
</p>
<pre class="programlisting"> <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
@@ -107,21 +107,21 @@
<span class="phrase"><a name="math_toolkit.bessel.bessel_root.description"></a></span><a class="link" href="bessel_root.html#math_toolkit.bessel.bessel_root.description">Description</a>
</h5>
<p>
Every real order &#957; cylindrical Bessel and Neumann functions have an infinite
Every real order ν cylindrical Bessel and Neumann functions have an infinite
number of zeros on the positive real axis. The real zeros on the positive
real axis can be found by solving for the roots of
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="emphasis"><em>J<sub>ν</sub>(j<sub>ν, m</sub>) = 0</em></span>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="emphasis"><em>Y<sub>ν</sub>(y<sub>ν, m</sub>) = 0</em></span>
</p></blockquote></div>
<p>
&#8193; <span class="emphasis"><em>J<sub>&#957;</sub>(j<sub>&#957;, m</sub>) = 0</em></span>
</p>
<p>
&#8193; <span class="emphasis"><em>Y<sub>&#957;</sub>(y<sub>&#957;, m</sub>) = 0</em></span>
</p>
<p>
Here, <span class="emphasis"><em>j<sub>&#957;, m</sub></em></span> represents the <span class="emphasis"><em>m<sup>th</sup></em></span> root
of the cylindrical Bessel function of order <span class="emphasis"><em>&#957;</em></span>, and <span class="emphasis"><em>y<sub>&#957;,
Here, <span class="emphasis"><em>j<sub>ν, m</sub></em></span> represents the <span class="emphasis"><em>m<sup>th</sup></em></span> root
of the cylindrical Bessel function of order <span class="emphasis"><em>ν</em></span>, and <span class="emphasis"><em>y<sub>ν,
m</sub></em></span> represents the <span class="emphasis"><em>m<sup>th</sup></em></span> root of the cylindrical
Neumann function of order <span class="emphasis"><em>&#957;</em></span>.
Neumann function of order <span class="emphasis"><em>ν</em></span>.
</p>
<p>
The zeros or roots (values of <code class="computeroutput"><span class="identifier">x</span></code>
@@ -134,8 +134,9 @@
In each case the index or rank of the zero returned is 1-based, which is
to say:
</p>
<pre class="programlisting"><span class="identifier">cyl_bessel_j_zero</span><span class="special">(</span><span class="identifier">v</span><span class="special">,</span> <span class="number">1</span><span class="special">);</span>
</pre>
<div class="blockquote"><blockquote class="blockquote"><p>
cyl_bessel_j_zero(v, 1);
</p></blockquote></div>
<p>
returns the first zero of Bessel J.
</p>
@@ -158,12 +159,14 @@
the <code class="computeroutput"><span class="identifier">cyl_bessel_j</span></code> and <code class="computeroutput"><span class="identifier">cyl_neumann</span></code> functions, but not infinite
nor NaN.
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/bessel_j_zeros.svg" align="middle"></span>
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/neumann_y_zeros.svg" align="middle"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../graphs/bessel_j_zeros.svg" align="middle"></span>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../graphs/neumann_y_zeros.svg" align="middle"></span>
</p></blockquote></div>
<h5>
<a name="math_toolkit.bessel.bessel_root.h2"></a>
<span class="phrase"><a name="math_toolkit.bessel.bessel_root.examples_of_finding_bessel_and_n"></a></span><a class="link" href="bessel_root.html#math_toolkit.bessel.bessel_root.examples_of_finding_bessel_and_n">Examples
@@ -543,47 +546,47 @@
<span class="phrase"><a name="math_toolkit.bessel.bessel_root.implementation"></a></span><a class="link" href="bessel_root.html#math_toolkit.bessel.bessel_root.implementation">Implementation</a>
</h4>
<p>
Various methods are used to compute initial estimates for <span class="emphasis"><em>j<sub>&#957;, m</sub></em></span>
and <span class="emphasis"><em>y<sub>&#957;, m</sub></em></span> ; these are described in detail below.
Various methods are used to compute initial estimates for <span class="emphasis"><em>j<sub>ν, m</sub></em></span>
and <span class="emphasis"><em>y<sub>ν, m</sub></em></span> ; these are described in detail below.
</p>
<p>
After finding the initial estimate of a given root, its precision is subsequently
refined to the desired level using Newton-Raphson iteration from Boost.Math's
<a class="link" href="../roots_deriv.html" title="Root Finding With Derivatives: Newton-Raphson, Halley &amp; Schr&#246;der">root-finding with derivatives</a>
<a class="link" href="../roots_deriv.html" title="Root Finding With Derivatives: Newton-Raphson, Halley &amp; Schröder">root-finding with derivatives</a>
utilities combined with the functions <a class="link" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_bessel_j</a>
and <a class="link" href="bessel_first.html" title="Bessel Functions of the First and Second Kinds">cyl_neumann</a>.
</p>
<p>
Newton iteration requires both <span class="emphasis"><em>J<sub>&#957;</sub>(x)</em></span> or <span class="emphasis"><em>Y<sub>&#957;</sub>(x)</em></span>
as well as its derivative. The derivatives of <span class="emphasis"><em>J<sub>&#957;</sub>(x)</em></span> and
<span class="emphasis"><em>Y<sub>&#957;</sub>(x)</em></span> with respect to <span class="emphasis"><em>x</em></span> are given
Newton iteration requires both <span class="emphasis"><em>J<sub>ν</sub>(x)</em></span> or <span class="emphasis"><em>Y<sub>ν</sub>(x)</em></span>
as well as its derivative. The derivatives of <span class="emphasis"><em>J<sub>ν</sub>(x)</em></span> and
<span class="emphasis"><em>Y<sub>ν</sub>(x)</em></span> with respect to <span class="emphasis"><em>x</em></span> are given
by M. Abramowitz and I. A. Stegun, Handbook of Mathematical Functions, NBS
(1964). In particular,
</p>
<p>
&#8193; <span class="emphasis"><em>d/<sub>dx</sub> <span class="emphasis"><em>J<sub>&#957;</sub>(x)</em></span> = <span class="emphasis"><em>J<sub>&#957;-1</sub>(x)</em></span> - &#957; J<sub>&#957;</sub>(x)</em></span>
/ x
</p>
<p>
&#8193; <span class="emphasis"><em>d/<sub>dx</sub> <span class="emphasis"><em>Y<sub>&#957;</sub>(x)</em></span> = <span class="emphasis"><em>Y<sub>&#957;-1</sub>(x)</em></span> - &#957; Y<sub>&#957;</sub>(x)</em></span>
/ x
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="serif_italic">d/<sub>dx</sub> <span class="emphasis"><em>J<sub>ν</sub>(x)</em></span> = <span class="emphasis"><em>J<sub>ν-1</sub>(x)</em></span>
- ν J<sub>ν</sub>(x) / x</span>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="serif_italic">d/<sub>dx</sub> <span class="emphasis"><em>Y<sub>ν</sub>(x)</em></span> = <span class="emphasis"><em>Y<sub>ν-1</sub>(x)</em></span>
- ν Y<sub>ν</sub>(x) / x</span>
</p></blockquote></div>
<p>
Enumeration of the rank of a root (in other words the index of a root) begins
with one and counts up, in other words <span class="emphasis"><em>m,=1,2,3,&#8230;</em></span> The
with one and counts up, in other words <span class="emphasis"><em>m,=1,2,3,</em></span> The
value of the first root is always greater than zero.
</p>
<p>
For certain special parameters, cylindrical Bessel functions and cylindrical
Neumann functions have a root at the origin. For example, <span class="emphasis"><em>J<sub>&#957;</sub>(x)</em></span>
has a root at the origin for every positive order <span class="emphasis"><em>&#957; &gt; 0</em></span>,
and for every negative integer order <span class="emphasis"><em>&#957; = -n</em></span> with <span class="emphasis"><em>n
&#8712; &#8469; <sup>+</sup></em></span> and <span class="emphasis"><em>n &#8800; 0</em></span>.
Neumann functions have a root at the origin. For example, <span class="emphasis"><em>J<sub>ν</sub>(x)</em></span>
has a root at the origin for every positive order <span class="emphasis"><em>ν &gt; 0</em></span>,
and for every negative integer order <span class="emphasis"><em>ν = -n</em></span> with <span class="emphasis"><em>n
<sup>+</sup></em></span> and <span class="emphasis"><em>n 0</em></span>.
</p>
<p>
In addition, <span class="emphasis"><em>Y<sub>&#957;</sub>(x)</em></span> has a root at the origin for every
negative half-integer order <span class="emphasis"><em>&#957; = -n/2</em></span>, with <span class="emphasis"><em>n
&#8712; &#8469; <sup>+</sup></em></span> and and <span class="emphasis"><em>n &#8800; 0</em></span>.
In addition, <span class="emphasis"><em>Y<sub>ν</sub>(x)</em></span> has a root at the origin for every
negative half-integer order <span class="emphasis"><em>ν = -n/2</em></span>, with <span class="emphasis"><em>n
<sup>+</sup></em></span> and and <span class="emphasis"><em>n 0</em></span>.
</p>
<p>
For these special parameter values, the origin with a value of <span class="emphasis"><em>x
@@ -596,132 +599,139 @@
is made between positive order and negative order, and different methods
are used for these. In addition, different algorithms are used for the first
root <span class="emphasis"><em>m = 1</em></span> and for subsequent roots with higher rank
<span class="emphasis"><em>m &#8805; 2</em></span>. Furthermore, estimates of the roots for Bessel
functions with order above and below a cutoff at <span class="emphasis"><em>&#957; = 2.2</em></span>
<span class="emphasis"><em>m 2</em></span>. Furthermore, estimates of the roots for Bessel
functions with order above and below a cutoff at <span class="emphasis"><em>ν = 2.2</em></span>
are calculated with different methods.
</p>
<p>
Calculations of the estimates of <span class="emphasis"><em>j<sub>&#957;,1</sub></em></span> and <span class="emphasis"><em>y<sub>&#957;,1</sub></em></span>
with <span class="emphasis"><em>0 &#8804; &#957; &lt; 2.2</em></span> use empirically tabulated values. The
Calculations of the estimates of <span class="emphasis"><em>j<sub>ν,1</sub></em></span> and <span class="emphasis"><em>y<sub>ν,1</sub></em></span>
with <span class="emphasis"><em>0 ν &lt; 2.2</em></span> use empirically tabulated values. The
coefficients for these have been generated by a computer algebra system.
</p>
<p>
Calculations of the estimates of <span class="emphasis"><em>j<sub>&#957;,1</sub></em></span> and <span class="emphasis"><em>y<sub>&#957;,1</sub></em></span>
with <span class="emphasis"><em>&#957;&#8805; 2.2</em></span> use Eqs.9.5.14 and 9.5.15 in M. Abramowitz
Calculations of the estimates of <span class="emphasis"><em>j<sub>ν,1</sub></em></span> and <span class="emphasis"><em>y<sub>ν,1</sub></em></span>
with <span class="emphasis"><em>ν≥ 2.2</em></span> use Eqs.9.5.14 and 9.5.15 in M. Abramowitz
and I. A. Stegun, Handbook of Mathematical Functions, NBS (1964).
</p>
<p>
In particular,
</p>
<p>
&#8193; <span class="emphasis"><em>j<sub>&#957;,1</sub> &#8773; &#957; + 1.85575 &#957;<sup>&#8531;</sup> + 1.033150 &#957;<sup>-&#8531;</sup> - 0.00397 &#957;<sup>-1</sup> - 0.0908 &#957;<sup>-5/3</sup> + 0.043 &#957;<sup>-7/3</sup> +
&#8230;</em></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="serif_italic">j<sub>ν,1</sub> ν + 1.85575 ν<sup></sup> + 1.033150 ν<sup>-</sup> - 0.00397 ν<sup>-1</sup> - 0.0908
ν<sup>-5/3</sup> + 0.043 ν<sup>-7/3</sup> + …</span>
</p></blockquote></div>
<p>
and
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="serif_italic">y<sub>ν,1</sub>ν + 0.93157 ν<sup></sup> + 0.26035 ν<sup>-⅓</sup> + 0.01198 ν<sup>-1</sup> - 0.0060
ν<sup>-5/3</sup> - 0.001 ν<sup>-7/3</sup> + …</span>
</p></blockquote></div>
<p>
&#8193; <span class="emphasis"><em>y<sub>&#957;,1</sub> &#8773; &#957; + 0.93157 &#957;<sup>&#8531;</sup> + 0.26035 &#957;<sup>-&#8531;</sup> + 0.01198 &#957;<sup>-1</sup> - 0.0060 &#957;<sup>-5/3</sup> - 0.001 &#957;<sup>-7/3</sup> +
&#8230;</em></span>
</p>
<p>
Calculations of the estimates of <span class="emphasis"><em>j<sub>&#957;, m</sub></em></span> and <span class="emphasis"><em>y<sub>&#957;,
m</sub></em></span> with rank <span class="emphasis"><em>m &gt; 2</em></span> and <span class="emphasis"><em>0 &#8804; &#957; &lt;
Calculations of the estimates of <span class="emphasis"><em>j<sub>ν, m</sub></em></span> and <span class="emphasis"><em>y<sub>ν,
m</sub></em></span> with rank <span class="emphasis"><em>m &gt; 2</em></span> and <span class="emphasis"><em>0 ≤ ν &lt;
2.2</em></span> use McMahon's approximation, as described in M. Abramowitz
and I. A. Stegan, Section 9.5 and 9.5.12. In particular,
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="emphasis"><em>j<sub>ν,m</sub>, y<sub>ν,m</sub></em></span>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><div class="blockquote"><blockquote class="blockquote"><p>
β - (μ-1) / 8β
</p></blockquote></div></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><div class="blockquote"><blockquote class="blockquote"><p>
<span class="emphasis"><em>- 4(μ-1)(7μ - 31) / 3(8β)<sup>3</sup></em></span>
</p></blockquote></div></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><div class="blockquote"><blockquote class="blockquote"><p>
<span class="emphasis"><em>-32(μ-1)(83μ² - 982μ + 3779) / 15(8β)<sup>5</sup></em></span>
</p></blockquote></div></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><div class="blockquote"><blockquote class="blockquote"><p>
<span class="emphasis"><em>-64(μ-1)(6949μ<sup>3</sup> - 153855μ² + 1585743μ- 6277237) / 105(8a)<sup>7</sup></em></span>
</p></blockquote></div></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><div class="blockquote"><blockquote class="blockquote"><p>
<span class="emphasis"><em>- …</em></span> (5)
</p></blockquote></div></blockquote></div>
<p>
&#8193; <span class="emphasis"><em>j<sub>&#957;,m</sub>, y<sub>&#957;,m</sub> &#8773; &#946; - (&#956;-1) / 8&#946;</em></span>
where <span class="emphasis"><em>μ = 4ν<sup>2</sup></em></span> and <span class="emphasis"><em>β = (m + ½ν - ¼)π</em></span> for
<span class="emphasis"><em>j<sub>ν,m</sub></em></span> and <span class="emphasis"><em>β = (m + ½ν -¾)π for <span class="emphasis"><em>y<sub>ν,m</sub></em></span></em></span>.
</p>
<p>
&#8193; &#8193; &#8193; <span class="emphasis"><em>- 4(&#956;-1)(7&#956; - 31) / 3(8&#946;)<sup>3</sup></em></span>
</p>
<p>
&#8193; &#8193; &#8193; <span class="emphasis"><em>-32(&#956;-1)(83&#956;&#178; - 982&#956; + 3779) / 15(8&#946;)<sup>5</sup></em></span>
</p>
<p>
&#8193; &#8193; &#8193; <span class="emphasis"><em>-64(&#956;-1)(6949&#956;<sup>3</sup> - 153855&#956;&#178; + 1585743&#956;- 6277237) / 105(8a)<sup>7</sup></em></span>
</p>
<p>
&#8193; &#8193; &#8193; <span class="emphasis"><em>- &#8230;</em></span> &#8193; &#8193; (5)
</p>
<p>
where <span class="emphasis"><em>&#956; = 4&#957;<sup>2</sup></em></span> and <span class="emphasis"><em>&#946; = (m + &#189;&#957; - &#188;)&#960;</em></span> for
<span class="emphasis"><em>j<sub>&#957;,m</sub></em></span> and <span class="emphasis"><em>&#946; = (m + &#189;&#957; -&#190;)&#960; for <span class="emphasis"><em>y<sub>&#957;,m</sub></em></span></em></span>.
</p>
<p>
Calculations of the estimates of <span class="emphasis"><em>j<sub>&#957;, m</sub></em></span> and <span class="emphasis"><em>y<sub>&#957;,
m</sub></em></span> with <span class="emphasis"><em>&#957; &#8805; 2.2</em></span> use one term in the asymptotic
Calculations of the estimates of <span class="emphasis"><em>j<sub>ν, m</sub></em></span> and <span class="emphasis"><em>y<sub>ν,
m</sub></em></span> with <span class="emphasis"><em>ν ≥ 2.2</em></span> use one term in the asymptotic
expansion given in Eq.9.5.22 and top line of Eq.9.5.26 combined with Eq.
9.3.39, all in M. Abramowitz and I. A. Stegun, Handbook of Mathematical Functions,
NBS (1964) explicit and easy-to-understand treatment for asymptotic expansion
of zeros. The latter two equations are expressed for argument <span class="emphasis"><em>(x)</em></span>
greater than one. (Olver also gives the series form of the equations in
<a href="http://dlmf.nist.gov/10.21#vi" target="_top">&#167;10.21(vi) McMahon's Asymptotic
<a href="http://dlmf.nist.gov/10.21#vi" target="_top">§10.21(vi) McMahon's Asymptotic
Expansions for Large Zeros</a> - using slightly different variable names).
</p>
<p>
In summary,
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="serif_italic">j<sub>ν, m</sub> νx(-ζ) + f<sub>1</sub>(-ζ/ν)</span>
</p></blockquote></div>
<p>
&#8193; <span class="emphasis"><em>j<sub>&#957;, m</sub> &#8764; &#957;x(-&#950;) + f<sub>1</sub>(-&#950;/&#957;)</em></span>
</p>
<p>
where <span class="emphasis"><em>-&#950; = &#957;<sup>-2/3</sup>a<sub>m</sub></em></span> and <span class="emphasis"><em>a<sub>m</sub></em></span> is the absolute
where <span class="emphasis"><em>-ζ = ν<sup>-2/3</sup>a<sub>m</sub></em></span> and <span class="emphasis"><em>a<sub>m</sub></em></span> is the absolute
value of the <span class="emphasis"><em>m<sup>th</sup></em></span> root of <span class="emphasis"><em>Ai(x)</em></span>
on the negative real axis.
</p>
<p>
Here <span class="emphasis"><em>x = x(-&#950;)</em></span> is the inverse of the function
Here <span class="emphasis"><em>x = x(-ζ)</em></span> is the inverse of the function
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="serif_italic">⅔(-ζ)<sup>3/2</sup> = √(x² - 1) - cos⁻¹(1/x)</span>
</p></blockquote></div>
<p>
&#8193; <span class="emphasis"><em>&#8532;(-&#950;)<sup>3/2</sup> = &#8730;(x&#178; - 1) - cos&#8315;&#185;(1/x)</em></span> &#8193; &#8193; (7)
(7)
</p>
<p>
Furthermore,
</p>
<p>
&#8193; <span class="emphasis"><em>f<sub>1</sub>(-&#950;) = &#189;x(-&#950;) {h(-&#950;)}&#178; &#8901; b<sub>0</sub>(-&#950;)</em></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="serif_italic">f<sub>1</sub>(-ζ) = ½x(-ζ) {h(-ζ)}² ⋅ b<sub>0</sub>(-ζ)</span>
</p></blockquote></div>
<p>
where
</p>
<p>
&#8193; <span class="emphasis"><em>h(-&#950;) = {4(-&#950;) / (x&#178; - 1)}<sup>4</sup></em></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="serif_italic">h(-ζ) = {4(-ζ) / (x² - 1)}<sup>4</sup></span>
</p></blockquote></div>
<p>
and
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="serif_italic">b<sub>0</sub>(-ζ) = -5/(48ζ²) + 1/(-ζ)<sup>½</sup> ⋅ { 5/(24(x<sup>2</sup>-1)<sup>3/2</sup>) +
1/(8(x<sup>2</sup>-1)<sup>½)</sup>}</span>
</p></blockquote></div>
<p>
&#8193; <span class="emphasis"><em>b<sub>0</sub>(-&#950;) = -5/(48&#950;&#178;) + 1/(-&#950;)<sup>&#189;</sup> &#8901; { 5/(24(x<sup>2</sup>-1)<sup>3/2</sup>) + 1/(8(x<sup>2</sup>-1)<sup>&#189;)</sup>}</em></span>
</p>
<p>
When solving for <span class="emphasis"><em>x(-&#950;)</em></span> in Eq. 7 above, the right-hand-side
When solving for <span class="emphasis"><em>x(-ζ)</em></span> in Eq. 7 above, the right-hand-side
is expanded to order 2 in a Taylor series for large <span class="emphasis"><em>x</em></span>.
This results in
</p>
<p>
&#8193; <span class="emphasis"><em>&#8532;(-&#950;)<sup>3/2</sup> &#8776; x + 1/2x - &#960;/2</em></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="serif_italic">⅔(-ζ)<sup>3/2</sup> x + 1/2x - π/2</span>
</p></blockquote></div>
<p>
The positive root of the resulting quadratic equation is used to find an
initial estimate <span class="emphasis"><em>x(-&#950;)</em></span>. This initial estimate is subsequently
initial estimate <span class="emphasis"><em>x(-ζ)</em></span>. This initial estimate is subsequently
refined with several steps of Newton-Raphson iteration in Eq. 7.
</p>
<p>
Estimates of the roots of cylindrical Bessel functions of negative order
on the positive real axis are found using interlacing relations. For example,
the <span class="emphasis"><em>m<sup>th</sup></em></span> root of the cylindrical Bessel function <span class="emphasis"><em>j<sub>-&#957;,m</sub></em></span>
the <span class="emphasis"><em>m<sup>th</sup></em></span> root of the cylindrical Bessel function <span class="emphasis"><em>j<sub>-ν,m</sub></em></span>
is bracketed by the <span class="emphasis"><em>m<sup>th</sup></em></span> root and the <span class="emphasis"><em>(m+1)<sup>th</sup></em></span>
root of the Bessel function of corresponding positive integer order. In other
words,
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="serif_italic">j<sub>nν, m</sub> &lt; j<sub>-ν, m</sub> &lt; j<sub>nν, m+1</sub></span>
</p></blockquote></div>
<p>
&#8193; <span class="emphasis"><em>j<sub>n&#957;,m</sub></em></span> &lt; <span class="emphasis"><em>j<sub>-&#957;,m</sub></em></span> &lt; <span class="emphasis"><em>j<sub>n&#957;,m+1</sub></em></span>
</p>
<p>
where <span class="emphasis"><em>m &gt; 1</em></span> and <span class="emphasis"><em>n<sub>&#957;</sub></em></span> represents
the integral floor of the absolute value of <span class="emphasis"><em>|-&#957;|</em></span>.
where <span class="emphasis"><em>m &gt; 1</em></span> and <span class="emphasis"><em>n<sub>ν</sub></em></span> represents
the integral floor of the absolute value of <span class="emphasis"><em>|-ν|</em></span>.
</p>
<p>
Similar bracketing relations are used to find estimates of the roots of Neumann
@@ -732,7 +742,7 @@
Bracketing relations do not hold for the first root of cylindrical Bessel
functions and cylindrical Neumann functions with negative order. Therefore,
iterative algorithms combined with root-finding via bisection are used to
localize <span class="emphasis"><em>j<sub>-&#957;,1</sub></em></span> and <span class="emphasis"><em>y<sub>-&#957;,1</sub></em></span>.
localize <span class="emphasis"><em>j<sub>-ν,1</sub></em></span> and <span class="emphasis"><em>y<sub>-ν,1</sub></em></span>.
</p>
<h4>
<a name="math_toolkit.bessel.bessel_root.h7"></a>
@@ -747,11 +757,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2006-2010, 2012-2014, 2017 Nikhar
Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos,
Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Johan R&#229;de, Gautam
Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle Walker
and Xiaogang Zhang<p>
<td align="right"><div class="copyright-footer">Copyright © 2006-2021 Nikhar Agrawal, Anton Bikineev, Matthew Borland,
Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno
Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde,
Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle
Walker and Xiaogang Zhang<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +1,10 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Spherical Bessel Functions of the First and Second Kinds</title>
<link rel="stylesheet" href="../../math.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../index.html" title="Math Toolkit 2.6.0">
<link rel="home" href="../../index.html" title="Math Toolkit 3.0.0">
<link rel="up" href="../bessel.html" title="Bessel Functions">
<link rel="prev" href="mbessel.html" title="Modified Bessel Functions of the First and Second Kinds">
<link rel="next" href="bessel_derivatives.html" title="Derivatives of the Bessel Functions">
@@ -37,14 +37,14 @@
<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">&gt;</span>
<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sph_bessel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter&#160;18.&#160;Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&gt;</span>
<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sph_bessel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter&#160;18.&#160;Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&amp;);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&gt;</span>
<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sph_bessel</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&amp;);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">&gt;</span>
<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sph_neumann</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter&#160;18.&#160;Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&gt;</span>
<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sph_neumann</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter&#160;18.&#160;Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&amp;);</span>
<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">T2</span><span class="special">,</span> <span class="keyword">class</span> <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&gt;</span>
<a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>calculated-result-type</em></span></a> <span class="identifier">sph_neumann</span><span class="special">(</span><span class="keyword">unsigned</span> <span class="identifier">v</span><span class="special">,</span> <span class="identifier">T2</span> <span class="identifier">x</span><span class="special">,</span> <span class="keyword">const</span> <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policy</a><span class="special">&amp;);</span>
</pre>
<h5>
<a name="math_toolkit.bessel.sph_bessel.h1"></a>
@@ -56,26 +56,27 @@
the result of the Spherical Bessel functions of the first and second kinds
respectively:
</p>
<p>
sph_bessel(v, x) = j<sub>v</sub>(x)
</p>
<p>
sph_neumann(v, x) = y<sub>v</sub>(x) = n<sub>v</sub>(x)
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
sph_bessel(v, x) = j<sub>v</sub>(x)
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
sph_neumann(v, x) = y<sub>v</sub>(x) = n<sub>v</sub>(x)
</p></blockquote></div>
<p>
where:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/sbessel2.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/sbessel2.svg"></span>
</p></blockquote></div>
<p>
The return type of these functions is computed using the <a class="link" href="../result_type.html" title="Calculation of the Type of the Result"><span class="emphasis"><em>result
type calculation rules</em></span></a> for the single argument type T.
</p>
<p>
The final <a class="link" href="../../policy.html" title="Chapter&#160;18.&#160;Policies: Controlling Precision, Error Handling etc">Policy</a> argument is optional and can
The final <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">Policy</a> argument is optional and can
be used to control the behaviour of the function: how it handles errors,
what level of precision to use etc. Refer to the <a class="link" href="../../policy.html" title="Chapter&#160;18.&#160;Policies: Controlling Precision, Error Handling etc">policy
what level of precision to use etc. Refer to the <a class="link" href="../../policy.html" title="Chapter 21. Policies: Controlling Precision, Error Handling etc">policy
documentation for more details</a>.
</p>
<p>
@@ -83,18 +84,20 @@
whenever the result is undefined or complex: this occurs when <code class="computeroutput"><span class="identifier">x</span> <span class="special">&lt;</span> <span class="number">0</span></code>.
</p>
<p>
The j<sub>v</sub> &#160; function is cyclic like J<sub>v</sub> &#160; but differs in its behaviour at the origin:
The j<sub>v</sub> function is cyclic like J<sub>v</sub> but differs in its behaviour at the origin:
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../graphs/sph_bessel.svg" align="middle"></span>
</p></blockquote></div>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/sph_bessel.svg" align="middle"></span>
</p>
<p>
Likewise y<sub>v</sub> &#160; is also cyclic for large x, but tends to -&#8734; &#160;
Likewise y<sub>v</sub> is also cyclic for large x, but tends to -∞
for small <span class="emphasis"><em>x</em></span>:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../graphs/sph_neumann.svg" align="middle"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../graphs/sph_neumann.svg" align="middle"></span>
</p></blockquote></div>
<h5>
<a name="math_toolkit.bessel.sph_bessel.h2"></a>
<span class="phrase"><a name="math_toolkit.bessel.sph_bessel.testing"></a></span><a class="link" href="sph_bessel.html#math_toolkit.bessel.sph_bessel.testing">Testing</a>
@@ -109,7 +112,7 @@ for small <span class="emphasis"><em>x</em></span>:
<span class="phrase"><a name="math_toolkit.bessel.sph_bessel.accuracy"></a></span><a class="link" href="sph_bessel.html#math_toolkit.bessel.sph_bessel.accuracy">Accuracy</a>
</h5>
<div class="table">
<a name="math_toolkit.bessel.sph_bessel.table_sph_bessel"></a><p class="title"><b>Table&#160;6.48.&#160;Error rates for sph_bessel</b></p>
<a name="math_toolkit.bessel.sph_bessel.table_sph_bessel"></a><p class="title"><b>Table 8.48. Error rates for sph_bessel</b></p>
<div class="table-contents"><table class="table" summary="Error rates for sph_bessel">
<colgroup>
<col>
@@ -123,22 +126,22 @@ for small <span class="emphasis"><em>x</em></span>:
</th>
<th>
<p>
Microsoft Visual C++ version 12.0<br> Win32<br> double
GNU C++ version 7.1.0<br> linux<br> long double
</p>
</th>
<th>
<p>
GNU C++ version 5.1.0<br> linux<br> long double
GNU C++ version 7.1.0<br> linux<br> double
</p>
</th>
<th>
<p>
GNU C++ version 5.1.0<br> linux<br> double
Sun compiler version 0x5150<br> Sun Solaris<br> long double
</p>
</th>
<th>
<p>
Sun compiler version 0x5130<br> Sun Solaris<br> long double
Microsoft Visual C++ version 14.1<br> Win32<br> double
</p>
</th>
</tr></thead>
@@ -150,32 +153,31 @@ for small <span class="emphasis"><em>x</em></span>:
</td>
<td>
<p>
<span class="blue">Max = 245&#949; (Mean = 16.3&#949;)</span>
<span class="blue">Max = 24 (Mean = 13.3ε)</span><br> <br>
(<span class="emphasis"><em>&lt;cmath&gt;:</em></span> Max = 1.91e+06ε (Mean = 1.09e+05ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 243&#949; (Mean = 13.3&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;tr1/cmath&gt;:</em></span> Max = 1.91e+06&#949; (Mean =
1.09e+05&#949;))
<span class="blue">Max = 0.978ε (Mean = 0.0445ε)</span><br>
<br> (<span class="emphasis"><em>GSL 2.1:</em></span> Max = 1.79e+0 (Mean = 107ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 0.978&#949; (Mean = 0.0539&#949;)</span><br>
<br> (<span class="emphasis"><em>GSL 1.16:</em></span> Max = 1.79e+03&#949; (Mean = 107&#949;))
<span class="blue">Max = 243ε (Mean = 33.7ε)</span>
</p>
</td>
<td>
<p>
<span class="blue">Max = 243&#949; (Mean = 33.7&#949;)</span>
<span class="blue">Max = 245ε (Mean = 16.3ε)</span>
</p>
</td>
</tr></tbody>
</table></div>
</div>
<br class="table-break"><div class="table">
<a name="math_toolkit.bessel.sph_bessel.table_sph_neumann"></a><p class="title"><b>Table&#160;6.49.&#160;Error rates for sph_neumann</b></p>
<a name="math_toolkit.bessel.sph_bessel.table_sph_neumann"></a><p class="title"><b>Table 8.49. Error rates for sph_neumann</b></p>
<div class="table-contents"><table class="table" summary="Error rates for sph_neumann">
<colgroup>
<col>
@@ -189,22 +191,22 @@ for small <span class="emphasis"><em>x</em></span>:
</th>
<th>
<p>
Microsoft Visual C++ version 12.0<br> Win32<br> double
GNU C++ version 7.1.0<br> linux<br> long double
</p>
</th>
<th>
<p>
GNU C++ version 5.1.0<br> linux<br> double
GNU C++ version 7.1.0<br> linux<br> double
</p>
</th>
<th>
<p>
GNU C++ version 5.1.0<br> linux<br> long double
Sun compiler version 0x5150<br> Sun Solaris<br> long double
</p>
</th>
<th>
<p>
Sun compiler version 0x5130<br> Sun Solaris<br> long double
Microsoft Visual C++ version 14.1<br> Win32<br> double
</p>
</th>
</tr></thead>
@@ -216,24 +218,24 @@ for small <span class="emphasis"><em>x</em></span>:
</td>
<td>
<p>
<span class="blue">Max = 281&#949; (Mean = 31.1&#949;)</span>
<span class="blue">Max = 234ε (Mean = 19.5ε)</span><br> <br>
(<span class="emphasis"><em>&lt;cmath&gt;:</em></span> Max = 1.6e+06ε (Mean = 1.4e+05ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 0.995&#949; (Mean = 0.0665&#949;)</span><br>
<br> (<span class="emphasis"><em>GSL 1.16:</em></span> Max = 8.5e+04&#949; (Mean = 5.33e+03&#949;))
<span class="blue">Max = 0.995ε (Mean = 0.0665ε)</span><br>
<br> (<span class="emphasis"><em>GSL 2.1:</em></span> Max = 8.5e+04ε (Mean = 5.33e+03ε))
</p>
</td>
<td>
<p>
<span class="blue">Max = 234&#949; (Mean = 19.5&#949;)</span><br> <br>
(<span class="emphasis"><em>&lt;tr1/cmath&gt;:</em></span> Max = 1.6e+06&#949; (Mean = 1.4e+05&#949;))
<span class="blue">Max = 234ε (Mean = 19.)</span>
</p>
</td>
<td>
<p>
<span class="blue">Max = 234&#949; (Mean = 19.8&#949;)</span>
<span class="blue">Max = 281ε (Mean = 31.1ε)</span>
</p>
</td>
</tr></tbody>
@@ -247,34 +249,36 @@ for small <span class="emphasis"><em>x</em></span>:
Other than error handling and a couple of special cases these functions are
implemented directly in terms of their definitions:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/sbessel2.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/sbessel2.svg"></span>
</p></blockquote></div>
<p>
The special cases occur for:
</p>
<p>
j<sub>0</sub> &#160;= <a class="link" href="../sinc/sinc_pi.html" title="sinc_pi">sinc_pi</a>(x) = sin(x)
/ x
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
j<sub>0</sub>= <a class="link" href="../sinc/sinc_pi.html" title="sinc_pi">sinc_pi</a>(x) = sin(x)
/ x
</p></blockquote></div>
<p>
and for small <span class="emphasis"><em>x &lt; 1</em></span>, we can use the series:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/sbessel5.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/sbessel5.svg"></span>
</p></blockquote></div>
<p>
which neatly avoids the problem of calculating 0/0 that can occur with the
main definition as x &#8594; 0.
main definition as x 0.
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2006-2010, 2012-2014, 2017 Nikhar
Agrawal, Anton Bikineev, Paul A. Bristow, Marco Guazzone, Christopher Kormanyos,
Hubert Holin, Bruno Lalande, John Maddock, Jeremy Murphy, Johan R&#229;de, Gautam
Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle Walker
and Xiaogang Zhang<p>
<td align="right"><div class="copyright-footer">Copyright © 2006-2021 Nikhar Agrawal, Anton Bikineev, Matthew Borland,
Paul A. Bristow, Marco Guazzone, Christopher Kormanyos, Hubert Holin, Bruno
Lalande, John Maddock, Evan Miller, Jeremy Murphy, Matthew Pulver, Johan Råde,
Gautam Sewani, Benjamin Sobotta, Nicholas Thompson, Thijs van den Berg, Daryle
Walker and Xiaogang Zhang<p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
</p>