close

Function Repository Resource:

BulirschEL3

Source Notebook

Evaluate Bulirsch's incomplete elliptic integral of the third kind

Contributed by: Jan Mangaldan

ResourceFunction["BulirschEL3"][x,m,p]

gives Bulirsch's incomplete elliptic integral of the third kind Image.

Details

Mathematical function, suitable for both symbolic and numerical manipulation.
Bulirsch’s incomplete elliptic integral of the third kind is defined as Image.
When x=, ResourceFunction["BulirschEL3"] is referred to as a complete integral.
Argument conventions for elliptic integrals are discussed in "Elliptic Integrals and Elliptic Functions".
For certain special arguments, ResourceFunction["BulirschEL3"] automatically evaluates to exact values.
ResourceFunction["BulirschEL3"] can be evaluated to arbitrary precision.
ResourceFunction["BulirschEL3"] automatically threads over lists.

Examples

Basic Examples (1) 

Evaluate numerically:

In[1]:=
ResourceFunction["BulirschEL3"][3.4, 0.7, -1.8]
Out[1]=
Image
In[2]:=
ResourceFunction["BulirschEL3"][\[Infinity], 0.7, -1.8]
Out[2]=
Image

Scope (5) 

Evaluate numerically for complex arguments:

In[3]:=
ResourceFunction["BulirschEL3"][1 - 2. I, 2.5 + I, -1.8]
Out[3]=
Image

Evaluate to high precision:

In[4]:=
ResourceFunction["BulirschEL3"][-2.`30, 1/2, 3]
Out[4]=
Image

The precision of the output tracks the precision of the input:

In[5]:=
ResourceFunction["BulirschEL3"][-2.000000000000000000000, 1/2, 3]
Out[5]=
Image

Simple exact results are generated automatically:

In[6]:=
ResourceFunction["BulirschEL3"][0, m, p]
Out[6]=
Image
In[7]:=
ResourceFunction["BulirschEL3"][x, {0, 1}, 1/2]
Out[7]=
Image

BulirschEL3 threads elementwise over lists:

In[8]:=
ResourceFunction["BulirschEL3"][{0.2, 0.3, 0.7}, 2.4, 1/3]
Out[8]=
Image

Series expansion of BulirschEL3 at the origin:

In[9]:=
Series[ResourceFunction["BulirschEL3"][z, m, p], {z, 0, 5}]
Out[9]=
Image

Applications (2) 

Total arc length of a cornoid:

In[10]:=
N[4/Sqrt[3] (1/
     3 ResourceFunction["BulirschEL3"][\[Infinity], 1/3, 1/4] + ResourceFunction["BulirschEL3"][\[Infinity], 1/3, 1/3] - 1/3 ResourceFunction["BulirschEL3"][\[Infinity], 1/3, 1]), 25]
Out[10]=
Image

Compare with the result of ArcLength:

In[11]:=
ArcLength[{Cos[t] (1 - 2 Sin[t]^2), Sin[t] (1 + 2 Cos[t]^2)}, {t, 0, 2 \[Pi]}, WorkingPrecision -> 25]
Out[11]=
Image

Visualize the solid angle subtended by a cylinder:

In[12]:=
With[{pc = {0, 2, 3/4}, r = 1, h = 3/2}, Graphics3D[{Sphere[{0, 0, 0}, r/20], Cylinder[{pc, pc + {0, 0, h}}, r]}]]
Out[12]=
Image

Evaluate the solid angle:

In[13]:=
(* Evaluate this cell to get the example input *) CloudGet["https://www.wolframcloud.com/obj/52510be7-5435-42db-946a-21e2e5b98b36"]
Out[13]=
Image

Compare with the result of NIntegrate:

In[14]:=
With[{pc = {0, 2, 3/4}, r = 1, h = 3/2, prec = 20},
 With[{b = r^2/Norm[Most[pc]], c = r Sqrt[1 - r^2/Norm[Most[pc]]^2], d = Norm[Most[pc]], zc = Last[pc]},
  NIntegrate[(
    2 (h + zc) Sqrt[r^2 - x1^2])/(((d + x1)^2 + (h + zc)^2) Sqrt[
     d^2 + r^2 + 2 d x1 + (h + zc)^2]), {x1, -r, -b}, WorkingPrecision -> prec] + NIntegrate[(
    2 zc Sqrt[r^2 - x1^2])/(((d + x1)^2 + zc^2) Sqrt[
     d^2 + r^2 + 2 d x1 + zc^2]), {x1, -b, r}, WorkingPrecision -> prec] + NIntegrate[(
    2 c (d - b))/(((d - b)^2 + (z1 + zc)^2) Sqrt[
     c^2 + (d - b)^2 + (z1 + zc)^2]), {z1, 0, h}, WorkingPrecision -> prec]]]
Out[14]=
Image

Properties and Relations (2) 

Both incomplete and complete cases of EllipticPi can be expressed in terms of BulirschEL3:

In[15]:=
With[{n = 4/5, \[Phi] = \[Pi]/5, m = 2/3}, N[{EllipticPi[n, \[Phi], m], ResourceFunction["BulirschEL3"][Tan[\[Phi]], 1 - m, 1 - n]}]]
Out[15]=
Image
In[16]:=
With[{n = 4/5, m = 2/3}, N[{EllipticPi[n, m], ResourceFunction["BulirschEL3"][\[Infinity], 1 - m, 1 - n]}]]
Out[16]=
Image

Express EllipticF and EllipticE in terms of BulirschEL3:

In[17]:=
With[{\[Phi] = \[Pi]/5, m = 2/3}, N[{EllipticF[\[Phi], m], ResourceFunction["BulirschEL3"][Tan[\[Phi]], 1 - m, 1]}]]
Out[17]=
Image
In[18]:=
With[{\[Phi] = \[Pi]/5, m = 2/3}, N[{EllipticE[\[Phi], m], (1 - m) ResourceFunction["BulirschEL3"][Tan[\[Phi]], 1 - m, 1 - m] + (m Sin[2 \[Phi]])/(2 Sqrt[1 - m Sin[\[Phi]]^2])}]]
Out[18]=
Image

Requirements

Wolfram Language 12.3 (May 2021) or above

Version History

  • 1.0.0 – 29 June 2021

Source Metadata

Related Resources

Author Notes

Requires 12.3 or later.
The form of the second argument was changed from the original definition used by Bulirsch, so that BulirschEL3 uses the parameter m=k2 instead of the modulus k. This conforms with Mathematica's choice to use the parameter in the built-in elliptic integrals and functions.

License Information