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.0.tar.gz (5.9 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.0-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for campo_estatico_mdf_maria-0.1.0.tar.gz
Algorithm Hash digest
SHA256 ebdb94ac09c754d132ecc871bd782c47b5e4516221116e7b5865ac33d87a771a
MD5 97f82c77d43b2bf850ccbc258b92b3f0
BLAKE2b-256 98454ce5e20c62fc1f4f7ba2f3788628200f669e55bcd1342a57cf856c368ada

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for campo_estatico_mdf_maria-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3d7010d482369a89d38292f9d832fb0da65e6c7281f39acd308bebe0445dd70a
MD5 1d27f23d8628a7e62626a6fd84bdfcac
BLAKE2b-256 8292daa694bb5c2254e917686fbd5e3cf1e76925a8dee968e1c1f8c2512a74a9

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