mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 12:30:23 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			250 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			250 lines
		
	
	
		
			8.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| [/
 | |
| Copyright (c) 2006 Xiaogang Zhang
 | |
| Use, modification and distribution are subject to the
 | |
| Boost Software License, Version 1.0. (See accompanying file
 | |
| LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 | |
| ]
 | |
| 
 | |
| [section:ellint_intro Elliptic Integral Overview]
 | |
| 
 | |
| The main reference for the elliptic integrals is:
 | |
| 
 | |
| [:M. Abramowitz and I. A. Stegun (Eds.) (1964)
 | |
| Handbook of Mathematical Functions with Formulas, Graphs, and
 | |
| Mathematical Tables,      
 | |
| National Bureau of Standards Applied Mathematics Series, U.S. Government Printing Office, Washington, D.C.]
 | |
| 
 | |
| Mathworld also contain a lot of useful background information:
 | |
| 
 | |
| [:[@http://mathworld.wolfram.com/EllipticIntegral.html Weisstein, Eric W. 
 | |
| "Elliptic Integral." From MathWorld--A Wolfram Web Resource.]]
 | |
| 
 | |
| As does [@http://en.wikipedia.org/wiki/Elliptic_integral Wikipedia Elliptic integral].
 | |
| 
 | |
| [h4 Notation]
 | |
| 
 | |
| All variables are real numbers unless otherwise noted.
 | |
| 
 | |
| [h4 Definition]
 | |
| 
 | |
| [equation ellint1]
 | |
| 
 | |
| is called elliptic integral if ['R(t, s)] is a rational function
 | |
| of ['t] and ['s], and ['s[super 2]] is a cubic or quartic polynomial
 | |
| in ['t].
 | |
| 
 | |
| 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 Integral of the First Kind (Legendre form)
 | |
| 
 | |
| [equation ellint2]
 | |
| 
 | |
| Elliptic Integral of the Second Kind (Legendre form)
 | |
| 
 | |
| [equation ellint3]
 | |
| 
 | |
| Elliptic Integral of the Third Kind (Legendre form)
 | |
| 
 | |
| [equation ellint4]
 | |
| 
 | |
| where
 | |
| 
 | |
| [equation ellint5]
 | |
| 
 | |
| [note ['[phi]] is called the amplitude.
 | |
| 
 | |
| ['k] is called the modulus. 
 | |
| 
 | |
| ['[alpha]] is called the modular angle. 
 | |
| 
 | |
| ['n] is called the characteristic.]
 | |
|       
 | |
| [caution Perhaps more than any other special functions the elliptic
 | |
| integrals are expressed in a variety of different ways.  In particular,
 | |
| the final parameter /k/ (the modulus) may be expressed using a modular
 | |
| angle [alpha], or a parameter /m/.  These are related by:
 | |
| 
 | |
| k = sin[alpha]
 | |
| 
 | |
| m = k[super 2] = sin[super 2][alpha]
 | |
| 
 | |
| So that the integral of the third kind (for example) may be expressed as
 | |
| either:
 | |
| 
 | |
| [Pi](n, [phi], k)
 | |
| 
 | |
| [Pi](n, [phi] \\ [alpha])
 | |
| 
 | |
| [Pi](n, [phi]| m)
 | |
| 
 | |
| To further complicate matters, some texts refer to the ['complement
 | |
| of the parameter m], or 1 - m, where:
 | |
| 
 | |
| 1 - m = 1 - k[super 2] = cos[super 2][alpha]
 | |
| 
 | |
| This implementation uses /k/ throughout: this matches the requirements
 | |
| of the [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf
 | |
| Technical Report on C++ Library Extensions].  However, you should
 | |
| be extra careful when using these functions!]
 | |
| 
 | |
| When ['[phi]] = ['[pi]] / 2, the elliptic integrals are called ['complete].
 | |
| 
 | |
| Complete Elliptic Integral of the First Kind (Legendre form)
 | |
| 
 | |
| [equation ellint6]
 | |
| 
 | |
| Complete Elliptic Integral of the Second Kind (Legendre form)
 | |
| 
 | |
| [equation ellint7]
 | |
| 
 | |
| Complete Elliptic Integral of the Third Kind (Legendre form)
 | |
| 
 | |
| [equation ellint8]
 | |
| 
 | |
| Legendre also defined a forth integral D([phi],k) which is a combination of the other three:
 | |
| 
 | |
| [equation ellint_d]
 | |
| 
 | |
| Like the other Legendre integrals this comes in both complete and incomplete forms.
 | |
| 
 | |
| [h4 Carlson Elliptic Integrals]
 | |
| 
 | |
| Carlson [[link ellint_ref_carlson77 Carlson77]] [[link ellint_ref_carlson78  Carlson78]] gives an alternative definition of
 | |
| elliptic integral's canonical forms:
 | |
| 
 | |
| Carlson's Elliptic Integral of the First Kind
 | |
| 
 | |
| [equation ellint9]
 | |
| 
 | |
| where ['x], ['y], ['z] are nonnegative and at most one of them
 | |
| may be zero.
 | |
| 
 | |
| Carlson's Elliptic Integral of the Second Kind
 | |
| 
 | |
| [equation ellint10]
 | |
| 
 | |
| where ['x], ['y] are nonnegative, at most one of them may be zero,
 | |
| and ['z] must be positive.
 | |
| 
 | |
| Carlson's Elliptic Integral of the Third Kind
 | |
| 
 | |
| [equation ellint11]
 | |
| 
 | |
| where ['x], ['y], ['z] are nonnegative, at most one of them may be
 | |
| zero, and ['p] must be nonzero.
 | |
| 
 | |
| Carlson's Degenerate Elliptic Integral
 | |
| 
 | |
| [equation ellint12]
 | |
| 
 | |
| where ['x] is nonnegative and ['y] is nonzero.
 | |
| 
 | |
| [note ['R[sub C](x, y) = R[sub F](x, y, y)] 
 | |
| 
 | |
| ['R[sub D](x, y, z) = R[sub J](x, y, z, z)]]
 | |
| 
 | |
| Carlson's Symmetric Integral
 | |
| 
 | |
| [equation ellint27]
 | |
| 
 | |
| [h4 Duplication Theorem]
 | |
| 
 | |
| Carlson proved in [[link ellint_ref_carlson78  Carlson78]] that
 | |
| 
 | |
| [equation ellint13]
 | |
| 
 | |
| [h4 Carlson's Formulas]
 | |
| 
 | |
| The Legendre form and Carlson form of elliptic integrals are related
 | |
| by equations:
 | |
| 
 | |
| [equation ellint14]
 | |
| 
 | |
| In particular,
 | |
| 
 | |
| [equation ellint15]
 | |
| 
 | |
| [h4 Miscellaneous Elliptic Integrals]
 | |
| 
 | |
| There are two functions related to the elliptic integrals which otherwise
 | |
| defy categorisation, these are the Jacobi Zeta function:
 | |
| 
 | |
| [equation jacobi_zeta]
 | |
| 
 | |
| and the Heuman Lambda function:
 | |
| 
 | |
| [equation heuman_lambda]
 | |
| 
 | |
| Both of these functions are easily implemented in terms of Carlson's integrals, and are
 | |
| provided in this library as __jacobi_zeta and __heuman_lambda.
 | |
| 
 | |
| [h4 Numerical Algorithms]
 | |
| 
 | |
| 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 [[link ellint_ref_carlson79  Carlson79]] [[link ellint_ref_carlson78  Carlson78]], by contrast,
 | |
| provides a unified method for all three kinds of elliptic integrals
 | |
| with satisfactory precisions.
 | |
| 
 | |
| [h4 References]
 | |
| 
 | |
| Special mention goes to:
 | |
| 
 | |
| [:A. M. Legendre, ['Traitd des Fonctions Elliptiques et des Integrales 
 | |
| Euleriennes], Vol. 1. Paris (1825).]
 | |
| 
 | |
| However the main references are:
 | |
| 
 | |
| # [#ellint_ref_AS]M. Abramowitz and I. A. Stegun (Eds.) (1964)
 | |
| Handbook of Mathematical Functions with Formulas, Graphs, and
 | |
| Mathematical Tables,      
 | |
| National Bureau of Standards Applied Mathematics Series, U.S. Government Printing Office, Washington, D.C.
 | |
| # [#ellint_ref_carlson79]B.C. Carlson, ['Computing elliptic integrals by duplication],
 | |
|     Numerische Mathematik, vol 33, 1 (1979).
 | |
| # [#ellint_ref_carlson77]B.C. Carlson, ['Elliptic Integrals of the First Kind],
 | |
|     SIAM Journal on Mathematical Analysis, vol 8, 231 (1977).
 | |
| # [#ellint_ref_carlson78]B.C. Carlson, ['Short Proofs of Three Theorems on Elliptic Integrals],
 | |
|     SIAM Journal on Mathematical Analysis, vol 9, 524 (1978).
 | |
| # [#ellint_ref_carlson81]B.C. Carlson and E.M. Notis, ['ALGORITHM 577: Algorithms for Incomplete
 | |
|     Elliptic Integrals], ACM Transactions on Mathematmal Software,
 | |
|     vol 7, 398 (1981).
 | |
| # B. C. Carlson, ['On computing elliptic integrals and functions]. J. Math. and
 | |
| Phys., 44 (1965), pp. 36-51.
 | |
| # B. C. Carlson, ['A table of elliptic integrals of the second kind]. Math. Comp., 49
 | |
| (1987), pp. 595-606. (Supplement, ibid., pp. S13-S17.)
 | |
| # B. C. Carlson, ['A table of elliptic integrals of the third kind]. Math. Comp., 51 (1988),
 | |
| pp. 267-280. (Supplement, ibid., pp. S1-S5.)
 | |
| # B. C. Carlson, ['A table of elliptic integrals: cubic cases]. Math. Comp., 53 (1989), pp.
 | |
| 327-333.
 | |
| # B. C. Carlson, ['A table of elliptic integrals: one quadratic factor]. Math. Comp., 56 (1991),
 | |
| pp. 267-280.
 | |
| # B. C. Carlson, ['A table of elliptic integrals: two quadratic factors]. Math. Comp., 59
 | |
| (1992), pp. 165-180.
 | |
| # B. C. Carlson, ['[@http://arxiv.org/abs/math.CA/9409227 
 | |
| Numerical computation of real or complex elliptic integrals]]. Numerical Algorithms,
 | |
| Volume 10, Number 1 / March, 1995, p13-26.
 | |
| # B. C. Carlson and John L. Gustafson, ['[@http://arxiv.org/abs/math.CA/9310223
 | |
| Asymptotic Approximations for Symmetric Elliptic Integrals]], 
 | |
| SIAM Journal on Mathematical Analysis, Volume 25, Issue 2 (March 1994), 288-303.
 | |
| 
 | |
| 
 | |
| The following references, while not directly relevent to our implementation,
 | |
| may also be of interest:
 | |
| 
 | |
| # R. Burlisch, ['Numerical Compuation of Elliptic Integrals and Elliptic Functions.]
 | |
| Numerical Mathematik 7, 78-90.
 | |
| # R. Burlisch, ['An extension of the Bartky Transformation to Incomplete
 | |
| Elliptic Integrals of the Third Kind]. Numerical Mathematik 13, 266-284.
 | |
| # R. Burlisch, ['Numerical Compuation of Elliptic Integrals and Elliptic Functions. III]. 
 | |
| Numerical Mathematik 13, 305-315.
 | |
| # T. Fukushima and H. Ishizaki, ['[@http://adsabs.harvard.edu/abs/1994CeMDA..59..237F 
 | |
| Numerical Computation of Incomplete Elliptic Integrals of a General Form.]]
 | |
| Celestial Mechanics and Dynamical Astronomy, Volume 59, Number 3 / July, 1994,
 | |
| 237-251.
 | |
| 
 | |
| [endsect]
 |