Download as pdf
Download as pdf
You are on page 1of 4

Πανεπιστήμιο Κρήτης – Τμήμα Φυσικής

Ονοματεπώνυμο: Ζαχαριουδάκης Νίκος


Αριθμός Μητρώου: 2980
Ημερομηνία παράδοσης αναφοράς: 08.12.2005

Εργαστηριακή Αναφορά

Μαθηματικό μοντέλο μελέτης σε PC:

Αριθμητική μέθοδος: Monte Carlo

Ηλεκτρονικοί Υπολογιστές ΙΙ 1
Πανεπιστήμιο Κρήτης – Τμήμα Φυσικής

Πρόβλημα:
y

ρ
* * * * * * *
* *
* * *
* * * * * * *
*
* * * * * * *
yi * *
* * * * **
* *
* * * * * * *
*r
i * * * * * *
* * *
* * * *** x
xi ρ
* ⇒ τυχαίο σημείο (xi , y i )

Γεννήτρια παραγωγής τυχαίων αριθμών (Monte Carlo), δημιουργεί συνολικά


N τυχαία σημεία ( xi , y i ) , i = 1, N στο παραπάνω τετράγωνο πλευράς ρ = 1 .
Αν N c , ο αριθμός των τυχαίων σημείων που βρίσκονται στο τεταρτοκύκλιο
4
 
ακτίνας ρ ( ri ≤ ρ με=
ri xi 2 + yi 2 ):

Σε προγραμματιστικό περιβάλλον Η/Υ:


i. Σχεδιάστε το ιστόγραμμα 100 συνολικά προσεγγίσεων του π . Τι
συμπεραίνετε;

Ανάλυση προβλήματος:

Θεωρούμε, ότι, η γεννήτρια Monte Carlo δημιουργεί ομοιόμορφα


κατανεμημένα σημεία (xi , y i ) , i = 1, N . Συνεπώς μπορούμε να ισχυριστούμε
τα παρακάτω:

N c ~ Ec 
N c πρ
2
4 4 N c Ec Nc
 4

4
~ 4
⇔ 4
~ 2 ⇔π ~4 4
N E N ρ N
N~E 

Επίλυση προβλήματος σε προγραμματιστικό περιβάλλον Η/Υ:


Θα αναπτύξουμε κώδικα σε προγραμματιστική γλώσσα Fortran, ο οποίος
θα κάνει χρήση της γεννήτριας τυχαίων αριθμών Monte Carlo. Έτσι,
κάνοντας compilation του εν λόγω κώδικα και εκτελώντας εν συνεχεία το

Ηλεκτρονικοί Υπολογιστές ΙΙ 2
Πανεπιστήμιο Κρήτης – Τμήμα Φυσικής

πρόγραμμα, το τελευταίο θα είναι σε θέση:

 Να εξάγει υπό την μορφή του αρχείου «expdata.out» ένα σύνολο 100
προσεγγίσεων του π , ώστε να κατασκευαστεί στο Gnuplot το αντίστοιχο
ιστόγραμμα.

Κώδικας Fortran

c234567
program ergastiriaki_anafora_9
implicit none
real x,y,a,r,pi
integer N,Nk,i,j,k,M,D(200:400)
parameter (M=100)
print*, ""
print*, "Doste to p."
read*, a
print*, ""
print*, "Doste to N."
read*, N
print*, ""
write(*,1) "N(circle/4)","pi"
1 format (2x,A,8x,A)
print*, ""
do i=200,400
D(i)=0
enddo
do i=1,M
Nk=0
do j=1,N
x=rand()
y=rand()
r=sqrt(x**2+y**2)
if (r.le.a) then
Nk=Nk+1
endif
enddo
pi=4*real(Nk)/real(N)
write(*,2) Nk, pi
2 format (5x,I4,9x,F8.6)
k=Nint(pi*100.)
D(k)=D(k)+1
enddo
print*, ""
open (unit=3,file="expdata.out")
do k=200,400
write(3,*) k/100.,D(k)
enddo
end
Ηλεκτρονικοί Υπολογιστές ΙΙ 3
Πανεπιστήμιο Κρήτης – Τμήμα Φυσικής

Ερώτημα i

Παρατηρούμε, ότι, το ιστόγραμμα σχηματίζει την γνωστή καμπύλη της κανονικής


κατανομής ή κατανομής Gauss. Αυτό αποδεικνύει την θεώρηση που κάναμε σχετικά
με την κατανομή των σημείων (xi , y i ) , i = 1, N που δημιούργησε η γεννήτρια Monte
Carlo. Πράγματι, τα σημεία κατανέμονται ομοιόμορφα. Συνεπώς, δεδομένου ότι σε
μια καμπύλη Gauss, η μέση τιμή xi είναι το ολικό μέγιστο του διαγράμματος,
μπορούμε να προσδιορίσουμε με την καλύτερη δυνατή προσέγγιση το π .

Ηλεκτρονικοί Υπολογιστές ΙΙ 4

You might also like