You are now following this Submission
- You will see updates in your followed content feed
- You may receive emails, depending on your communication preferences
The complex upper halfplane with SL_2(ℤ) has a moduli space interpretation as parametrizing complex elliptic curves.
What the project does
Given τ, the project visualizes the elliptic curve ℂ/Λ_τ where Λ_τ = ℤ + ℤ·τ, and generates the following plots:
- Fundamental domain (moduli) plot
- Draws the standard SL_2(ℤ) fundamental domain 𝔽 ⊂ ℍ.
- Reduces the input τ to the representative τ_FD ∈ 𝔽 (via an explicit SL_2(ℤ) transformation) and marks τ_FD on the plot.
- Lattice plot in the complex plane
- Plots lattice points of Λ_τ in ℂ and the fundamental parallelogram.
- Marks the spanning vectors ω1 = 1 (red) and ω2 = τ (blue).
- Torus plot for ℂ/Λ_τ
- Displays a standard embedded torus as a topological model of the quotient ℂ/Λ_τ.
- Highlights the two generator cycles corresponding to ω1 and ω2 in red/blue.
- 3D ℘-surface visualization
- Computes Weierstrass ℘(z) and ℘′(z) using explicit truncated lattice sums on a grid in a fundamental parallelogram (avoiding poles near lattice points).
- Plots the 3D objectz ↦ (Re(℘(z)), Im(℘(z)), Re(℘′(z))) ∈ ℝ^3with clear axis labels and title.
- Automatic on-screen animation (30 frames)
- Runs automatically when you execute main_demo.m.
- For θ running from 0 to 2π (30 frames), displays the 3D plot ofz ↦ (Re(℘(z)), Im(℘(z)), cos(θ)·Re(℘′(z)) + sin(θ)·Im(℘′(z))) ∈ ℝ^3
- Shows each frame for ~0.5 seconds and stops after the final frame.
- Real 2D Weierstrass curve plot (only if meaningful)
- Computes invariants g2(τ), g3(τ) from truncated Eisenstein sums.
- If the associated real model is numerically sensible (e.g. j(τ) is approximately real), plots the real affine curvey^2 = 4x^3 − g2 x − g3restricted correctly to the real locus (no spurious x-axis segments).
- The plotting guarantees the correct geometry: for each fixed y there are at most 3 real x-values (as expected from a cubic), and the default example τ = i has the correct qualitative shape.
Input format
- Main input: a single complex number tau with imag(tau) > 0 (a point in the upper half-plane).
- Set tau by editing the first lines of main_demo.m, e.g. tau = 1i for the square lattice.
- Optional speed/accuracy parameters (grid sizes, lattice truncation, tolerances, animation settings) are also set in main_demo.m and have safe defaults.
How to run
- Run startup.m (adds the project folders to the MATLAB path).
- Run main_demo.m.
- Edit tau in main_demo.m and rerun to explore different elliptic curves.
Cite As
Julia (2026). Moduli space SL_2(ℤ)\ℂ for complex elliptic curves (https://www.mathworks.com/matlabcentral/fileexchange/183204-moduli-space-sl_2-for-complex-elliptic-curves), MATLAB Central File Exchange. Retrieved .
General Information
- Version 1.0.0 (13.1 KB)
MATLAB Release Compatibility
- Compatible with any release
Platform Compatibility
- Windows
- macOS
- Linux
| Version | Published | Release Notes | Action |
|---|---|---|---|
| 1.0.0 |
