EDP y diferencias finitas
Qué es una EDP
Sección titulada «Qué es una EDP»Una ecuación diferencial parcial (EDP) relaciona una función de varias variables, por ejemplo u(x, y) o u(x, t), con sus derivadas parciales. Modela calor, difusión, fluidos, ondas y potenciales gravitacionales o eléctricos (lámina 2).
Los tres tipos (láminas 5–6)
Sección titulada «Los tres tipos (láminas 5–6)»Cómo leerlo: la diferencia que importa en paralelo es si aparece el tiempo. Las elípticas no lo tienen: se itera hasta que la solución converge. Las parabólicas e hiperbólicas avanzan paso a paso en el tiempo, y ese avance no se puede paralelizar (lámina 31): solo se reparte el espacio.
De la derivada a la resta: diferencias finitas (láminas 4, 7–8)
Sección titulada «De la derivada a la resta: diferencias finitas (láminas 4, 7–8)»Idea: la derivada es una pendiente. En una malla con separación h, la aproximas restando valores vecinos.
| Derivada | Aproximación | Error |
|---|---|---|
| Primera (hacia adelante) | (ui+1 − ui) / h | O(h) |
| Primera (centrada) | (ui+1 − ui−1) / 2h | O(h²) |
| Segunda (centrada) | (ui+1 − 2ui + ui−1) / h² | O(h²) |
Salen de la serie de Taylor: si sumas u(x₀+h) y u(x₀−h), los términos de orden impar se cancelan y queda u(x₀+h) + u(x₀−h) = 2u(x₀) + h²·u″(x₀) + O(h⁴). Al despejar u″ sale la fórmula de la segunda derivada.
Laplace 2D paso a paso (láminas 7–16)
Sección titulada «Laplace 2D paso a paso (láminas 7–16)»Ecuación de Laplace (equilibrio de temperatura): ∂²u/∂x² + ∂²u/∂y² = 0.
-
Sustituir cada segunda derivada por su diferencia finita (con Δx = Δy = h):
(ui+1,j − 2ui,j + ui−1,j)/h² + (ui,j+1 − 2ui,j + ui,j−1)/h² = 0
-
Multiplicar por h² y juntar términos:
ui+1,j + ui−1,j + ui,j+1 + ui,j−1 − 4ui,j = 0
-
Despejar ui,j: ui,j = ¼ · (suma de los 4 vecinos).
-
Frontera: si un vecino está en el borde, su valor es conocido y pasa al lado derecho (lámina 15): −4u2,4 + u3,4 + u2,3 + u2,5 = −u1,4.
Una ecuación por punto interior: con N×N puntos hay N² ecuaciones con N² incógnitas (en 3D con 1000³ puntos, 10⁹ ecuaciones, lámina 24). Nadie resuelve eso por eliminación gaussiana: se itera.
Cómo leerlo: el punto naranja se recalcula con los 4 celestes. Este patrón fijo de vecinos se llama stencil de 5 puntos. Como cada punto solo depende de vecinos cercanos, el problema se reparte bien: un proceso solo necesita los puntos de sus bordes que tienen otros procesos.
Poisson: Laplace con fuente (láminas 23–25)
Sección titulada «Poisson: Laplace con fuente (láminas 23–25)»∇²u = S(x, y). La fuente S es la masa, la carga o una fuente de calor. Con el mismo procedimiento:
uk+1i,j = ¼ · ( uki+1,j + uki−1,j + uki,j+1 + uki,j−1 − h²·Si,j )
Tipos de frontera: Dirichlet fija el valor (u = f en el borde). Neumann fija la derivada normal (∂u/∂n = g, por ejemplo “no sale calor”).
Jacobi vs Gauss-Seidel (láminas 25–26)
Sección titulada «Jacobi vs Gauss-Seidel (láminas 25–26)»| Jacobi | Gauss-Seidel | |
|---|---|---|
| Qué vecinos usa | todos de la iteración anterior (u_old) | los ya actualizados en esta iteración |
| Memoria | dos arreglos (u y u_old) | uno solo |
| Iteraciones para converger | más | menos (≈ la mitad) |
| Paralelismo | todos los puntos a la vez | el punto i espera al i−1: secuencial. Hay que reordenar (rojo-negro, conocimiento general) |
Criterio de parada: diff = max |uk+1 − uk| < ε. En paralelo, cada proceso calcula su máximo local y luego se hace un MPI_Allreduce con MPI_MAX.
Complejidad: T(N) = k · m · N² (lámina 26)
Sección titulada «Complejidad: T(N) = k · m · N² (lámina 26)»- N: puntos por dimensión (N² en total en 2D).
- m: operaciones por punto (≈ 5 en el stencil: 3 sumas, 1 multiplicación y la diferencia del error).
- k: número de iteraciones hasta converger.
La trampa es que k no es constante: crece con N. Medido con laplace_sec.cpp (Laplace 1D, tolerancia 10⁻⁶):
| N | Iteraciones de Jacobi hasta converger |
|---|---|
| 50 | 6 066 |
| 100 | 21 980 |
| 200 | 77 614 |
Al duplicar N las iteraciones se multiplican por ≈ 3.6. Es decir, k crece casi como N². El motivo: el valor de la frontera avanza un punto por iteración, y además cada recorrido solo reduce un poco el error.
Práctica
Sección titulada «Práctica»1. Discretiza la ecuación del calor 1D ∂u/∂t = D·∂²u/∂x² con diferencia hacia adelante en el tiempo (paso Δt) y centrada en el espacio (paso h). Escribe uin+1.
Ver solución
Izquierda: (uin+1 − uin)/Δt. Derecha: D·(ui+1n − 2uin + ui−1n)/h².
Despejando: uin+1 = uin + (D·Δt/h²)·(ui+1n − 2uin + ui−1n).
Es el mismo stencil de 3 puntos, así que se paraleliza igual que Laplace 1D: 1 valor de halo por lado y por paso. Conocimiento general: este esquema explícito solo es estable si D·Δt/h² ≤ ½.
2. Una malla 3D de 512³ puntos, m = 8 operaciones por punto y k = 2000 iteraciones. ¿Cuántas operaciones hace Jacobi? Si la máquina hace 10 GFLOP/s, ¿cuánto tarda?
Ver solución
T = k·m·N³ (en 3D hay N³ puntos) = 2000 · 8 · 512³ = 2000 · 8 · 134 217 728 ≈ 2.15·10¹² operaciones.
A 10·10⁹ op/s: 2.15·10¹² / 10¹⁰ ≈ 215 s. Por eso estos problemas se reparten entre muchos procesos.
Autoevaluación
0/6 correctas · 0 respondidasFuente ·U5.1 Algoritmos-EDP.pdf (láminas 2–31) · U5.1 Algoritmos-EDP-code/laplace_sec.cpp