Advertisement
mechanica

monte carlo

Mar 8th, 2015
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. %Monte Carlo Metodu ile Laplace Denkleminin Çözümü
  2. % T = sıcaklık matrisi, i: satır nod indisi, j: sütun nod indisi
  3. %Program iki aşamadan oluşuyor. İlk aşama tüm i, j noktalarını tararken
  4. %ikinci aşama bu taranan noktalara Monte Carlo Yöntemi ile elde edilen
  5. %Sıcaklık değerini atıyor
  6. imax = 10;
  7. jmax = 70; %iki düzlemdeki maksimum nod sayıları
  8.  
  9. T = zeros(imax, jmax);
  10.  
  11. Ts1 = 20; %birinci sınır şartı, j = 1 yüzeyi
  12. Ts2 = 70; %ikinci sınır şartı, j = jmax yüzeyi
  13.  
  14. T(:,1) = Ts1 ;
  15. T(:, jmax) = Ts2 ; %Matrise sınır yüzey sıcaklıkları atanması
  16.  
  17.  
  18. i = 1;
  19. j = 1;
  20.  
  21.  
  22.  
  23. while i <= imax && j <= jmax; %Son nodda işlem sonlanacak
  24. if j == 1
  25. j = j+1; %İlk sütun sınır şartı olduğundan işlem yapılmıyor
  26. elseif j < jmax
  27.  
  28. %Random yürüme işlemi buradan başlıyor
  29. lmax = imax;
  30. gmax = jmax;
  31. p = zeros(lmax,gmax); %rastgele yürüme matrisi
  32.  
  33. l = i;
  34. g = j; %l satır nodu, g sütun nodu
  35. S = 0;
  36. while g ~= 1 || g ~= gmax; %g=1 ve g=gmax sınır şartları bu değerlere
  37. %ulaştığı zaman döngü durup ilgili nodun sıcaklığı kaydedilecek
  38. r = rand(1);
  39. if r<= 0.25
  40. g = g+1;
  41. elseif r<=0.5
  42. if l == 1
  43. l = l+0;
  44. else
  45. l = l+1;
  46. end
  47. elseif r<=0.75
  48. g = g-1;
  49. else
  50. if l == lmax
  51. l = l-0;
  52. else
  53. l = l-1;
  54. end
  55. end
  56. end
  57.  
  58. if g==1 %Sınır yüzeyine ulaşıldı, sıcaklığı kaydet.
  59. S = S+Ts1;
  60. elseif g== gmax
  61. S = S+Ts2;
  62. end
  63.  
  64.  
  65.  
  66. j = j+1;
  67. elseif j == jmax; %Son sütun sınır şartı olduğundan işlem yapılmıyor
  68. i = i+1;
  69. j = 1;
  70. end
  71. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement