Metadata-Version: 2.4
Name: GabrielDiazCalculadoraAlgebraicaMatricial
Version: 0.1.0
Summary: Una librería para resolver sistemas de ecuaciones lineales y no lineales
Author: Gabriel Diaz
Author-email: dg22023@ues.edu.sv
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: numpy>=1.20.0
Dynamic: author
Dynamic: author-email
Dynamic: description
Dynamic: description-content-type
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# LibreriaPythonSistemasEcuaciones

## Descripción 📄
Librería Python con implementaciones de métodos numéricos para resolver sistemas de ecuaciones lineales de la forma **Ax = b**. Incluye tanto métodos directos como iterativos con diferentes características de rendimiento y precisión.

## Instalación ⚙️
```bash
pip install numpy
```

## Métodos Implementados 🛠️
🔹 Métodos Directos
1. Gauss-Jordan
`gauss_jordan(A, b, tol=1e-12)`
    Características: Implementación con pivoteo parcial

    Ventajas: Proporciona directamente la matriz identidad

    Complejidad: O(n³)

2. Eliminación Gaussiana
`gaussian_elimination(A, b)`
    Características: Versión clásica con pivoteo parcial

    Ventajas: Más eficiente que Gauss-Jordan para sistemas simples


3. Regla de Cramer
`cramer(A, b)`
    Características: Solución mediante determinantes

    Limitaciones: Costo computacional alto (O(n!)) para n > 3


4. Descomposición LU
`lu_decomposition(A, b, tol=1e-12)`

    Características: Implementación con pivoteo parcial

    Ventajas: Ideal para múltiples sistemas con misma matriz



🔹 Métodos Iterativos
1. Jacobi
`jacobi(A, b, tol=1e-10, max_iter=1000)`

    Características: Método iterativo simple

    Convergencia: Condicional (depende de la matriz)


2. Gauss-Seidel
`guass_seidel(A, b, tol=1e-10, max_iter=1000)`

    Características: Variante más rápida de Jacobi

    Ventajas: Convergencia más rápida que Jacobi


## Ejemplo de Uso 🚀

```
import numpy as np
from soluciones import gauss_jordan, lu_decomposition

# Sistema de ejemplo
A = np.array([[4, 3], [6, 3]])
b = np.array([10, 12])

# Resolver con Gauss-Jordan
x_gj = gauss_jordan(A.copy(), b.copy())

# Resolver con LU
x_lu = lu_decomposition(A.copy(), b.copy())
```

## Pruebas 🧪

El archivo test.py contiene pruebas unitarias para validar todos los métodos:

`python test.py`

### Recomendaciones de Uso 💡

| Escenario                         | Metodo recomendado         |
| :---                              |    :----:                  |
| Sistemas pequeños (n < 100)       | LU o Gauss-Jordan          |
| Matrices dispersas grandes        | Jacobi/Gauss-Seidel        |
| Múltiples sistemas misma matriz   | Descomposición LU          |
| Máxima precisión                  | Gauss-Jordan con pivoteo   |


	
 	
	
