[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

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>Elliptic Integral 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="../ellint.html" title="Elliptic Integrals">
<link rel="prev" href="../ellint.html" title="Elliptic Integrals">
<link rel="next" href="ellint_carlson.html" title="Elliptic Integrals - Carlson Form">
@@ -35,6 +35,13 @@
Applied Mathematics Series, U.S. Government Printing Office, Washington,
D.C.
</p></blockquote></div>
<p>
and its recently revised version <a href="http://dlmf.nist.gov/" target="_top">NIST
Digital Library of Mathematical Functions (DMLF)</a>, in particular
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<a href="https://dlmf.nist.gov/19" target="_top">Elliptic Integrals, B. C. Carlson</a>
</p></blockquote></div>
<p>
Mathworld also contain a lot of useful background information:
</p>
@@ -57,43 +64,48 @@
<a name="math_toolkit.ellint.ellint_intro.h1"></a>
<span class="phrase"><a name="math_toolkit.ellint.ellint_intro.definition"></a></span><a class="link" href="ellint_intro.html#math_toolkit.ellint.ellint_intro.definition">Definition</a>
</h5>
<p>
<span class="inlinemediaobject"><img src="../../../equations/ellint1.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/ellint1.svg"></span>
</p></blockquote></div>
<p>
is called elliptic integral if <span class="emphasis"><em>R(t, s)</em></span> is a rational
function of <span class="emphasis"><em>t</em></span> and <span class="emphasis"><em>s</em></span>, and <span class="emphasis"><em>s<sup>2</sup></em></span>
is a cubic or quartic polynomial in <span class="emphasis"><em>t</em></span>.
</p>
<p>
Elliptic integrals generally can not be expressed in terms of elementary
functions. However, Legendre showed that all elliptic integrals can be reduced
to the following three canonical forms:
Elliptic integrals generally cannot be expressed in terms of elementary functions.
However, Legendre showed that all elliptic integrals can be reduced to the
following three canonical forms:
</p>
<p>
Elliptic Integral of the First Kind (Legendre form)
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/ellint2.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/ellint2.svg"></span>
</p></blockquote></div>
<p>
Elliptic Integral of the Second Kind (Legendre form)
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/ellint3.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/ellint3.svg"></span>
</p></blockquote></div>
<p>
Elliptic Integral of the Third Kind (Legendre form)
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/ellint4.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/ellint4.svg"></span>
</p></blockquote></div>
<p>
where
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/ellint5.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/ellint5.svg"></span>
</p></blockquote></div>
<div class="note"><table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../../../doc/src/images/note.png"></td>
@@ -101,13 +113,13 @@
</tr>
<tr><td align="left" valign="top">
<p>
<span class="emphasis"><em>&#966;</em></span> is called the amplitude.
<span class="emphasis"><em>φ</em></span> is called the amplitude.
</p>
<p>
<span class="emphasis"><em>k</em></span> is called the modulus.
<span class="emphasis"><em>k</em></span> is called the elliptic modulus or eccentricity.
</p>
<p>
<span class="emphasis"><em>&#945;</em></span> is called the modular angle.
<span class="emphasis"><em>α</em></span> is called the modular angle.
</p>
<p>
<span class="emphasis"><em>n</em></span> is called the characteristic.
@@ -124,71 +136,92 @@
Perhaps more than any other special functions the elliptic integrals are
expressed in a variety of different ways. In particular, the final parameter
<span class="emphasis"><em>k</em></span> (the modulus) may be expressed using a modular angle
&#945;, or a parameter <span class="emphasis"><em>m</em></span>. These are related by:
</p>
<p>
k = sin&#945;
</p>
<p>
m = k<sup>2</sup> = sin<sup>2</sup>&#945;
α, or a parameter <span class="emphasis"><em>m</em></span>. These are related by:
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="serif_italic">k = sin α</span>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="serif_italic">m = k<sup>2</sup> = sin<sup>2</sup>α</span>
</p></blockquote></div>
<p>
So that the integral of the third kind (for example) may be expressed as
either:
</p>
<p>
&#928;(n, &#966;, k)
</p>
<p>
&#928;(n, &#966; \ &#945;)
</p>
<p>
&#928;(n, &#966;| m)
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="serif_italic">Π(n, φ, k)</span>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="serif_italic">Π(n, φ \ α)</span>
</p></blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="serif_italic">Π(n, φ | m)</span>
</p></blockquote></div>
<p>
To further complicate matters, some texts refer to the <span class="emphasis"><em>complement
of the parameter m</em></span>, or 1 - m, where:
</p>
<p>
1 - m = 1 - k<sup>2</sup> = cos<sup>2</sup>&#945;
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="serif_italic">1 - m = 1 - k<sup>2</sup> = cos<sup>2</sup>α</span>
</p></blockquote></div>
<p>
This implementation uses <span class="emphasis"><em>k</em></span> throughout: this matches
the requirements of the <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf" target="_top">Technical
Report on C++ Library Extensions</a>. However, you should be extra
careful when using these functions!
Report on C++ Library Extensions</a>.<br>
</p>
<p>
So you should be extra careful when using these functions!
</p>
</td></tr>
</table></div>
<div class="warning"><table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../../../../../../doc/src/images/warning.png"></td>
<th align="left">Warning</th>
</tr>
<tr><td align="left" valign="top"><p>
Boost.Math order of arguments differs from other implementations: <span class="emphasis"><em>k</em></span>
is always the <span class="bold"><strong>first</strong></span> argument.
</p></td></tr>
</table></div>
<p>
When <span class="emphasis"><em>&#966;</em></span> = <span class="emphasis"><em>&#960;</em></span> / 2, the elliptic integrals
A simple example comparing use of <a href="http://www.wolframalpha.com/" target="_top">Wolfram
Alpha</a> with Boost.Math (including much higher precision using <a href="../../../../../../libs/multiprecision/doc/html/index.html" target="_top">Boost.Multiprecision</a>)
is <a href="../../../../example/jacobi_zeta_example.cpp" target="_top">jacobi_zeta_example.cpp</a>.
</p>
<p>
When <span class="emphasis"><em>φ</em></span> = <span class="emphasis"><em>π</em></span> / 2, the elliptic integrals
are called <span class="emphasis"><em>complete</em></span>.
</p>
<p>
Complete Elliptic Integral of the First Kind (Legendre form)
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/ellint6.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/ellint6.svg"></span>
</p></blockquote></div>
<p>
Complete Elliptic Integral of the Second Kind (Legendre form)
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/ellint7.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/ellint7.svg"></span>
</p></blockquote></div>
<p>
Complete Elliptic Integral of the Third Kind (Legendre form)
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/ellint8.svg"></span>
</p></blockquote></div>
<p>
<span class="inlinemediaobject"><img src="../../../equations/ellint8.svg"></span>
</p>
<p>
Legendre also defined a forth integral D(&#966;,k) which is a combination of the
other three:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/ellint_d.svg"></span>
Legendre also defined a fourth integral /D(φ,k)/ which is a combination of
the other three:
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/ellint_d.svg"></span>
</p></blockquote></div>
<p>
Like the other Legendre integrals this comes in both complete and incomplete
forms.
@@ -205,9 +238,10 @@
<p>
Carlson's Elliptic Integral of the First Kind
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/ellint9.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/ellint9.svg"></span>
</p></blockquote></div>
<p>
where <span class="emphasis"><em>x</em></span>, <span class="emphasis"><em>y</em></span>, <span class="emphasis"><em>z</em></span>
are nonnegative and at most one of them may be zero.
@@ -215,9 +249,10 @@
<p>
Carlson's Elliptic Integral of the Second Kind
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/ellint10.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/ellint10.svg"></span>
</p></blockquote></div>
<p>
where <span class="emphasis"><em>x</em></span>, <span class="emphasis"><em>y</em></span> are nonnegative, at
most one of them may be zero, and <span class="emphasis"><em>z</em></span> must be positive.
@@ -225,9 +260,10 @@
<p>
Carlson's Elliptic Integral of the Third Kind
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/ellint11.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/ellint11.svg"></span>
</p></blockquote></div>
<p>
where <span class="emphasis"><em>x</em></span>, <span class="emphasis"><em>y</em></span>, <span class="emphasis"><em>z</em></span>
are nonnegative, at most one of them may be zero, and <span class="emphasis"><em>p</em></span>
@@ -236,9 +272,10 @@
<p>
Carlson's Degenerate Elliptic Integral
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/ellint12.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/ellint12.svg"></span>
</p></blockquote></div>
<p>
where <span class="emphasis"><em>x</em></span> is nonnegative and <span class="emphasis"><em>y</em></span> is
nonzero.
@@ -260,9 +297,10 @@
<p>
Carlson's Symmetric Integral
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/ellint27.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/ellint27.svg"></span>
</p></blockquote></div>
<h5>
<a name="math_toolkit.ellint.ellint_intro.h3"></a>
<span class="phrase"><a name="math_toolkit.ellint.ellint_intro.duplication_theorem"></a></span><a class="link" href="ellint_intro.html#math_toolkit.ellint.ellint_intro.duplication_theorem">Duplication
@@ -272,9 +310,10 @@
Carlson proved in [<a class="link" href="ellint_intro.html#ellint_ref_carlson78">Carlson78</a>]
that
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/ellint13.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/ellint13.svg"></span>
</p></blockquote></div>
<h5>
<a name="math_toolkit.ellint.ellint_intro.h4"></a>
<span class="phrase"><a name="math_toolkit.ellint.ellint_intro.carlson_s_formulas"></a></span><a class="link" href="ellint_intro.html#math_toolkit.ellint.ellint_intro.carlson_s_formulas">Carlson's
@@ -283,15 +322,17 @@
<p>
The Legendre form and Carlson form of elliptic integrals are related by equations:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/ellint14.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/ellint14.svg"></span>
</p></blockquote></div>
<p>
In particular,
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/ellint15.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/ellint15.svg"></span>
</p></blockquote></div>
<h5>
<a name="math_toolkit.ellint.ellint_intro.h5"></a>
<span class="phrase"><a name="math_toolkit.ellint.ellint_intro.miscellaneous_elliptic_integrals"></a></span><a class="link" href="ellint_intro.html#math_toolkit.ellint.ellint_intro.miscellaneous_elliptic_integrals">Miscellaneous
@@ -301,15 +342,17 @@
There are two functions related to the elliptic integrals which otherwise
defy categorisation, these are the Jacobi Zeta function:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/jacobi_zeta.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/jacobi_zeta.svg"></span>
</p></blockquote></div>
<p>
and the Heuman Lambda function:
</p>
<p>
<span class="inlinemediaobject"><img src="../../../equations/heuman_lambda.svg"></span>
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="inlinemediaobject"><img src="../../../equations/heuman_lambda.svg"></span>
</p></blockquote></div>
<p>
Both of these functions are easily implemented in terms of Carlson's integrals,
and are provided in this library as <a class="link" href="jacobi_zeta.html" title="Jacobi Zeta Function">jacobi_zeta</a>
@@ -324,7 +367,10 @@
The conventional methods for computing elliptic integrals are Gauss and Landen
transformations, which converge quadratically and work well for elliptic
integrals of the first and second kinds. Unfortunately they suffer from loss
of significant digits for the third kind. Carlson's algorithm [<a class="link" href="ellint_intro.html#ellint_ref_carlson79">Carlson79</a>]
of significant digits for the third kind.
</p>
<p>
Carlson's algorithm [<a class="link" href="ellint_intro.html#ellint_ref_carlson79">Carlson79</a>]
[<a class="link" href="ellint_intro.html#ellint_ref_carlson78">Carlson78</a>], by contrast, provides
a unified method for all three kinds of elliptic integrals with satisfactory
precisions.
@@ -337,7 +383,7 @@
Special mention goes to:
</p>
<div class="blockquote"><blockquote class="blockquote"><p>
A. M. Legendre, <span class="emphasis"><em>Traitd des Fonctions Elliptiques et des Integrales
A. M. Legendre, <span class="emphasis"><em>Traité des Fonctions Elliptiques et des Integrales
Euleriennes</em></span>, Vol. 1. Paris (1825).
</p></blockquote></div>
<p>
@@ -350,6 +396,10 @@
Tables, National Bureau of Standards Applied Mathematics Series, U.S.
Government Printing Office, Washington, D.C.
</li>
<li class="listitem">
<a href="https://dlmf.nist.gov/19" target="_top">NIST Digital Library of Mathematical
Functions, Elliptic Integrals, B. C. Carlson</a>
</li>
<li class="listitem">
<a name="ellint_ref_carlson79"></a>B.C. Carlson, <span class="emphasis"><em>Computing
elliptic integrals by duplication</em></span>, Numerische Mathematik,
@@ -368,7 +418,7 @@
<li class="listitem">
<a name="ellint_ref_carlson81"></a>B.C. Carlson and E.M. Notis, <span class="emphasis"><em>ALGORITHM
577: Algorithms for Incomplete Elliptic Integrals</em></span>, ACM Transactions
on Mathematmal Software, vol 7, 398 (1981).
on Mathematical Software, vol 7, 398 (1981).
</li>
<li class="listitem">
B. C. Carlson, <span class="emphasis"><em>On computing elliptic integrals and functions</em></span>.
@@ -407,12 +457,12 @@
</li>
</ol></div>
<p>
The following references, while not directly relevent to our implementation,
The following references, while not directly relevant to our implementation,
may also be of interest:
</p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem">
R. Burlisch, <span class="emphasis"><em>Numerical Compuation of Elliptic Integrals and
R. Burlisch, <span class="emphasis"><em>Numerical Computation of Elliptic Integrals and
Elliptic Functions.</em></span> Numerical Mathematik 7, 78-90.
</li>
<li class="listitem">
@@ -421,7 +471,7 @@
13, 266-284.
</li>
<li class="listitem">
R. Burlisch, <span class="emphasis"><em>Numerical Compuation of Elliptic Integrals and
R. Burlisch, <span class="emphasis"><em>Numerical Computation of Elliptic Integrals and
Elliptic Functions. III</em></span>. Numerical Mathematik 13, 305-315.
</li>
<li class="listitem">
@@ -434,11 +484,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>