Function Repository Resource:

ZolotarevZ

Source Notebook

Evaluate the Zolotarev polynomial

Contributed by: Jan Mangaldan

ResourceFunction["ZolotarevZ"][p,q,x,m]

gives the Zolotarev polynomial Zp,q(x|m).

Details

Mathematical function, suitable for both symbolic and numerical manipulation.
The Zolotarev polynomial Zp,q(x|m) with elliptic parameter m is the polynomial that least deviates from zero, such that it has p zeroes to the left of its global maximum in [-1,1] and q zeroes to the right of it.
Zp,q(x|m) is a polynomial of degree p+q.
For certain special arguments, ResourceFunction["ZolotarevZ"] automatically evaluates to exact values.
ResourceFunction["ZolotarevZ"] can be evaluated to arbitrary numerical precision.
ResourceFunction["ZolotarevZ"] automatically threads over lists.

Examples

Basic Examples (2) 

Evaluate numerically:

In[1]:=
ResourceFunction["ZolotarevZ"][2, 3, 0.6, 2/3]
Out[1]=

Plot over a subset of the reals:

In[2]:=
Plot[ResourceFunction["ZolotarevZ"][2, 3, x, 2/3], {x, -1, 1}]
Out[2]=

Scope (3) 

Evaluate to high precision:

In[3]:=
N[ResourceFunction["ZolotarevZ"][2, 3, 3/5, 2/3], 50]
Out[3]=

Evaluate with symbolic argument and numerical parameter:

In[4]:=
ResourceFunction["ZolotarevZ"][2, 4, z, N[2/3]]
Out[4]=

ZolotarevZ threads elementwise over lists:

In[5]:=
ResourceFunction["ZolotarevZ"][2, {3, 4, 5}, z, 2/3]
Out[5]=

Applications (2) 

Plot a Zolotarev polynomial and show the location of its global maximum in [-1,1]:

In[6]:=
With[{p = 9, q = 5, m = (78/100)^2},
 Plot[ResourceFunction["ZolotarevZ"][p, q, x, m], {x, -1, 1}, Axes -> None, Frame -> True, GridLines -> {{2 JacobiCN[q/(p + q) EllipticK[m], m]^2 - 1 + 2 JacobiCN[q/(p + q) EllipticK[m], m] JacobiSD[
        q/(p + q) EllipticK[m], m] JacobiZN[q/(p + q) EllipticK[m], m]}, None}, PlotRange -> All]]
Out[6]=

Compare a Zolotarev polynomial with a Chebyshev polynomial of the same degree:

In[7]:=
Manipulate[
 Plot[{ResourceFunction["ZolotarevZ"][p, q, x, m], (-1)^q ChebyshevT[p + q, x]}, {x, -1, 1}, Axes -> None, Frame -> True, PlotRange -> All], {{p, 9}, 1, 10, 1}, {{q, 5}, 1, 10, 1}, {{m, 1/2}, 0, 1}]
Out[7]=

Properties and Relations (2) 

When m=0 or m=1, the Zolotarev polynomial is a scalar multiple of the Chebyshev polynomial ChebyshevT:

In[8]:=
With[{p = 2, q = 3}, ResourceFunction["ZolotarevZ"][p, q, z, 0] == (-1)^
    q ChebyshevT[p + q, z]] // Simplify
Out[8]=
In[9]:=
With[{p = 2, q = 3}, ResourceFunction["ZolotarevZ"][p, q, z, 1] == (-1)^q/2^(
    2 (p + q) - 1) ChebyshevT[p + q, z]] // Simplify
Out[9]=

A parametric representation of the Zolotarev polynomial:

In[10]:=
xzolo[p_, q_, u_, m_] := With[{rk = q/(p + q) EllipticK[m]}, JacobiCN[rk, m]^2 (JacobiSN[u, m]^2 + JacobiSN[rk, m]^2)/(
    JacobiSN[u, m]^2 - JacobiSN[rk, m]^2) - JacobiSN[rk, m]^2]
In[11]:=
yzolo[p_, q_, u_, m_] := With[{rk = q/(p + q) EllipticK[m]}, (-1)^
   q ChebyshevT[p + q, 1/2 (NevilleThetaS[u - rk, m]/NevilleThetaS[u + rk, m] + NevilleThetaS[u + rk, m]/NevilleThetaS[u - rk, m])]]

Check equivalence with the explicit representation:

In[12]:=
With[{p = 2, q = 3, u = N[4/3, 20], m = 2/3},
 yzolo[p, q, u, m] - ResourceFunction["ZolotarevZ"][p, q, xzolo[p, q, u, m], m]]
Out[12]=

Possible Issues (1) 

The literature sometimes uses a different definition of the Zolotarev polynomial, where the polynomial is defined to have p zeroes in [-1,1]:

In[13]:=
newZolo[p_, q_, x_, m_] := With[{rk = q/(p + q) EllipticK[m]}, ResourceFunction["ZolotarevZ"][p, q, JacobiCN[rk, m]^2 x - JacobiSN[rk, m]^2, m]]
In[14]:=
Plot[newZolo[9, 5, x, 2/3], {x, -1, 2 + 3/8}, PlotRange -> All]
Out[14]=

Version History

  • 1.0.0 – 20 January 2021

Source Metadata

Related Resources

License Information