5.3. MONTE-CARLO YÖNTEMİ Monte-Carlo yöntemi, adındanda anlaşılacağı gibi bu ismi kumarhaneler şehri Monte-Carlo dan almaktadır. Burada bir yönteme göre rasgele sayılar elde edilerek (bir tür kumar oynayarak) bu rasgele sayıların integral işlemlerinde kullanımı gösterilecektir. Bilgisayar, rasgele sayıları hızlı bir şekilde üretebilir. Monte-Carlo yöntemi, bilim ve mühendislik dallarında analitik olarak çözümü zor olan problemlerde kullanılabilir. Ard arda olabilecek her olay (bu bir deneyde olabilir) için bir rasgelelik varsa, bu olay/deney yada incelenen bir sistem bu olasıklardan yararlanarak tanımlanabilir. Örnek olarak bir eğrinin altında kalan alan (eğrinin fonksiyonunun integrali) Monte-Carlo yöntemine göre hesaplanabilir. y f(x) D C M O A a B b x Şekil 5.6. Monte-Carlo yöntemine göre integral hesabı. Şekil 5.6 dan görüleceği gibi ABCD dörtgeninin (yatay) kenarının Ò+ß ,Ó ve yüksekliğinin de Q olduğunu gözönünde bulunduralım. Bu durumda dörtgenin alanı Q Ð, +Ñ şeklinde olacaktır. Şimdi böyle bir dörtgene rasgele oklar attığımızı düşünelim yani rasgele sayılar üretelim. Bu oklardan taralı bölgeye isabet eden oklar sayılarak toplam ok sayısına bölünür. Bu orandan yaralanarak Monte-Carlo yöntemine göre integral hesabı yapılabilir. İntegral hesabı için burada iki tane rasgele sayının üretilmesi gerekmektedir. Bu tasgele sayılardan birisi Ò+ß ,Ó aralığındaki B için, diğeri ise SQ aralığındaki C değeri için olacaktır. C sayısının SQ aralığında olup olmadığı, 0 ÐBÑ fonksiyonundan elde edilen sayı ile karşılaştırılarak anlaşılır. Rasgele sayı taralı bölgeye isabet eden bir sayı ise bunu integral işleminde kullanırız. Eğer C 0 ÐBÑ değeri negatif veya sıfır ise rasgele sayı taralı bölgeye isabet etmiştir demektir. Bu şekilde binlerce rasgele sayı üretilerek ÐBß CÑ ikilileri elde edilerek integral için değerler elde etmiş olur. Bu yöntemle ilgili olan algoritma ve akış diyagramı (Şekil 5.7) aşağıda verilmektedir. Bu yöntemde şu şekilde bir yaklaşım yapılmıştır: M œ 0 ÐBÑ.B œ lim 2 0 ÐB3 Ñ , 8 M2 œ 8p∞ Ð,+Ñ 0 ÐB3 Ñ R 3œ" + 8 3œ" (5.9) Bir fonksiyonun integralini Monte-Carlo yöntemine göre alırken, (1) İki tane rasgele sayı B ve C için üretilir (+ Ÿ B Ÿ , ve ! Ÿ C Ÿ Q ), (2) T+ œ Taralı bölgeye düşen rasgele sayı adedi Toplam üretilen sayı adedi oranını hesaplanır, (3) Sonuç hesaplanır. Monte-Carlo yöntemini kullanırken bir sayının tekrar türetilmemesine dikkat edilmelidir. Yani sayı üreteci çok iyi çalışmalıdır. Şekil 5.7 de Monte-Carlo yönteminin akış diyagramı verilmektedir. Akış diyagramındaki j/i oranı taralı alana düşen sayı oranını vermektedir. Aşağıdaki örnekte Monte-Carlo yöntemine göre sayısal integral alan bir FORTRAN programı verilmektedir. Örnek 5.4. 0 ÐBÑ œ B‡B fonksiyonunun integralini Ò!ß #Ó aralığında Monte Carlo yöntemine göre hesaplayan bir FORTRAN programı yazınız. c Bu program Monte-Carlo (rasgele sayı) yontemine gore c integral hesabi yapar, c a ve b integralin sinir degerleri real m c satir fonksiyonu tanimi f(x)=x*x c integralin alt siniri a=0. c integralin ust siniri b=2. c rasgele sayi uretim adedi n=30000 c dusey olarak f(x) in alabilecegi maksimum deger m=f(b) c rasgele sayi uretimi 10 call RANDOM(x) c x skala x=x*b call RANDOM(y) c y skala y=y*m c rasgele sayi 0<=y<=f(b) araliginda ise j sayaci 1 artar if(y.lt.f(x))j=j+1 c toplam uretilen sayi miktari i=i+1 if(i.lt.n)goto 10 c integral sonucu a=m*(b-a)*float(j)/float(i) write(*,*)'Integral : ', a end Integral : 2.645 Yukarıda elde edilen sonuç analitilk olarak B$ $ œ ) $ œ #Þ''( değeri ile karşılaştırılabilir. Yukarıdaki Fortran programındaki rasgele sayı üreteci RANDOM(x) ile üretilen değerlere dikkat edilmesi gerekmektedir.