WeierstrassSigma[u,{g2,g3}]
gives the Weierstrass sigma function
.
WeierstrassSigma
WeierstrassSigma[u,{g2,g3}]
gives the Weierstrass sigma function
.
Details
- Mathematical function, suitable for both symbolic and numerical manipulation.
- WeierstrassSigma is related to WeierstrassZeta through the differential equation
. - WeierstrassSigma is not periodic and is therefore not strictly an elliptic function.
- WeierstrassSigma[u,{g2,g3}] is an entire function of u with no branch cut discontinuities.
- For certain special arguments, WeierstrassSigma automatically evaluates to exact values.
- WeierstrassSigma can be evaluated to arbitrary numerical precision.
- WeierstrassSigma can be used with CenteredInterval objects. »
Examples
open all close allBasic Examples (4)
WeierstrassSigma[2.2, {1, 2}]Plot over a subset of the reals:
Plot[WeierstrassSigma[x, {1, 2}], {x, -6, 6}]Plot over a subset of the complexes:
ComplexPlot3D[WeierstrassSigma[z, {1 / 2, 1 / 2}], {z, -2 - 2I, 2 + 2I}, PlotLegends -> Automatic]Series expansion at the origin:
Series[WeierstrassSigma[x, {g2, g3}], {x, 0, 12}]Scope (30)
Numerical Evaluation (7)
WeierstrassSigma[.7, {1, 2}]//ChopWeierstrassSigma[32., {3, 2}]N[WeierstrassSigma[2 / 3, {1, 2}], 50]//ChopThe precision of the output tracks the precision of the input:
WeierstrassSigma[2.111111111111111111111111, {1, 2}]//ChopWeierstrassSigma[2. + I, {I, I + 2}]Evaluate efficiently at high precision:
WeierstrassSigma[12`100, {3, 2}]//TimingWeierstrassSigma[13`10000, {4, 2}];//Timing//QuietWeierstrassSigma can be used with CenteredInterval objects:
WeierstrassSigma [CenteredInterval[1 / 2 + I / 3, (1 + I) / 10 ^ 9], {CenteredInterval[1 + I, (1 + I) / 10 ^ 9], CenteredInterval[3 / 4, 1 / 10 ^ 9]}]Compute average-case statistical intervals using Around:
WeierstrassSigma[ Around[2, 0.01], {12, -8}]Compute the elementwise values of an array:
WeierstrassSigma[{{1 / 2, -1}, {1, 1 / 2}}, {12, -8}]Or compute the matrix WeierstrassSigma function using MatrixFunction:
MatrixFunction[WeierstrassSigma[#, {12, -8}]&, {{1 / 2, 1}, {0, 1 / 2}}]//FullSimplifySpecific Values (5)
WeierstrassSigma[0, {1, 1}]WeierstrassSigma automatically evaluates to simpler functions for certain parameters:
WeierstrassSigma[1, {12, -8}]WeierstrassSigma evaluates to zero at the periods of WeierstrassP:
WeierstrassSigma[2WeierstrassHalfPeriodW1[{g2, g3}], {g2, g3}]WeierstrassSigma[2WeierstrassHalfPeriodW2[{g2, g3}], {g2, g3}]WeierstrassSigma[2WeierstrassHalfPeriodW3[{g2, g3}], {g2, g3}]Values of WeierstrassSigma at the half-periods of WeierstrassP:
WeierstrassSigma[{WeierstrassHalfPeriodW1[{1, 0}], WeierstrassHalfPeriodW2[{1, 0}], WeierstrassHalfPeriodW3[{1, 0}]}, {1, 0}]WeierstrassSigma[{WeierstrassHalfPeriodW1[{0, 1}], WeierstrassHalfPeriodW2[{0, 1}], WeierstrassHalfPeriodW3[{0, 1}]}, {0, 1}]Find the first positive maximum of WeierstrassSigma[x,1/2,1/2]:
xmax = x /. FindRoot[D[WeierstrassSigma[x, {1 / 2, 1 / 2} ], x] == 0, {x, 2}]//ChopPlot[WeierstrassSigma[x, {1 / 2, 1 / 2} ], {x, -5, 5}, Epilog -> Style[Point[{xmax, WeierstrassSigma[xmax, {1 / 2, 1 / 2} ]}], PointSize[Large], Red]]Visualization (2)
Plot the WeierstrassSigma function for various parameters:
Plot[{WeierstrassSigma[u, {2, 3}], WeierstrassSigma[u, {4, 3}], WeierstrassSigma[u, {4, 5}]}, {u, -6, 6}]ComplexContourPlot[Re[WeierstrassSigma[z, {2, 1}]], {z, -4 - 4 I, 4 + 4 I}, Contours -> 20]ComplexContourPlot[Im[WeierstrassSigma[z, {2, 1}]], {z, -4 - 4 I, 4 + 4 I}, Contours -> 20]Function Properties (11)
WeierstrassSigma is defined for all real and complex inputs:
FunctionDomain[WeierstrassSigma[x, {a, b}], {x, a, b}]FunctionDomain[WeierstrassSigma[x, {a, b}], {x, a, b}, Complexes]Approximate function range of
:
FunctionRange[WeierstrassSigma[x, {1, 2}], x, y]//QuietWeierstrassSigma is an odd function with respect to x:
WeierstrassSigma[-x, {Subscript[``g``, 2], Subscript[``g``, 3]}]WeierstrassSigma threads elementwise over lists in its first argument:
WeierstrassSigma[{u1, u2}, {g2, g3}]FunctionAnalytic[WeierstrassSigma[x, {1, 2}], x]It has no singularities or discontinuities:
FunctionSingularities[WeierstrassSigma[x, {1, 2}], x]FunctionDiscontinuities[WeierstrassSigma[x, {1, 2}], x]
is neither nondecreasing nor nonincreasing:
FunctionMonotonicity[WeierstrassSigma[x, {1, 0}], x]FunctionInjective[WeierstrassSigma[x, {1, 2}], x]Plot[{WeierstrassSigma[x, {1, 2}], 2}, {x, -4, 4}]FunctionSurjective[WeierstrassSigma[x, {3, 1}], x]Plot[{WeierstrassSigma[x, {3, 1}], -20}, {x, -5, 5}]
is neither non-negative nor non-positive:
FunctionSign[WeierstrassSigma[x, {1, 2}], x]
is neither convex nor concave:
FunctionConvexity[WeierstrassSigma[x, {1, 0}], x]TraditionalForm formatting:
WeierstrassSigma[z, {Subscript[g, 2], Subscript[g, 3]}]//TraditionalFormDifferentiation (2)
First derivative with respect to
:
D[WeierstrassSigma[u, {Subscript[``g``, 2], Subscript[``g``, 3]}], u]Higher derivatives with respect to
:
Table[D[WeierstrassSigma[u, {Subscript[``g``, 2], Subscript[``g``, 3]}], {u, k}], {k, 1, 4}]//FullSimplifyPlot the higher derivatives with respect to
:
Plot[Evaluate [% /. { Subscript[``g``, 2] -> 2, Subscript[``g``, 3] -> 3}, {u, -2.5, 2.5}, PlotLegends -> {"First Derivative", "Second Derivative", "Third Derivative", "Fourth Derivative"}]]Series Expansions (3)
Find the Taylor expansion using Series:
Series[WeierstrassSigma[x, {g2, g3}], {x, 0, 10}]Plots of the first three approximations around
:
terms = Normal@Table[Series[WeierstrassSigma[x, {2, 3}], {x, 0, m}], {m, 1, 15, 5}];
Plot[{WeierstrassSigma[x, {2, 3}], terms}, {x, -8, 8}]Find series expansion for an arbitrary symbolic direction
:
Series[WeierstrassSigma[x, {g2, g3}], {x, DirectedInfinity[z], 1}, Assumptions -> x > 0]// Normal//FullSimplifyTaylor expansion at a generic point:
Series[WeierstrassSigma[x, {g2, g3}], {x, x0, 2}]//Normal// FullSimplifyApplications (2)
The system of coupled nonlinear differential equations for a heavy symmetric top:
topODEs = {ω1'[t] == -m ω2[t] ω3[t] - x2[t], ω2'[t] == m ω3[t] ω1[t] + x1[t], ω3'[t] == 0, x1'[t] == x2[t] ω3[t] - x3[t] ω2[t], x2'[t] == x3[t] ω1[t] - x1[t] ω3[t], x3'[t] == x1[t] ω2[t] - x2[t] ω1[t]};The solutions can be expressed through Weierstrass sigma and zeta functions:
{ω1[t_], ω2[t_], ω3[t_], x1[t_], x2[t_], x3[t_]} = With[{σ = WeierstrassSigma[#, {g2, g3}]&, ζ = WeierstrassZeta[#, {g2, g3}]&},
Module[{α = (-(-1 + m) (ζ[c1] + ζ[c2]) + 2 m ζ[c1 + c2]/1 + m)}, {((-1)^3 / 4 E^-t α - β (E^2 (t α + β) σ[-c1 - c2 + t] + I σ[c1 + c2 + t])/σ[c1 + c2] σ[t]), ((-1)^1 / 4 E^-t α - β (-E^2 (t α + β) σ[-c1 - c2 + t] + I σ[c1 + c2 + t])/σ[c1 + c2] σ[t]), -I (α + ζ[c1] + ζ[c2] - 2 ζ[c1 + c2]), -((-1)^1 / 4 E^-t α - β (E^2 (t α + β) σ[-c1 + t] σ[-c2 + t] + I σ[c1 + t] σ[c2 + t])) / (σ[c1] σ[c2] σ[t]^2), ((-1)^3 / 4 E^-t α - β (-E^2 (t α + β) σ[-c1 + t] σ[-c2 + t] + I σ[c1 + t] σ[c2 + t])) / (σ[c1] σ[c2] σ[t]^2), (σ[c2]^2 σ[-c1 + t] σ[c1 + t] + σ[c1]^2 σ[-c2 + t] σ[c2 + t]/σ[c1]^2 σ[c2]^2 σ[t]^2)}]];Numerically check the correctness of the solutions:
topODEs /. (# -> RandomReal[WorkingPrecision -> 50]& /@ {c1, c2, β, g2, g3, t, m})Form any elliptic function with given periods, poles and zeros as a rational function of WeierstrassSigma:
makeEllipticFunction[z_, {ω1_, ω3_}, zeros_List, poles_List] := Module[{g2, g3, σ},
g2 = WeierstrassInvariantG2[{ω1, ω3}];
g3 = WeierstrassInvariantG3[{ω1, ω3}];σ = WeierstrassSigma[#, {g2, g3}]&;(Times @@σ[z - zeros]) / (Times @@σ[z - poles])σ[z - Last[poles]] / σ[z - Last[poles] - (Total[zeros] - Total[poles])]] /; Length[zeros] == Length[poles] && Resolve[Exists[{μ, ν}, Element[{μ, ν}, Integers], Total[zeros] - Total[poles] == μ ω1 + ν ω3]]Form an elliptic function with a single and a double zero and a triple pole:
f[z_] = makeEllipticFunction[z, {1, I}, {1 / 3 + 1 / 3 I, 1 / 3 + 1 / 3 I, -2 / 3 - 2 / 3 I}, {0, 0, 0}]Plot the resulting elliptic function:
ComplexPlot[f[z], {z, -1.5 - 1.5I, 1.5 + 1.5I}, ColorFunction -> "CyclicReImLogAbs"]Properties & Relations (2)
D[WeierstrassSigma[z, {Subscript[g, 2], Subscript[g, 3]}], {z, 3}]Argument reduction formulas for WeierstrassSigma:
WeierstrassSigma[z + 2WeierstrassHalfPeriodW1[{g2, g3}], {g2, g3}]WeierstrassSigma[z + 2WeierstrassHalfPeriodW2[{g2, g3}], {g2, g3}]WeierstrassSigma[z + 2WeierstrassHalfPeriodW3[{g2, g3}], {g2, g3}]Neat Examples (1)
Plot WeierstrassSigma over the complex plane:
Module[{g2 = 2, g3 = 1 + I, ω1, ω3}, {ω1, ω3} = WeierstrassHalfPeriods[{g2, g3}]//N;ParametricPlot3D[{Re[x ω1 + y ω3], Im[x ω1 + y ω3], Re[WeierstrassSigma[x ω1 + y ω3, {g2, g3}]]}, {x, -3, 3}, {y, -3, 3}, PlotRange -> {-3, 3}, BoxRatios -> {1, 1, 1 / 2}, Mesh -> False]]Tech Notes
Related Guides
Related Links
History
Introduced in 1996 (3.0) | Updated in 2023 (13.3)
Text
Wolfram Research (1996), WeierstrassSigma, Wolfram Language function, https://reference.wolfram.com/language/ref/WeierstrassSigma.html (updated 2023).
CMS
Wolfram Language. 1996. "WeierstrassSigma." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2023. https://reference.wolfram.com/language/ref/WeierstrassSigma.html.
APA
Wolfram Language. (1996). WeierstrassSigma. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/WeierstrassSigma.html
BibTeX
@misc{reference.wolfram_2026_weierstrasssigma, author="Wolfram Research", title="{WeierstrassSigma}", year="2023", howpublished="\url{https://reference.wolfram.com/language/ref/WeierstrassSigma.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_weierstrasssigma, organization={Wolfram Research}, title={WeierstrassSigma}, year={2023}, url={https://reference.wolfram.com/language/ref/WeierstrassSigma.html}, note=[Accessed: 13-June-2026]}