Ana Sayfa Matlab MATLAB ile Histogram Kullanımı ve Olasılık Hesaplama

MATLAB ile Histogram Kullanımı ve Olasılık Hesaplama

9 min read
2
10
8,877

Bu yazımızda Matlab programını kullanarak histogram fonksiyonunun kullanımını, rand fonksiyonunun nasıl işe yaradığını ve çeşitli komutları göstermek istedim.

Öncelikle kodumuzda karşılaşacağımız bazı kavramları açıklamamda fayda var.

rand() : Bu fonksiyon bize rastgele sayı oluşturma olanağı sağlıyor. Mesela rand(1) yazarsak bize 0 ile 1 arasında bir sayı verecektir. Mesela zar atmak için round(1+5*rand(1,6)) yazarsak çıktı olarak 1 ile 6 arasında değerler alırız.

round() : Yukarıda round yazdım. Bu fonksiyonun görevi ise en yakın tam sayıya yuvarlamasıdır. Buna benzer olarak ceil() ve floor() fonksiyonları da var.

format rat : Bu komut bize çıktımız için ondalıklı sayı yerine kesirli sayı verir. Yani 0.25 yerine 1/4 diye gösterir. Olasılık gösterimlerinde kullanışlı oluyor.

histogram() :  Matlab programında bir grafik gösterme biçimidir. Yazının sonuna bir örneğini atarım.

factorial() : Bu fonksiyon bildiğimiz faktöriyeli hesaplıyor. factorial(5)=120 çıktısını veriyor.

Şimdi bir örnek üzerinden gidelim ve kodumuzu yazalım.

ÖRNEK

6 yüzlü düzgün iki zarı atıyoruz, bu zarlardan gelen değerlerin toplamı n oluyor. Daha sonra bir bozuk para peşpeşe n(2 zar atışımızdan gelen değer toplamı) kere atılıyor, bu n atıştan gelen toplam yazı sayısıda k olsun. Daha iyi bir sonuç alabilmek için bu işlem 10.000(daha az veya fazla da olabilir bu farketmez) kere tekrarlansın.

n ve k’nın histogramlarını çizdiren ve en az 5 tane yazı gelme olasılığını hesaplayan Matlab kodunu yazalım.

ÇÖZÜM

Öncelikle yazmış olduğum kodu buraya atıyorum ve açıklamalarını kodun altına yazmak istiyorum.

[php]

clc,clear all;
format rat
%%%Buğra Unutmaz 25.11.2017
for k=1:10000
x=round(1+5*rand(1,6));
y=round(1+5*rand(1,6));
n=x+y;
toplam=0;
toplam1=0;
toplam2=0;
toplam3=0;
toplam4=0;
toplam5=0;

for i=1:n(1)
bugra=round(rand(1));
if bugra==1
toplam=toplam+1;
end
end
for i=1:n(2)
bugra=round(rand(1));
if bugra==1
toplam1=toplam1+1;
end
end
for i=1:n(3)
bugra=round(rand(1));
if bugra==1
toplam2=toplam2+1;
end
end
for i=1:n(4)
bugra=round(rand(1));
if bugra==1
toplam3=toplam3+1;
end
end
for i=1:n(5)
bugra=round(rand(1));
if bugra==1
toplam4=toplam4+1;
end
end
for i=1:n(6)
bugra=round(rand(1));
if bugra==1
toplam5=toplam5+1;
end
end
end
if n(1)>= 5
olasilik1=factorial(n(1))/(factorial(n(1)-5)*factorial(5))/2^n(1);
else
olasilik1=0;
end
if n(2)>= 5
olasilik2=factorial(n(2))/(factorial(n(2)-5)*factorial(5))/2^n(2);
else
olasilik2=0;
end
if n(3)>= 5
olasilik3=factorial(n(3))/(factorial(n(3)-5)*factorial(5))/2^n(3);
else
olasilik3=0;
end
if n(4)>= 5
olasilik4=factorial(n(4))/(factorial(n(4)-5)*factorial(5))/2^n(4);
else
olasilik4=0;
end
if n(5)>= 5
olasilik5=factorial(n(5))/(factorial(n(5)-5)*factorial(5))/2^n(5);
else
olasilik5=0;
end
if n(6)>= 5
olasilik6=factorial(n(6))/(factorial(n(6)-5)*factorial(5))/2^n(6);
else
olasilik6=0;
end
disp(‘sirayla olasiliklar’)
olasilik=[olasilik1 olasilik2 olasilik3 olasilik4 olasilik5 olasilik6]

n;
k=[toplam toplam1 toplam2 toplam3 toplam4 toplam5];

histogram(k,’FaceColor’,’green’)
n;
hold on
histogram(n,’FaceColor’,’black’)

[/php]

Açıklamalar :

  • Soruya göre biraz uzun bir kod ama mantığını kavramak için uzun olması daha iyi.
  • Öncelikle en üstte klasik olarak clc, clear all ekledik. Daha sonra formatımızı seçtik. Formatımız istenirse farklı yerlere de koyulabilir ve ara işlemlerde farklı formatta sonuçlar alabiliriz.
  • 4. satırdaki for k=1:10000 ise bu işlemin 10 bin kere tekrarlanmasını sağlıyor. İsteğe göre farklı harf de kullanabilirsiniz. 5. ve 6. satırımızda ise 2 adet zar tanımlamış olduk ve bu zarlardan gelen toplamları n değişkenimize atadık. n değişkenimiz 1×6’lık bir matris oldu(çünkü x ve ye öyleler).
  • Hemen alt tarafında toplam değişkenleri tanımladık ki onların nedenini kodun ilerisinde söylerim.
  • Daha sonra bir for açtım ve her n değerimiz için ayrı ayrı yazı gelme sayılarının toplamlarını aldım. n 1×6’lık bir matris olduğu için n(1), n(2) gibi alabiliyoruz.
  • Olasılık hesabına geçince de dikkat etmemiz gereken olay şu. En az 5 gelme olasılığı isteniyor. Bu noktada n’imizin 5ten küçük olma durumu da var. Bunun için eğer n ‘ten küçükse olasılığımız 0 olmalı çünkü gerçekten de sıfırdır.
  • Normal olasılık formülümüzü yine her n değerimiz için uyguladık.
  • En son ise bizden istenen çıktılarımızı aldık. histogram fonksiyonunu kullanırken renk değişimi yaptık. Ben yeşil ve siyah birleşimi sevdiğim için green ve black yazdım. Ana renkler olduğu sürece istediğinizi yazabilirsiniz.
görsel temsilidir

Başka yazılarda görüşmek üzere kendinize iyi bakınız…

Buğra UNUTMAZ

 

Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Buğra Unutmaz
Daha Fazla Göster -  Matlab

2 Yorumlar

  1. uahsdasd

    28 Kasım 2017 at 00:02

    histogram(k,’FaceColor’,’green’)
    n;
    hold on
    histogram(n,’FaceColor’,’black’)

    demişsin alttaki grafikteki renkler bambaşka 🙂 sen bizi mi yiyon 🙂

    Reply

    • Buğra Unutmaz

      28 Kasım 2017 at 00:25

      Gördüğün grafiğin altında “görsel temsilidir” diye yazıyor zaten. 🙂

      Reply

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bak Bakalım ?

Düşen Notlarınızı Yükseltmenin 9 Yolu

En parlak öğrenciler bile bazen hata kendilerinde olmasa bile notlarında düşüler gösterebi…