Professional Documents
Culture Documents
(5. Sunu)
MATLAB’İN SAYI YUVARLAMA
FONKSİYONLARI
MATLAB’in ondalıklı sayıları yuvarlama amacıyla
sıklıkla kullanılan 4 adet hazır fonksiyonu vardır.
Bunlar:
fix
round
ceil
floor
fix(x)
Kendisine parametre (argüman) olarak aldığı x
ondalıklı sayısını 0 (Sıfır) yönünde karşılaştığı ilk
tamsayıya yuvarlar.
round(x)
Kendisine parametre (argüman) olarak aldığı x
ondalıklı sayısını kendisine en yakın tamsayıya
yuvarlar.
ceil(x)
x=y*bölüm+kalan
x=y*fix(x/y)+mod(x,y)
BİR SAYININ ÇİFT SAYI VEYA TEK SAYI
OLUP OLMADIĞININ ARAŞTIRILMASI
Bir sayı ikiye tam olarak bölünebiliyorsa yani
sayının ikiye bölümünden kalan sıfırsa bu sayı
bir çift sayıdır.
Bir sayının ikiye bölümünden kalan 1 ise bu
sayının bir tek sayıdır.
rand FONKSİYONU RASTGELE SAYI ÜRETİMİ
rand(n,m) fonksiyonu MATLAB’de nxm boyutunda ve
elemanları rastgele sayılar olan bir matris oluşturur.
Oluşturulan bu rastgele sayılar 0 ile 1 arasındadır ve düzgün
dağılımlıdır.
Üretilmek istenen matris kare bir matris ise yani n satır
sayısı, m sütun sayısına eşit ise rand(n,n) yerine sadece
rand(n) kullanılabilir.
0 ile 1 arasında rastgele ondalıklı bir skaler sayı üretmek için
ise rand(1) fonksiyonunun kullanımı yeterlidir.
Rastgele sayılardan oluşan bu matrisin tüm elemanlarını k
gibi bir sayı ile çarparak sayıları 0 ile k aralığına çekebiliriz.
Ondalıklı sayılardan oluşmuş bir matrisin elemanlarını
yuvarlayıp tamsayı yapmak için herhangi bir yuvarlama
fonksiyonunu, mesela round fonksiyonunu kullanabiliriz.
AŞAĞIDAKİ MATLAB DEYİMLERİ KOMUT
PENCERESİNDE ÇALIŞTIRILDIKLARINDA
NASIL ÇIKTILAR ÜRETİRLER?
>> a=rand(1,10)
>> b=fix(rand(3,5))
>> c=round(40*rand(5,3))
>> d= 40*round(rand(5,3))
>> e=round(10+40*rand(5,3))
>> f=10+40*round(rand(5,3))
>> g=round(50+250*rand(3,4))
>> h=round(1000*rand(1))
zeros FONKSİYONU İLE SADECE 0’LAR İÇEREN
BİR MATRİSİN OTOMATİK OLARAK
OLUŞTURULMASI
zeros(n,m) fonksiyonu nxm boyutunda
(n satırlı ve m sütunlu) ve her bir elemanı 0
olan bir matris üretmek amacıyla kullanılır.
Üretilmek istenen matris kare bir matris ise
yani n satır sayısı, m sütun sayısına eşit ise
zeros(n,n) yerine sadece zeros(n)
kullanılabilir.
>> zeros(1,3) zeros(3,5) deyimi acaba
>> zeros(3,1) fix(rand(3,5)) deyimi ile aynı
>> zeros(4,4) sonucu üretir mi?
>> zeros(4)
>> zeros(3,5)
ones FONKSİYONU İLE SADECE 1’LER İÇEREN
BİR MATRİSİN OTOMATİK OLARAK
OLUŞTURULMASI
ones(n,m) fonksiyonu nxm boyutunda
(n satırlı ve m sütunlu) ve her bir elemanı 1
olan bir matris üretmek amacıyla kullanılır.
Üretilmek istenen matris kare bir matris ise
yani n satır sayısı, m sütun sayısına eşit ise
ones(n,n) yerine sadece ones(n)
kullanılabilir.
>> ones(1,3) ones(3,5) deyimi acaba
>> ones(3,1) ceil(rand(3,5)) deyimi ile
>> ones(4,4) aynı sonucu üretir mi?
>> ones(4)
>> ones(3,5)
UYGULAMA
Dünyaya geldiğiniz gün 0 (sıfır) başlangıç değeri ile çalışmaya başlayan ve
mevcut değerini her gün 1 arttıran bir sayaca sahip olduğunuzu hayal edin.
Böyle bir sayıcının, ekranında gördüğünüz değere ulaşmak için kaç yıl, kaç ay
ve kaç gün süreyle sayma işlemi gerçekleştirdiğini hesaplayacak bir MATLAB
programını yazınız. Programınız input komutu ile kullanıcıdan klavye yoluyla
söz konusu sayıcı değerini almalıdır ve hesapladığı yıl, ay ve gün değerini
fprintf komutuyla ekrana basmalıdır. Bir yılın 365 ve bir ayın da 30 günden
oluştuğunu kabul edebilirsiniz.
end
end
Başlangıç değeri bitiş değerinden küçük fakat
artım miktarı negatif bir for döngüsü işletilmez.
while DÖNGÜSÜ
Tekrarın bir koşula bağlı olarak işletilmesini sağlayan bir yapı
while koşul
işlem_1
işlem_2
koşul denilen şey sonucu BİR veya
SIFIR olan bir eşitlik testi, karşılaştırma
işlem_n işlemi veya mantıksal bir test olabilir.
end
UYGULAMA
Ekrana adınızı ve soyadınızı 10 kez yazan bir
MATLAB programını while döngüsü kullanarak
oluşturunuz.
devamEt=1;
i=0; %sayac
Yandaki programı ekrana 10
while devamEt kere “Merhaba Dünya” yazacak
disp(‘Merhaba Dünya'); şekilde nasıl
i=i+1; modifiye edersiniz???
end
UYGULAMA
Ocak ayının 1. gününde doğan bir bebek tek numaralı ayların sonunda ağırlığının
%7’sini kaybederken, çift numaralı ayların sonunda ağırlığının %9’u kadar kilo
alıyor. Bu bebeğin kaç ay sonra doğum ağırlığının %10’undan fazla bir ağırlığa
ulaşacağını hesaplayan ve fprintf komutuyla ekrana basan bir MATLAB
programını yazınız.
kilo=100; %Bebeğin başlangıç ağırlığı
ay=1;
while kilo<=110
if mod(ay,2)==1
kilo=kilo*0.93; %kilo=kilo-kilo*0.07;
else
kilo=kilo*1.09; %kilo=kilo+kilo*0.09;
end
ay=ay+1;
end
fprintf('Çözümü Sağlayan Ay: %d\n',ay);
UYGULAMALAR
Uygulama 5.1
Dünyaya geldiğiniz gün 0 (sıfır) başlangıç değeri ile çalışmaya başlayan ve mevcut
değerini her saniye 1 arttıran bir sayaca sahip olduğunuzu hayal ediniz. Böyle bir
sayıcının, ekranında gördüğünüz değere ulaşmak için kaç gün, kaç saat, kaç dakika ve
kaç saniye süreyle sayma işlemi gerçekleştirdiğini hesaplayacak bir MATLAB programını
SaniyeSayacininKarsiliginiHesapla.m adındaki düzyazı m-dosyasının içerisine yazınız
ve programı çalıştırınız. Programınız input komutu ile kullanıcıdan klavye yoluyla söz
konusu sayıcı değerini almalıdır ve hesapladığı gün, saat, dakika ve saniye değerini
fprintf komutuyla ekrana basmalıdır.
Yukarıda verilen denklemi sağlayan N sayısını while döngüsü kullanarak bulan ve fprintf
komutuyla ekra ve fprintf komutuyla ekrana basan bir MATLAB programını
GizemliKuplerToplami.m adındaki düzyazı m-dosyasının içerisine yazınız ve programı
çalıştırınız.