JacobiCN[u,m]
gives the Jacobi elliptic function
.
JacobiCN
JacobiCN[u,m]
gives the Jacobi elliptic function
.
Details
- Mathematical function, suitable for both symbolic and numerical manipulation.
, where
.
is a doubly periodic function in u with periods
and
, where
is the elliptic integral EllipticK.- JacobiCN is a meromorphic function in both arguments.
- For certain special arguments, JacobiCN automatically evaluates to exact values.
- JacobiCN can be evaluated to arbitrary numerical precision.
- JacobiCN automatically threads over lists.
Examples
open all close allBasic Examples (5)
JacobiCN[2.5, 0.3]Plot the function over a subset of the reals:
Plot[JacobiCN[x, 1 / 3], {x, -10, 10}]Plot over a subset of the complexes:
ComplexPlot3D[JacobiCN[z, 1 / 3], {z, -2 - 2I, 2 + 2I}, PlotLegends -> Automatic]Series expansions about the origin:
Series[JacobiCN[z, m], {z, 0, 7}]Series[JacobiCN[z, m], {m, 0, 1}]Series expansion at a singular point:
Series[JacobiCN[x, 1], {x, (I π/2), 3}]Scope (33)
Numerical Evaluation (5)
N[JacobiCN[2, 1 / 3], 50]The precision of the output tracks the precision of the input:
JacobiCN[2, 0.333333333333333333333333333333333333333333]Evaluate for complex arguments:
JacobiCN[2.5 + I, 1 - I]Evaluate JacobiCN efficiently at high precision:
JacobiCN[2, 0.3`500]//TimingJacobiCN[2, 0.3`10000];//TimingCompute average-case statistical intervals using Around:
JacobiCN[2, Around[1 / 2, 0.01]]Compute the elementwise values of an array:
JacobiCN[-(I π/3), {{1, 0}, {0, 1}}]Or compute the matrix JacobiCN function using MatrixFunction:
MatrixFunction[JacobiCN[-(I π/3), #]&, {{1, 0}, {0, 1}}]Specific Values (3)
Simple exact values are generated automatically:
{JacobiCN[z, 0], JacobiCN[z, 1]}{JacobiCN[0, m], JacobiCN[EllipticK[m] / 2, m], JacobiCN[EllipticK[m], m]}Some poles of JacobiCN:
{JacobiCN[-3 I EllipticK[1 - m], m], JacobiCN[-I EllipticK[1 - m], m], JacobiCN[I EllipticK[1 - m], m], JacobiCN[3I EllipticK[1 - m], m]}xzero = N@Solve[JacobiCN[x, 1 / 3] == 0 && 0 < x < π, x][[1, 1, 2]]//QuietPlot[JacobiCN[x, 1 / 3], {x, -π, 2π}, Epilog -> Style[Point[{xzero, JacobiCN[xzero, 1 / 3]}], PointSize[Large], Red]]Visualization (3)
Plot the JacobiCN functions for various parameter values:
Plot[{JacobiCN[x, 0], JacobiCN[x, 0.5], JacobiCN[x, 1], JacobiCN[x, 1.5], JacobiCN[x, 2]}, {x, -2π, 2π}]Plot JacobiCN as a function of its parameter
:
Plot[{JacobiCN[1, m], JacobiCN[2, m], JacobiCN[3, m]}, {m, -7, 7}]ComplexContourPlot[Re[JacobiCN[z, 1 / 2]], {z, -4 - 4 I, 4 + 4 I}, IconizedObject[«PlotOptions»]]ComplexContourPlot[Im[JacobiCN[z, 1 / 2]], {z, -4 - 4 I, 4 + 4 I}, IconizedObject[«PlotOptions»]]Function Properties (8)
JacobiCN is
-periodic along the real axis:
JacobiCN[x, m] == JacobiCN[x + 4EllipticK[m], m]JacobiCN is
-periodic along the imaginary axis:
JacobiCN[x, m] == JacobiCN[x + 4I EllipticK[1 - m], m]JacobiCN is an even function in its first argument:
JacobiCN[-x, m] == JacobiCN[x, m]JacobiCN is an analytic function of x:
FunctionAnalytic[JacobiCN[x, m], {x, m}]It has no singularities or discontinuities:
FunctionSingularities[JacobiCN[x, m], {x, m}]FunctionDiscontinuities[JacobiCN[x, m], {x, m}]
is neither nondecreasing nor nonincreasing:
FunctionMonotonicity[JacobiCN[x, 1 / 3], x]
is not injective for any fixed
:
FunctionInjective[JacobiCN[x, m], x, Assumptions -> m > 1]FunctionInjective[JacobiCN[x, m], x, Assumptions -> m < 1]FunctionInjective[JacobiCN[x, 1], x]Plot[{JacobiCN[x, 1 / 3], .5}, {x, -10, 10}]
is not surjective for any fixed
:
FunctionSurjective[JacobiCN[x, m], x, Assumptions -> m∈Reals]Plot[{JacobiCN[x, 3], .5}, {x, -10, 10}, PlotRange -> {0, 1.5}]
is non-negative for positive integer values of
:
FunctionSign[JacobiCN[x, m], x, Assumptions -> m∈PositiveIntegers]In general, it is neither non-negative nor non-positive:
FunctionSign[JacobiCN[x, m], {x, m}]JacobiCN is neither convex nor concave:
FunctionConvexity[JacobiCN[x, m], {x, m}]Differentiation (3)
D[JacobiCN[x, m], x]derivs = Table[D[JacobiCN[x, m], {x, n}], {n, 1, 4}]//FullSimplifyPlot[Evaluate[derivs /. m -> 1 / 3], {x, -6, 6}, PlotLegends -> {"First Derivative", "Second Derivative", "Third Derivative", "Fourth Derivative"}]D[JacobiCN[x, m], m]Integration (3)
Indefinite integral of JacobiCN:
Integrate[JacobiCN[z, m], z]Definite integral of an even integrand over the interval centered at the origin:
Integrate[JacobiCN[z, 1 / 3], {z, -1, 1}]This is twice the integral over half the interval:
Integrate[JacobiCN[z, 1 / 3], {z, 0, 1}]Integrate[JacobiCN[z, m]JacobiDN[z, m], z]Integrate[(JacobiDN[t, m]/1 + JacobiCN[t, m]), t]Series Expansions (3)
Series[JacobiCN[x, 1 / 3], {x, 0, 7}]Plot the first three approximations for
around
:
terms = Normal@Table[Series[JacobiCN[x, 1 / 3], {x, 0, n}], {n, 2, 7, 2}];
Plot[{JacobiCN[x, 1 / 3], terms}, {x, -2, 2}]Series[JacobiCN[1, m], {m, 0, 3}]Plot the first three approximations for
around
:
terms = Normal@Table[Series[JacobiCN[1, m], {m, 0, n}], {n, 1, 3}];
Plot[{JacobiCN[1, m], terms}, {m, -5, 5}]JacobiCN can be applied to power series:
JacobiCN[ArcTanh[x] + O[x] ^ 8, m]Function Identities and Simplifications (2)
Parity transformations and periodicity relations are automatically applied:
JacobiCN[-u, m]JacobiCN[u + 4 EllipticK[m] + 4I EllipticK[1 - m], m]Identity involving JacobiSN:
JacobiCN[z, m] ^ 2 + JacobiSN[z, m] ^ 2//FullSimplifyFunction Representations (3)
Representation in terms of Cos of JacobiAmplitude:
Cos[JacobiAmplitude[z, m]]Relation to other Jacobi elliptic functions:
((m - 1) JacobiCD[z, m]^2/m JacobiCD[z, m]^2 - 1)//FullSimplifyJacobiCN[z, m]^2 == (JacobiCS[z, m]^2/1 + JacobiCS[z, m]^2)//FullSimplifyTraditionalForm formatting:
JacobiCN[z, m]//TraditionalFormApplications (9)
Cnoidal solution of the KdV equation:
f[x_, t_] := Sqrt[(a/m)](1/m EllipticK[m]) (12 a t EllipticE[m] + (4 a (-2 + m) t + m (x - 6 t β)) EllipticK[m]);u[x_, t_] = 2(a/m)(1 - m + (m β/2a) - ( EllipticE[m]/EllipticK[m]) + m JacobiCN[f[x, t], m] ^ 2);D[u[x, t], t] + 6 u[x, t] D[u[x, t], x] + D[u[x, t], {x, 3}]//FullSimplifyPlot3D[Evaluate[u[x, t] /. {β -> 1, a -> 3, m -> 3 / 4}], {x, -2, 2}, {t, 0, 3}]Conformal map from a unit triangle to the unit disk:
w[z_] := With[{ζ = (z Gamma[1 / 3] ^ 3/2^1 / 33^1 / 4π), m = Sin[π / 12] ^ 2}, 2^11 / 6Cos[π / 12](1 - JacobiCN[ζ, m])(1 + Tan[π / 12]JacobiCN[ζ, m]) /
(2 3^1 / 4JacobiSN[ζ, m]JacobiDN[ζ, m] + (1 - JacobiCN[ζ, m]) ^ 2)]Show points before and after the map:
trianglePoints = With[{t = E ^ (2Pi I / 3)}, Flatten[Table[s / 8. Table[#1 + j / 16(#2 - #1), {j, 0, 16}]&@@@({{1, t}, {t, 1 / t}, {1 / t, 1}} / Sqrt[3]), {s, 8}]]];Row[{Graphics[Point[{Re[#], Im[#]}]& /@ trianglePoints, Frame -> True, ImageSize -> Small],
Graphics[Point[{Re[#], Im[#]}]& /@ w[trianglePoints], Frame -> True, ImageSize -> Small]}, Spacer[20]]Solution of an anharmonic oscillator
:
ϕ[k_, φ_] = Sqrt[(2k/1 - 2k)]JacobiCN[φ / Sqrt[1 - 2k], k];D[ϕ[k, φ], {φ, 2}] == -ϕ[k, φ] ^ 3 - ϕ[k, φ]//FullSimplifyPlot[Evaluate[Table[ϕ[k, ϕ], {k, 0.1, 0.4, 0.1}]], {ϕ, 0, 6Pi}]Elliptic parametrization of an ellipse:
ellipse[ϕ_, {a_, b_}] := With[{u = a EllipticE[ϕ, 1 - (b^2/a^2)]}, {a JacobiCN[u, Sqrt[1 - (b^2/a^2)]], b JacobiSN[u, Sqrt[1 - (b^2/a^2)]]}]Plot using elliptic parametrization and circular parametrization:
With[{b = 1, a = 2}, ParametricPlot[Evaluate[{{a Cos[ϕ], b Sin[ϕ]}, ellipse[ϕ, {a, b}]}], {ϕ, -Pi, Pi}, PlotStyle -> {{StandardGray, Thick}, {White, Dashing[0.1]}}]]Subscript[T, 1][z_] = -Sqrt[m ]JacobiSN[z, m] {{0, 1, 0}, {1, 0, 1}, {0, 1, 0}} / Sqrt[2];
Subscript[T, 2] [z_] = I Sqrt[m] JacobiCN[z, m] {{0, I, 0}, {-I, 0, I}, {0, -I, 0}} / Sqrt[2];
Subscript[T, 3][z_] = I JacobiDN[z, m] {{1, 0, 0}, {0, 0, 0}, {0, 0, -1}};Check that the solutions fulfill the Nahm equations:
Subsuperscript[T, 1, ′][z] - I (Subscript[T, 2][z]. Subscript[T, 3][z] - Subscript[T, 3][z].Subscript[T, 2][z])Subsuperscript[T, 2, ′][z] - I (Subscript[T, 3][z].Subscript[T, 1][z] - Subscript[T, 1][z]. Subscript[T, 3][z])Subsuperscript[T, 3, ′][z] - I (Subscript[T, 1][z]. Subscript[T, 2][z] - Subscript[T, 2][z].Subscript[T, 1][z])Parametrization of a mylar balloon (two flat sheets of plastic sewn together at their circumference and then inflated):
x[u_] := JacobiCN[u, 1 / Sqrt[2]];
y[u_] := Sqrt[2](EllipticE[JacobiSN[u, 1 / Sqrt[2]], 1 / Sqrt[2]] - EllipticF[JacobiSN[u, 1 / Sqrt[2]], 1 / Sqrt[2]] / 2)ParametricPlot3D[{x[u]Cos[v], x[u]Sin[v], y[u]}, {v, 0, 2Pi}, {u, -EllipticK[1 / Sqrt[2]], EllipticK[1 / Sqrt[2]]}, MaxRecursion -> 1]Use JacobiCN to map a point from a 2D simplex to a 3‐by‐3 correlation matrix:
Clear[corMat];corMat[{p1_, p2_}, m_] := With[{T = 2EllipticK[m]}, With[{u1 = T p1, u2 = T p2, u3 = T(1 - p1 - p2)},
(| | | |
| --------------- | --------------- | --------------- |
| 1 | JacobiCN[u1, m] | JacobiCN[u2, m] |
| JacobiCN[u1, m] | 1 | JacobiCN[u3, m] |
| JacobiCN[u2, m] | JacobiCN[u3, m] | 1 |)]]Visualize the determinant over the simplex:
Plot3D[Det[corMat[{p1, p2}, 3 / 4]]//Evaluate, {p1, p2}∈Simplex[2], MaxRecursion -> 5]Verify that the determinant is maximal at the centroid of the simplex:
FullSimplify[D[Det[corMat[{Indexed[p, {1}], Indexed[p, {2}]}, m]], {{Indexed[p, {1}], Indexed[p, {2}]}}] /. p -> RegionCentroid[Simplex[2]]]Plot the maximum value of the determinant as a function of the elliptic parameter
:
Plot[Det[corMat[{1 / 3, 1 / 3}, m]], {m, 0, 1}]Use the correlation matrix to define a 3D T copula distribution
𝒟 = CopulaDistribution[{"MultivariateT", corMat[{0.2, 0.4}, 0.1], 7}, {UniformDistribution[], UniformDistribution[], UniformDistribution[]}]{PointSize[Tiny], Point[RandomVariate[𝒟, 10 ^ 4]]}//Graphics3DParameterization of an algebraic lemniscate:
p[t_, m_] := {(JacobiSN[t, m]/1 + JacobiCN[t, m] ^ 2), (JacobiSN[t, m]JacobiCN[t, m]/1 + JacobiCN[t, m] ^ 2)};Verify that the parametric function solves the algebraic equation for the lemniscate:
Entity["PlaneCurve", "Lemniscate"][EntityProperty["PlaneCurve", "AlgebraicEquation"]][a][, ]% /. Thread[{, } -> a p[t, m]]//FullSimplifyPeriodic motion of 3 bodies, where the bodies chase each other on a common orbit with equal time‐spacing on a lemniscate:
p3[t_, m_] := With[{τ = 4 EllipticK[m]}, {p[t, m], p[t + τ / 3, m], p[t - τ / 3, m]}]The elliptic parameter is fixed by requiring that the center of mass of the 3-body system remains fixed at the origin:
m3 = m /. FindRoot[With[{t = 3 / 5EllipticK[m]}, First[Mean[p3[t, m]]]] == 0, {m, 1 / 2}, WorkingPrecision -> 50]Visualize the 3‐body configuration:
Animate[
ParametricPlot[p[t, m3]//Evaluate, {t, 0, 4EllipticK[m3]}, Epilog -> MapIndexed[{ColorData[1]@@#2, PointSize[Large], Point[#1]}&, p3[u, m3]]], {u, 0, 12EllipticK[m3] / 3}, SaveDefinitions -> True]p5[t_, m_] := With[{τ = 4 EllipticK[m]}, Table[p[t + (k/5) τ, m], {k, -2, 2}]]m5 = m /. FindRoot[With[{t = 3 / 5EllipticK[m]}, First[Mean[p5[t, m]]]] == 0, {m, 1 / 2}, WorkingPrecision -> 50]Animate[
ParametricPlot[p[t, m5]//Evaluate, {t, 0, 4 EllipticK[m5]}, Epilog -> MapIndexed[{ColorData[1]@@#2, PointSize[Large], Point[#1]}&, p5[u, m5]]], {u, 0, 4EllipticK[m5]}, SaveDefinitions -> True]The 5-body configuration admits two elliptic parameters that fix the center of mass:
m5a = m /. FindRoot[With[{t = 3 / 5EllipticK[m]}, First[Mean[p5[t, m]]]] == 0, {m, 999 / 1000}, WorkingPrecision -> 50]Animate[
ParametricPlot[p[t, m5a]//Evaluate, {t, 0, 4 EllipticK[m5a]}, Epilog -> MapIndexed[{ColorData[1]@@#2, PointSize[Large], Point[#1]}&, p5[u, m5]]], {u, 0, 8 / m5a ^ 2}, SaveDefinitions -> True]Parameterization of Costa's minimal surface [MathWorld]:
x[w_, m_] := With[{c = 2EllipticK[m]}, Re[((π/2) + (c^2/4))w - (c/2)(JacobiEpsilon[c w, m] + JacobiCN[c w, m] JacobiDS[c w, m]) - (π/4c)JacobiSD[c w, m](JacobiNC[c w, m] + JacobiCN[c w, m])]];y[w_, m_] := With[{c = 2EllipticK[m]}, Im[((π/2) - (c^2/4))w + (c/2)(JacobiEpsilon[c w, m] + JacobiCN[c w, m] JacobiDS[c w, m]) - (π/4c)JacobiSD[c w, m](JacobiNC[c w, m] + JacobiCN[c w, m])]];z[w_, m_] := With[{c = 2EllipticK[m]}, Sqrt[(π/8)]Log[Abs[JacobiCN[c w, m]^2]]];ParametricPlot3D[With[{w = u + I v}, {x[w, 1 / 2], y[w, 1 / 2], z[w, 1 / 2]}], {u, 0, 1}, {v, 0, 1}, Mesh -> False]Properties & Relations (4)
Compose with inverse functions:
{JacobiCN[InverseJacobiCN[z, m], m], InverseJacobiCN[JacobiCN[z, m], m]}Use PowerExpand to disregard multivaluedness of the inverse function:
PowerExpand[%]Evaluate as a result of applying Cos to JacobiAmplitude:
Cos[JacobiAmplitude[z, m]]Solve a transcendental equation:
Solve[JacobiCN[x, m]^2 + 2JacobiCN[x, m] == a, x]//QuietIntegrate[JacobiCN[z, m] ^ 3, z]Possible Issues (2)
Machine-precision input is insufficient to give the correct answer:
JacobiCN[10. ^ 15, 4 / 5]N[JacobiCN[10 ^ 15, 4 / 5], 20]Currently only simple simplification rules are built in for Jacobi functions:
JacobiSN[z, m] ^ 2 + JacobiCN[z, m] ^ 2 - 1//FullSimplifyJacobiCN[u, m]JacobiND[u, m]JacobiDC[u, m]//FullSimplifySee Also
Tech Notes
Related Guides
Related Links
History
Introduced in 1988 (1.0)
Text
Wolfram Research (1988), JacobiCN, Wolfram Language function, https://reference.wolfram.com/language/ref/JacobiCN.html.
CMS
Wolfram Language. 1988. "JacobiCN." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/JacobiCN.html.
APA
Wolfram Language. (1988). JacobiCN. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/JacobiCN.html
BibTeX
@misc{reference.wolfram_2026_jacobicn, author="Wolfram Research", title="{JacobiCN}", year="1988", howpublished="\url{https://reference.wolfram.com/language/ref/JacobiCN.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_jacobicn, organization={Wolfram Research}, title={JacobiCN}, year={1988}, url={https://reference.wolfram.com/language/ref/JacobiCN.html}, note=[Accessed: 12-June-2026]}