Sunteți pe pagina 1din 10

Solucion de Edps usando numeros aleatorios - Examen Final

Bryan Motta Zorrilla - Cod 082924H


21-07-2016
Resumen
Se emplear
an 2 metodos numericos para la resoluci
on de una ecuaci
on diferencial parcial por n
umeros
aleat
orios se presentar
an las codificaci
ones en fortran y un ejemplo que se resolver
an por ambos metodos

1.

Programacion en fortran 1
El primer programa se implemento para la resolucion de una EPDs parabolica en el metodo de LaPlace

Program Laplace
! declaracion de variables
real (8) P1 , P2 , P3 , P4 , P12 , P123
real (8) Ncont ,r , T1 , T2 , T3 , T4
Integer Nsamp ,i , j
Real (8) Temp (1000 ,1000) , Cuent (1000 ,1000)
open (1 , FILE = salida . dat )
Write (* ,*) = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Write (* ,*) Solucion de Edps parabolicos con el metodo

Write (* ,*)
de LaPlace

Write (* ,*) = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
! calculo de los valores iniciales
m1 =31
n1 =31
P1 =0.25
P2 =0.25
P3 =0.25
P4 =0.25
P12 = P1 + P2
P123 = P1 + P2 + P3
Nsamp =1000
! Condiciones Iniciales
T1 =100 ! T (0 , Y )=100
T2 =0 ! T (X ,0)=0
T3 =100 ! T ( m1 , Y )=0
T4 =0 ! T (X , n1 )=100
Do m =2 , m1 -1
Do n =2 , n1 -1
Ncont =0
Cuent (m , n )=0
10
i=m
j=n
66 Call RANDOM_NUMBER ( r )
If ( r . LE . P1 ) then
i = i +1
Goto 110
Else If ( r . LE . P12 ) then
j = j +1
1

Goto 110
Else If ( r . LE . P123 ) then
i =i -1
Goto 110
Else
j =j -1
Goto 110
End If
If ( j . EQ .1) then
Cuent (m , n )= Cuent (m , n )+ T2
Goto 88
Else If ( i . EQ . m1 ) then
Cuent (m , n )= Cuent (m , n )+ T3
Goto 88
Else If ( j . EQ . n1 ) then
Cuent (m , n )= Cuent (m , n )+ T4
Goto 88
Else If ( i . EQ .1) then
Cuent (m , n )= Cuent (m , n )+ T1
Goto 88
Else
Goto 66
End If
Ncont = Ncont +1
if ( Ncont . LE . Nsamp ) then
goto 10
Else
goto 50
end if

110

88

50

Xcuent = Ncont
Temp (m , n )= Cuent (m , n )/ Xcuent
End Do

End Do
Do I =1 ,31
Do J =1 ,31
Temp (i ,1)=0.0
Temp (i ,31)=0.0
Temp (1 , j )=100
Temp (31 , j )=100
End Do
End do
Do i =1 ,31
Write (* ,100) ( Temp (i , j ) , j =1 ,31)
Write (1 ,100) ( Temp (i , j ) , j =1 ,31)
End Do
Close (1)
100
Format (1 X ,100( F8 .2 ,1 X ))
End Program

2.

Programacion en fortran 2
El segundo programa se implemento para la resolucion de una EPDs parabolica en el metodo de MonteCarlo

Program Final
! declaracion de variables
real (8) P1 , P2 , P3 , P4 , P12 , P123
real (8) Xsamp ,r , T1 , T2 , T3 , T4
Integer Nsam , ktotal , m1 , n1 ,i ,j , kk ,n , m
Real (8) Temp (1000 ,1000) , C_Inic (1000 ,1000) , Cuent (1000 ,1000)
open (1 , FILE = salida . dat )
Write (* ,*) = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Write (* ,*) Examen Final - Metodos Computacionales 2

Write (* ,*) = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
! calculo de los valores iniciales
m1 =31
n1 =31
P1 =0.25
P2 =0.25
P3 =0.25
P4 =0.25
P12 = P1 + P2
P123 = P1 + P2 + P3
Nsam =1000
! Condiciones Iniciales
T1 =100 ! T (0 , Y )=100
T2 =0 ! T (X ,0)=0
T3 =100 ! T ( m1 , Y )=0
T4 =0 ! T (X , n1 )=100
Do i =2 ,30
Do j =2 ,30
C_Inic (i , j )=0
End Do
End Do
Xsamp = Nsam
Ktotal =10
Call RANDOM_SEED ()
Do m =2 ,30
Do n =2 ,30
Cuent (m , n )=0
do n_cuent =1 , Nsam
i=m
j=n
do kk =1 , Ktotal
66

Call RANDOM_NUMBER ( r )
If ( r . LE . P1 ) then
i = i +1
Goto 110
Else If ( r . LE . P12 ) then
j = j +1
Goto 110
Else If ( r . LE . P123 ) then
i =i -1
Goto 110
Else
j =j -1

Goto 110
End If
If ( j . EQ .1) then
Cuent (m , n )= Cuent (m , n )+ T2
Goto 88
Else If ( i . EQ . m1 ) then
Cuent (m , n )= Cuent (m , n )+ T3
Goto 88
Else If ( j . EQ . n1 ) then
Cuent (m , n )= Cuent (m , n )+ T4
Goto 88
Else If ( i . EQ .1) then
Cuent (m , n )= Cuent (m , n )+ T1
Goto 88
Else
Goto 66
End If
Temp (m , n )= Cuent (m , n )/ Xsamp
goto 77

110

88

End Do
Cuent (m , n )= Cuent (m , n )+ C_inic (i , j )
Temp (m , n )= Cuent (m , n )/ Xsamp

77
End Do
End Do
End Do
Do I =1 ,31
Do J =1 ,31
Temp (i ,1)=0.0
Temp (i ,31)=0.0
Temp (1 , j )=100
Temp (31 , j )=100
End Do
End do

Do i =31 ,1 , -1
Write (* ,100) ( Temp (i , j ) , j =1 ,31)
Write (1 ,100) ( Temp (i , j ) , j =1 ,31)
End Do
Close (1)
100
Format (1 X ,100( F8 .2 ,1 X ))
End Program

3.

Problema Planteado y Soluci


on.

Determinar la distribuci
on de calor en regimen permanente de una placa delgada de metal en forma cuadrada.
Dos fronteras se mantienen a 0 C, mientras que el calentamiento en las otras fronteras es de 100 C, como se
observa en la malla.
Figura 1: Malla de temperatura

2 (x, y) 2 (x, y)
+
=0
x2
y 2

al ingresar los datos en el programa nos queda dos salidas llamadas Datos 1 y Datos 2
Mediante la salida de datos por Archivo y un graficador obtenemos la imagen de la transmision de calor

4.

Conclusiones

Al revisar minuciosamente ambas salidas de datos, podemos ver que el metodo generado por el segundo
programa es m
as rspido y tiene soluciones mss exactas del rangos de las decimas, esto debido a la repetici
on del
algoritmo en la secci
on de la validaci
on de los kk

Figura 2: Salida de datos para Laplace

Figura 3: salida de datos de Laplace - Vista cuadrada

Figura 4: Salida de datos para MC

Figura 5: salida de datos para MC - Vista cuadrada

Figura 6: Comparacion de Datos 1 y Datos 2

10

S-ar putea să vă placă și