gives the Klein invariant modular elliptic function
.
KleinInvariantJ
gives the Klein invariant modular elliptic function
.
Details
- Mathematical function, suitable for both symbolic and numerical manipulation.
- The argument
is the ratio of Weierstrass half‐periods
. - KleinInvariantJ is given in terms of Weierstrass invariants by
.
is invariant under any combination of the modular transformations
and
. - For certain special arguments, KleinInvariantJ automatically evaluates to exact values.
- KleinInvariantJ can be evaluated to arbitrary numerical precision.
- KleinInvariantJ can be used with CenteredInterval objects. »
- KleinInvariantJ automatically threads over lists.
Examples
open all close allBasic Examples (4)
KleinInvariantJ[1 + 2.I]//ChopPlot over a subset of the reals:
Plot[Re[KleinInvariantJ[x + I]], {x, -2, 2}]Plot over a subset of the complexes:
ComplexPlot3D[KleinInvariantJ[z + I], {z, -2 - I / 2, 2 + I / 2}, PlotLegends -> Automatic]Series expansion at the origin:
Series[KleinInvariantJ[x + I], {x, 0, 3}]//Normal//FullSimplifyScope (23)
Numerical Evaluation (5)
KleinInvariantJ[7.5 + I]//QuietKleinInvariantJ[I]N[KleinInvariantJ[1 / 9 + I], 50]The precision of the output tracks the precision of the input:
KleinInvariantJ[1.22222222222222222222 + I]Evaluate efficiently at high precision:
KleinInvariantJ[I + 1 / 5`100]//TimingKleinInvariantJ[I + 2 / 5`1000];//TimingKleinInvariantJ can be used with CenteredInterval objects:
KleinInvariantJ[CenteredInterval[2I, .2]]Compute average-case statistical intervals using Around:
KleinInvariantJ[ Around[ I , 0.001]]Specific Values (2)
KleinInvariantJ[I ]KleinInvariantJ[(-1 + I Sqrt[3]) / 2]//QuietFind the first positive maximum of the real part of KleinInvariantJ:
xmax = x /. FindRoot[Re[D[KleinInvariantJ[x + I], x]] == 0, {x, 1}]Plot[Re[KleinInvariantJ[x + I]], {x, -1, 2}, Epilog -> Style[Point[{xmax, Re[KleinInvariantJ[xmax + I]]}], PointSize[Large], Red]]Visualization (2)
Plot the real part of KleinInvariantJ:
Plot[Re[KleinInvariantJ[x + I]], {x, -2, 2}]Plot the real part of J(τ) function:
ComplexContourPlot[Re[KleinInvariantJ[z]], {z, -1 - 0.1 I, 1 + 3I}, Contours -> 20]Plot the imaginary part of J(τ) function:
ComplexContourPlot[Im[KleinInvariantJ[z]], {z, -1 - 0.1 I, 1 + 3 I}, Contours -> 20]Function Properties (10)
Complex domain of KleinInvariantJ:
FunctionDomain[KleinInvariantJ[x], x, Complexes]KleinInvariantJ is a periodic function:
KleinInvariantJ[x + 1] == KleinInvariantJ[x]KleinInvariantJ threads elementwise over lists:
KleinInvariantJ[{0.2 + 2I, 0.3 + 2I, 0.4 + 2I}]KleinInvariantJ is an analytic function on its domain of definition:
FunctionAnalytic[{KleinInvariantJ[x], Im[x] > 0}, x, Complexes]It has no singularities or discontinuities there:
Simplify[FunctionSingularities[KleinInvariantJ[x], x, Complexes], Assumptions -> Im[x] > 0]Simplify[FunctionDiscontinuities[KleinInvariantJ[x], x, Complexes], Assumptions -> Im[x] > 0]
is neither nondecreasing nor nonincreasing:
FunctionMonotonicity[Re[KleinInvariantJ[x + I]], x]KleinInvariantJ is not injective over the complexes:
FunctionInjective[KleinInvariantJ[x], x, Complexes]FunctionSurjective[Re@KleinInvariantJ[x + I], x]Plot[{Re[KleinInvariantJ[x + I]], -1 / 2}, {x, -6, 6}]
is neither non-negative nor non-positive:
FunctionSign[Re[KleinInvariantJ[x + I]], x]
is neither convex nor concave:
FunctionConvexity[Re[KleinInvariantJ[x + I]], x]TraditionalForm formatting:
KleinInvariantJ[τ]//TraditionalFormDifferentiation (2)
First derivative with respect to τ:
D[KleinInvariantJ[τ], τ]The first and second derivatives with respect to τ:
Table[Re[D[KleinInvariantJ[τ + I], {τ, k}]], {k, 1, 2}]//FullSimplifyPlot the first and second derivatives with respect to τ:
Plot[%, {τ, -1.5, 1.5}, PlotLegends -> {"First Derivative", "Second Derivative"}]Series Expansions (2)
Find the Taylor expansion using Series:
Series[KleinInvariantJ[x + I], {x, 0, 3}]//Normal//FullSimplifyPlots of the first three approximations around
:
terms = Re@Normal@Table[Series[KleinInvariantJ[x + I], {x, 0, m}], {m, 1, 5, 2}];
Plot[{Re@KleinInvariantJ[x + I], terms}, {x, -2, 2}, PlotRange -> {-10, 10}]Taylor expansion at a generic point:
Series[KleinInvariantJ[x + I], {x, x0, 1}]//Normal// FullSimplifyApplications (7)
Some modular properties of KleinInvariantJ are automatically applied:
KleinInvariantJ[τ + 1]Verify a more complicated identity numerically:
KleinInvariantJ[τ / (1 - 2τ)] == KleinInvariantJ[τ] /. τ -> RandomComplex[{-3 + I / 10, 3 + 10 I}, {100}, WorkingPrecision -> 20]Find values at quadratic irrationals:
N[KleinInvariantJ[(-1 + I Sqrt[{7, 19, 163}]) / 2], 50]Rationalize[%]KleinInvariantJ is a modular function. Make an ansatz for a modular equation:
(ansatz = With[{u = KleinInvariantJ[z], v = KleinInvariantJ[2z]},
Sum[Subscript[c, i, j]u ^ i v ^ j, {i, 0, 3}, {j, 0, 3}] /. Subscript[c, 3, 0] -> 1] == 0)//TraditionalFormForm an overdetermined system of equations and solve it:
eqs = Table[N[ansatz /. z -> N[1 / 3 + 1 / k + I / 3, 250], 50], {k, 3, 24}];sol = Solve[eqs, Flatten[Table[Subscript[c, i, j], {i, 0, 3}, {j, 0, 3}]]]//Chop//RationalizeThis is the modular equation of order 2:
ansatz /. First[sol]//TraditionalFormSolution of the Chazy equation
:
w[z_] = Simplify[((4 - 7 KleinInvariantJ[z])KleinInvariantJ'[z] ^ 2 +
6(KleinInvariantJ[z] - 1)KleinInvariantJ[z] KleinInvariantJ''[z]) /
(2(KleinInvariantJ[z] - 1)KleinInvariantJ[z]KleinInvariantJ'[z])];Plot[Re[w[x + 1.1I ]], {x, 0, 1}]Plot the absolute value in the complex plane:
Plot3D[Abs[KleinInvariantJ[x + I y]], {x, -1, 1}, {y, 0.2, 1}]Plot the imaginary part in the complex plane:
ContourPlot[Im[KleinInvariantJ[x + I y]], {x, -1, 1}, {y, 0.2, 1.5}, AspectRatio -> Automatic]Define the discriminant of the Weierstrass elliptic curve:
disc[g2_, g3_] = Block[{x}, Discriminant[4x ^ 3 - g2 x - g3, x] / 16]It can be computed as the ratio of a power of
invariant and the discriminant:
j[τ_] := WeierstrassInvariantG2[{1, τ}] ^ 3 / disc[WeierstrassInvariantG2[{1, τ}], WeierstrassInvariantG3[{1, τ}]]j[0.5 I]Compare with the built‐in function value:
KleinInvariantJ[0.5 I]Properties & Relations (2)
Possible Issues (2)
Machine-precision input may be insufficient to give the correct answer:
KleinInvariantJ[10. ^ 22 Pi + I]With exact input, the answer is correct:
N[KleinInvariantJ[10 ^ 22 Pi + I], 20]KleinInvariantJ remains unevaluated outside of its domain of analyticity:
KleinInvariantJ[Pi]N[%]Tech Notes
Related Guides
Related Links
History
Introduced in 1996 (3.0) | Updated in 2021 (13.0)
Text
Wolfram Research (1996), KleinInvariantJ, Wolfram Language function, https://reference.wolfram.com/language/ref/KleinInvariantJ.html (updated 2021).
CMS
Wolfram Language. 1996. "KleinInvariantJ." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2021. https://reference.wolfram.com/language/ref/KleinInvariantJ.html.
APA
Wolfram Language. (1996). KleinInvariantJ. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/KleinInvariantJ.html
BibTeX
@misc{reference.wolfram_2026_kleininvariantj, author="Wolfram Research", title="{KleinInvariantJ}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/KleinInvariantJ.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_kleininvariantj, organization={Wolfram Research}, title={KleinInvariantJ}, year={2021}, url={https://reference.wolfram.com/language/ref/KleinInvariantJ.html}, note=[Accessed: 12-June-2026]}