Solución de la ecuación de Laplace en 2D usando el Método de Diferencias Finitas
Project description
campo_estatico_mdf
Solución de la ecuación de Laplace en 2D usando el Método de Diferencias Finitas (MDF).
Descripción
Este paquete proporciona una implementación eficiente para resolver la ecuación de Laplace en dos dimensiones:
∂²V/∂x² + ∂²V/∂y² = 0
Es útil para calcular distribuciones de potencial electroestático en regiones 2D con condiciones de contorno fijas.
Instalación
pip install campo_estatico_mdf
Uso Básico
from campo_estatico_mdf import LaplaceSolver2D
# Crear el solver con una malla de 50x50 puntos
solver = LaplaceSolver2D(n=50, tolerancia=1e-4)
# Establecer condiciones de contorno (voltajes en los bordes)
solver.establecer_condiciones_contorno(
izquierda=0.0,
derecha=10.0,
superior=0.0,
inferior=0.0
)
# Resolver usando el método de Gauss-Seidel
iteraciones = solver.resolver_gauss_seidel()
# Obtener el potencial
potencial = solver.obtener_potencial()
# Calcular el campo eléctrico
e_x, e_y = solver.calcular_campo_e()
print(f"Convergió en {iteraciones} iteraciones")
Características
- Dos métodos iterativos: Jacobi y Gauss-Seidel
- Criterio de convergencia automático: Se detiene cuando se alcanza la tolerancia
- Cálculo del campo eléctrico: Obtiene E = -∇V automáticamente
- Eficiente: Usa NumPy para operaciones matriciales optimizadas
Métodos Disponibles
LaplaceSolver2D
__init__(n, tolerancia=1e-4)
Inicializa el solver con una malla de N×N puntos.
establecer_condiciones_contorno(izquierda, derecha, superior, inferior)
Define los voltajes en los cuatro bordes de la región.
resolver_jacobi(max_iteraciones=10000)
Resuelve usando el método de Jacobi. Retorna el número de iteraciones.
resolver_gauss_seidel(max_iteraciones=10000)
Resuelve usando el método de Gauss-Seidel (más rápido). Retorna el número de iteraciones.
calcular_campo_e()
Calcula el campo eléctrico E = -∇V. Retorna las componentes (E_x, E_y).
obtener_potencial()
Retorna la matriz de potencial V(x,y).
obtener_iteraciones()
Retorna el número de iteraciones realizadas.
Ejemplo Avanzado
import matplotlib.pyplot as plt
from campo_estatico_mdf import LaplaceSolver2D
# Configuración
solver = LaplaceSolver2D(n=100, tolerancia=1e-5)
solver.establecer_condiciones_contorno(
izquierda=0.0,
derecha=100.0,
superior=50.0,
inferior=50.0
)
# Resolver
iteraciones = solver.resolver_gauss_seidel()
print(f"Convergió en {iteraciones} iteraciones")
# Visualizar potencial
v = solver.obtener_potencial()
plt.figure(figsize=(10, 8))
plt.imshow(v, cmap='viridis', origin='lower')
plt.colorbar(label='Potencial (V)')
plt.title('Distribución de Potencial Eléctrico')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
# Visualizar campo eléctrico
e_x, e_y = solver.calcular_campo_e()
x = np.arange(0, solver.n)
y = np.arange(0, solver.n)
X, Y = np.meshgrid(x, y)
plt.figure(figsize=(10, 8))
plt.quiver(X[::5, ::5], Y[::5, ::5],
e_x[::5, ::5], e_y[::5, ::5])
plt.title('Campo Eléctrico')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
Requisitos
- Python >= 3.8
- NumPy >= 1.20.0
- SciPy >= 1.7.0
Licencia
MIT License
Autor
Maria Moreno - maamorenor@udistrital.edu.co Sebastian Sanche - zolarpunk@gmail.com
Contribuciones
Las contribuciones son bienvenidas. Por favor, abre un issue o pull request en GitHub.
Documentación
Para documentación completa, visita: https://almarm-r.github.io/campo_estatico_mdf
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file campo_estatico_mdf_maria-0.1.0.tar.gz.
File metadata
- Download URL: campo_estatico_mdf_maria-0.1.0.tar.gz
- Upload date:
- Size: 5.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ebdb94ac09c754d132ecc871bd782c47b5e4516221116e7b5865ac33d87a771a
|
|
| MD5 |
97f82c77d43b2bf850ccbc258b92b3f0
|
|
| BLAKE2b-256 |
98454ce5e20c62fc1f4f7ba2f3788628200f669e55bcd1342a57cf856c368ada
|
File details
Details for the file campo_estatico_mdf_maria-0.1.0-py3-none-any.whl.
File metadata
- Download URL: campo_estatico_mdf_maria-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d7010d482369a89d38292f9d832fb0da65e6c7281f39acd308bebe0445dd70a
|
|
| MD5 |
1d27f23d8628a7e62626a6fd84bdfcac
|
|
| BLAKE2b-256 |
8292daa694bb5c2254e917686fbd5e3cf1e76925a8dee968e1c1f8c2512a74a9
|