Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

campo_estatico_mdf_maria-0.1.1.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

campo_estatico_mdf_maria-0.1.1-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file campo_estatico_mdf_maria-0.1.1.tar.gz.

File metadata

File hashes

Hashes for campo_estatico_mdf_maria-0.1.1.tar.gz
Algorithm Hash digest
SHA256 92eaf404666b30324fc6dcb375d3149eb825ea784b6322627ca45c3fd7f90078
MD5 cd059f5b0c5baace743be43ab2e6355e
BLAKE2b-256 46fcd3a695662a1051396a0ae0a37407ecb3d942a86eb9007b019993294e45bf

See more details on using hashes here.

File details

Details for the file campo_estatico_mdf_maria-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for campo_estatico_mdf_maria-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e9ebfcaf8598d3712bcc3c4d9b35448eddecbaa53dbf70617fb4a6d85a17761e
MD5 5569f7df8130855ebc89c9701ae2be33
BLAKE2b-256 6600c4c06e0037dbc9d6794a80261f19613284b369a91b666075e9f59c75f413

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page