Metadata-Version: 2.4
Name: lorenz
Version: 1.0.0
Summary: A simple Python package for visualizing the Lorenz attractor, a classic example of a chaotic system in dynamical systems theory.
License: GPLv3
License-File: LICENSE
Keywords: Python,dynamical systems,data visualization,open-source
Author: gperdrizet
Author-email: george@perdrizet.org
Requires-Python: >=3.10
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: matplotlib
Requires-Dist: pandas
Project-URL: Documentation, https://gperdrizet.github.io/simple-python-package/README.MD
Project-URL: Homepage, https://github.com/gperdrizet/simple-python-package
Project-URL: Issues, https://github.com/gperdrizet/simple-python-package/issues
Project-URL: PyPI, https://pypi.org/project/lorenz
Project-URL: Repository, https://github.com/gperdrizet/simple-python-package
Description-Content-Type: text/markdown

# Lorenz

Lorenz provides simple utilities to generate and plot Lorenz system trajectories (the classic "butterfly" attractor).

## Install

```text
pip install lorenz
```

## Quick start

```python
from lorenz import LorenzButterfly

lorenz = LorenzButterfly()
ax = lorenz.plot()
```

## API

### LorenzButterfly

Generate Lorenz system data and plot trajectories.

```python
from lorenz import LorenzButterfly

lorenz = LorenzButterfly(sigma=10.0, rho=28.0, beta=8.0 / 3.0)

# Generate data as a pandas DataFrame
frame = lorenz.generate_data(steps=5000, dt=0.01)

# Plot the trajectory (matplotlib 3D axes)
ax = lorenz.plot(steps=5000, dt=0.01)
```

**Parameters**
- `sigma`: Prandtl number controlling horizontal convection strength
- `rho`: Rayleigh number controlling temperature gradient/chaos level
- `beta`: geometry factor (often `8/3` for the classic system)
- `dt`: integration time step
- `steps`: number of integration steps
- `initial`: starting point `(x, y, z)`

**Methods**
- `generate_data(...)` returns a `pandas.DataFrame` with columns `x`, `y`, `z`
- `plot(...)` returns a `matplotlib.axes.Axes` instance

