Metadata-Version: 2.4
Name: ednarzinho
Version: 0.1.0
Summary: Biblioteca didática para resolução de matrizes com passo a passo verificado em pt-BR
Project-URL: Homepage, https://pypi.org/project/ednarzinho/
Author-email: Lucca <contato@bmai.space>
License-Expression: MIT
License-File: LICENSE
Keywords: algebra-linear,matrizes,passo-a-passo,pedagogico,sympy
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Education
Classifier: Natural Language :: Portuguese (Brazilian)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Education
Classifier: Topic :: Scientific/Engineering :: Mathematics
Requires-Python: >=3.12
Requires-Dist: rich>=13.7
Requires-Dist: sympy>=1.13
Provides-Extra: dev
Requires-Dist: hypothesis>=6.100; extra == 'dev'
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: ruff>=0.6; extra == 'dev'
Description-Content-Type: text/markdown

# ednarzinho

Biblioteca Python **didática** para resolução de matrizes com **passo a passo verificado**, em pt-BR.

Resolve matrizes — inclusive **simbólicas** (com `r`, `m`, `sin(θ)`, `√`, etc.), produtos
escalares e vetoriais — calcula **determinante** e **inversa**, e **gera um notebook Jupyter
pronto** com a resolução completa. Cada resultado é **conferido por um método independente**:
a biblioteca nunca devolve uma resposta errada em silêncio.

```python
import ednarzinho as edz

edz.gerar_notebook([[2, 1], [3, 4]], "resolucao.ipynb")
# → cria um .ipynb com a matriz, o determinante, a inversa e o passo a passo.
```

## Instalação

```bash
pip install ednarzinho
```

Requer **Python 3.12+**. Instala o SymPy automaticamente.

## Uso

### Caso principal: resolver uma matriz e gerar o notebook

A função `gerar_notebook` recebe a matriz (números **ou** expressões simbólicas em string) e
escreve um `.ipynb` autossuficiente — pronto para entregar:

```python
import ednarzinho as edz

A = [
    ["sqrt(1 - 2*m/r)", 0, 0, 0],
    [0, "sqrt((1-2*m/r)**(-1))*sin(theta)*cos(phi)", "r*cos(theta)*cos(phi)", "-r*sin(theta)*sin(phi)"],
    [0, "sqrt((1-2*m/r)**(-1))*sin(theta)*sin(phi)", "r*cos(theta)*sin(phi)", "r*sin(theta)*cos(phi)"],
    [0, "sqrt((1-2*m/r)**(-1))*cos(theta)", "-r*sin(theta)", 0],
]

edz.gerar_notebook(A, "resolucao.ipynb")          # determinante + inversa (padrão)
edz.gerar_notebook(A, "so_det.ipynb", operacoes=["determinante"])
```

### Resolver direto no código

```python
import ednarzinho as edz

A = edz.Matriz([[2, 1], [3, 4]])

r = edz.resolver(A, operacao="determinante")
print(r.valor)            # o determinante
print(r.markdown())       # passo a passo em Markdown

inv = edz.resolver(A, operacao="inversa")
print(inv.markdown())     # passo a passo da inversa (verificada por A·A⁻¹ = I)
```

Operações: `determinante`, `inversa`, `gauss`, `gauss_jordan`, `sistema` (com `b=...`).
Formatos de saída de uma `Resolucao`: `.markdown()`, `.latex()`, `.terminal()`.

## Por que "verificado"?

Para matrizes **simbólicas**, a eliminação de Gauss pode dividir por pivôs que se anulam.
Por isso a `ednarzinho` usa **cofatores** (expansão de Laplace para o determinante; método da
adjunta para a inversa) e **cruza** cada resultado com um algoritmo independente (Berkowitz,
`A·A⁻¹ = I`). Divergência → erro explícito, nunca um valor errado silencioso.

## Desenvolvimento

```bash
git clone <URL-do-seu-repositorio>     # ajuste para o seu GitHub
cd ednarzinho
python -m pip install -e ".[dev]"
python -m pytest          # 344 testes
python -m ruff check src/
```

> No Windows, se a ativação do venv falhar por política de execução, use
> `.venv\Scripts\python.exe -m ...` diretamente.

## Licença

MIT — veja [LICENSE](LICENSE).
