Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porNohemi Remigio Modificado hace 10 años
1
Lab.3: Solución de sistema de ec. lineales con Montecarlo / Metropolis Algoritmos Paralelos Glen Rodríguez
2
Aplicaciones Redes eléctricas Redes de tránsito Cadenas de Markov Solución de algunos tipos de ecuaciones diferenciales parciales
3
Problema Obtener vector x (tamaño n x 1) que cumple: Ax=b. Donde b es un vector conocido del mismo tamaño de x, y A es una matriz de tamaño n x n que cumple: A es NO SINGULAR Se puede escoger una matriz M no singular tal que MA=I-L, y que |λ(L)| < 1 para todos los eigenvalues λ de L (no singular también)
4
Algoritmo λ es un número real llamado eigenvalue si hay solución de Lu= λu El problema se puede ver como: x=Lx + Mb = Lx + f Si M=I, se puede demostrar que la sumatoria ΣL i converge a A -1 si i ∞ En los ‘50s se demostró que un “random walk” puede aproximar esta sumatoria.
5
Algoritmo x 0 =0; x m =b+Lx m-1 donde x m =m-esima aproximación a x
6
l ij
8
Pseudocódigo 1. Calcular p ij, v ij. Se puede asumir que p i =constante (ej.:0.01). Entonces se puede hacer p ij iguales en una fila i =(1-p i )/numero de p ij ≠0 en fila i=t i ; vij=l ij /t i. O se puede hacer p ij = (1-p i )* | l ij | /Σ |l ij | en fila i; v ij = Σ |p ij | en fila i / (1-p i ) 2. For elem=1 to n 3. x_sum=0; 4. for k=1 to m 5. v_prd=1;; ult=entero entre 1 y n tal que l ult,elem ≠0; x_est=b ult /p ult 6. Escoger r= real aleatorio unif. entre 0 y 1 7. While r<=1-p ult 8. Asociar r a un valor “escog” usando las p ult,j 9. v_prd= v_prd* v ult,escog
9
Pseudocódigo 9. x_est=v_prd*b escog /p escog 10. ult=escog 11. end while 12. x_sum= x_sum+x_est; 13. end for 14. x[elem]= x_sum/m; 15. end for Que se puede paralelizar: cualquiera de los for. Mejoras: una vez conocido x[1],…x[q], usar esos valores para x[q+1],…,x[n]
10
Redes eléctricas Sólo necesitamos 3 leyes: Ohm: ΔV=IR entre los extremos de un conductor de resistencia R 1ra de Kirchhoff: Σ I in = Σ I out en cada unión entre 2 o más conductores 2da de Kirchhoff: Σ ΔV = ΣFuentes en un loop ó lazo cerrado.
11
Ejemplo
12
Redes de tráfico Se usa solo la 1ra Kirchhoff.
13
Resolviendo Ec. de Poisson con Montecarlo Sea la ecuación de Poisson: Con fuente sinusoidal : -2π 2 sen(π x) sen(π y) Y cero en todas las fronteras En diferencias finitas:
14
Solución con “random walks” De un punto (i,j) comenzar el “random walk”.La probabilidad de moverse a cualquiera de los 4 puntos vecinos es ¼. Generar un número aleatorio para escoger el vecino. Añadir g(x,y) en la nueva posición Repetir hasta llegar a una frontera Esto fue solo UNA “random walk” Después de N “random walks” el estimado de u(i,j) es:
15
Paralelización de esta solución Hacer el siguiente proceso para todos los puntos Comenzar en una frontera De afuera hacia adentro Fila por fila Actualizar (intercambiar) data en el límite entre procesadores Actualizar el walk dentro de los puntos de un procesador Si el walk sale de un procesador, informarle al otro procesador
16
Metrópolis Se usa para integrales con funciones de peso. Genera un random walk pero guiado por una función de peso w(x). Ejemplo en 2-D comenzando de un punto (x i,y i ): 1. Escoger δ, el step size 2. Generar dos aleatorios R1, R2 uniformes en el rango [-1,1] 3. El nuevo punto será 1. x T i+1 = x i + δR1 2. y T i+1 = y i + δR2 4. Evaluar el ratio de w en el punto actual vs. el punto anterior 1. r= w(x T i+1,y T i+1 ) / w(x i,y i )
17
Metrópolis 5. Si r>1 aceptar el nuevo punto y regresar a (2) 1. x i+1 = x T i+1 ; y i+1 = y T i+1 6. Si r η (hacer lo mismo que en el paso 5) 7. Caso contrario, rechazar el nuevo punto y volver a (2) El step size no debe ser ni muy chico ni muy grande. Los puntos obtenidos se usan luego para integrar, como en MonteCarlo (Constante*n/N). La paralelización es similar a la discutida para las integrales con Montecarlo
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.