• Sonuç bulunamadı

ALGORİTMALAR VE PROGRAMLAMA

N/A
N/A
Protected

Academic year: 2022

Share "ALGORİTMALAR VE PROGRAMLAMA"

Copied!
6
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

ALGORİTMALAR VE PROGRAMLAMA

DENEY-1: MATLAB’da KULLANILAN SAYI GÖSTERİMLERİ, VERİ TİPLERİ, TEMEL FONKSİYONLAR VE DİZİ İŞLEMLERİ

SAYI GÖSTERİMLERİ:

MATLAB’da sayılar sabit noktalı (fixed point) ve kayan noktalı (float point) olmak üzere iki şekilde gösterilir.

Sabit Noktalı Sayılar: Artı veya eksi olabilen tamsayı veya ondalık sayı gösterimini içerir.

Örneğin; 5, 0.075, -5.6 gibi.

Kayan Noktalı Sayılar: Artı veya eksi olabilen ±mx10e şeklinde gösterilir. Örneğin; 2.677x105 sayısı, MATLAB’da 2.677e5 şeklinde gösterilir. Kayan nokta olmasının nedeni ise ondalık noktanın kaymasındandır. Örneğin; 2.677e5 gösterimi 267.7e3 veya 0.2677e6 şeklinde ifade edilebilir. Kayan noktalı sayı mantis ve üstel kısım olmak üzere iki kısımdan oluşur. Mantis (m) kısmı 0<m<10 arasında p basamaklı olabilir. P; duyarlılık veya hassasiyet olarak adlandırılır. Üstel kısımda ise üst kısmının değeri belirlenir. MATLAB’da tüm sayılar IEEE kayan noktalı standardına uygun şekilde belirlenmiştir.

Ayrıca karmaşık sayı gösterimleri için de i ve j ifadeleri kullanılır. Karmaşık sayılarında sayı biçimleri kayan noktalı olacak şekilde belirlenir.

SAYI ÇIKIŞ FORMATLARI:

MATLAB, işlemlerin ve hesaplamaların çeşitli sayı çıkış formatları vardır. Bu işlem “format”

komutu ile gerçekleştirilir. MATLAB’ta kullanılan formatlar aşağıda verilmiştir:

KOMUT Açıklama

format Varsayılan format (format short ile aynı) format short 5 Rakamlı sabit noktalı kısa skala formatı format long 15 rakamlı sabit noktalı format

format short e 5 rakamlı kayan noktalı kısa format format long e 15 rakamlı kayan noktalı uzun format format hex Onaltılık tabanda format

format rat En küçük tamsayı oranı yaklaşımıyla sayıyı kesirli olarak gösterir

Aşağıdaki işlem için MATLAB’da farklı sayı çıkış formatlarını çalıştırınız ve sonuçları inceleyiniz.

>> a=355/113

>> format short e

>> a

>>format long

>>a

>>format short e

>>a

>>format long e

>>a

>>format rat

>>a

Aynı işlemleri “pi” sayısını için de gerçekleyiniz.

Soru: MATLAB’da kullanılabilecek en büyük ve en küçük sayıyı bulunuz?

“realmax” ve “realmin” komutlarını çalıştırınız.

(2)

MATLAB’da VERİ TÜRLERİ

Veri türü, verinin bellekte tutulma şeklini belirler. Veriler değişkenler veya sabit sayılar olabilir. Genel olarak sayısal (nümerik) ve sayısal olmayan (alfa-nümerik) olmak üzere iki genel veri türünden bahsedilebilir. Veri tipine bağlı olarak kullanılan değişkenin veya sabitin bellekte saklanacağı boyut ve yapısı belirlenir. MATLAB’da tüm değişkenler dizi şeklinde belirlenir. MATLAB’taki veri türleri aşağıda verilmiştir.

logical : “true” veya “false” değerlerinden oluşan mantıksal dizi.

int8: 8-bit işaretli tamsayı dizisi uint8: 8-bit işaretsiz tamsayı dizisi int16: 16-bit işaretli tamsayı dizisi uint16: 16-bit işaretsiz tamsayı dizisi int32: 32-bit işaretli tamsayı dizisi uint32: 32-bit işaretsiz tamsayı dizisi int64: 64-bit işaretli tamsayı dizisi uint64: 64-bit işaretsiz tamsayı dizisi

single: Tek duyarlıklı kayan nokta dizisi (32 bit uzunluğunda) double: Çift duyarlıklı kayan nokta dizisi (64 bit uzunluğunda)

char: Karakterler dizisi cell: Hücre dizisi struct: Yapı dizisi

class: nesne(object) sınıfı

Aşağıdaki komutları MATLAB’de çalıştırınız.

>> a=pi*10000000

>> single(a)

>> int8(a)

>> int16(a)

>> int32(a)

Elde edilen sonuçları karşılaştırınız. Aynı işlemi “>> a=-pi*10e7” için gerçekleyiniz. Burada ayrıca işaretsiz veri tiplerini de deneyiniz.

char veri tipinin incelenmesi:

Karakter veri tipinde her bir karakter 8 bit (1 byte) uzunluğundadır. Bir değişkeni char veri tipinde olduğunu belirlemek için girilen karakterler iki tırnak içine alınır. Buradaki karakterler ASCII sayısal kodlarına karşılık gelir. Aşağıdaki komutları MATLAB’de çalıştırınız.

>>x='a'

Bu işlemi gerçekleştirdiğinizde x değişkeninin char veri tipinde tanımlandığını workspace penceresinden gözlemleyiniz.

>> y='abc'

Komutunu çalıştırdığınızda y değişkeninin char veri tipinde 1x3 boyutunda bir dizi olduğunu gözlemleyiniz.

>> y(1)

>> y(2)

>> y(3)

satırlarını çalıştırınız. Dizinin her bir elemanın ‘a’, ‘b’ ve ‘c’ olarak atandığını gözlemleyiniz.

>> sayidegeri=double(y)

Komutunu çalıştırınız ve y değişkeninin içindeki her bir karakterin ASCII kod karşılığını görünüz. Aynı işlemleri ad ve soyad’larınızı arada bir boşluk olacak şekilde giriniz.

Boşluk(space) karakterinin ASCII kodunu bulunuz.

(3)

Aşağıdaki işlemleri sırasıyla gerçekleyiniz ve sonuçları inceleyiniz.

>> deneme='Ad ve Soyad 1234'

>>sort(deneme)

>>fliplr(deneme)

>>size(deneme)

>>upper(deneme)

>>lower(deneme)

Ayrıca aşağıdaki satırları çalıştırınız.

>> x='1'

>> y='2'

>>x+y

Elde edilen sonucu yorumlayınız.

Karakter dizilerine “string” adı verilir. String işlemleri için MATLAB’da bir çok fonksiyon oluşturulmuştur. Bu fonksiyonlar kullanım gerekliliğine göre MATLAB’da araştırılabilir.

Karakter dizilerinin karşılaştırılması işlemleri için “strcmp”, “strcmpi”, “strncmp” ve

“strncmpi” fonksiyonlarını inceleyiniz.

Sayı-Karakter ve Karakter-Sayı Dönüşümleri:

MATLAB’da sayıları karaktere dönüştürmek için iki fonksiyon vardır. Bunlar;

num2str: Kayan noktalı sayıyı karakter dizisine dönüştürür.

int2str: Sayıyı yuvarlanmış tamsayı olarak karaktere dönüştürür.

Aşağıdaki satırları çalıştırınız.

>> x=123.45

>> y=int2str(x)

>> y=num2str(x)

>> double(y)

num2str fonksiyonu kullanıldığında elde edilen dizinin uzunluğu nedir?

Karakter-sayı dönüşümlerinde ise üç temel fonksiyon vardır. Bunlar; “str2num”, “str2double”

ve “eval”.

Aşağıdaki satırları çalıştırınız ve elde edilen sonuçları inceleyiniz.

>> x='123'

>> sayi=str2num(x)

>> y=str2num('123+2')

>> z=str2num('abc')

>> a=str2double('123.45e6')

“eval” fonksiyonu ise parametre olarak fonksiyona girdi yapılan string’te ifade edilen işlemi gerçekleştirir. Örneğin;

>> b=eval('sind(30)')

>> c=eval('1:1:10')

disp fonksiyonu ile num2str’nin kullanılması:

Aşağıdaki satırları çalıştırınız.

>> not=100;

>> disp(['Alınan Not:', num2str(not),' dur'])

fprintf fonksiyonu:

fprintf fonksiyonu, bir çıkışın formatlı olarak gösterilmesinde kullanılır. Genel yazım biçimi;

fprintf (‘Metin %format\n’, değişken_adı). Aşağıdaki satırları çalıştırınız.

>> x=123.45

>> fprintf('işlem sonucu %f bulunmuştur',x)

>> fprintf('işlem sonucu %f\n bulunmuştur',x)

(4)

>> fprintf('işlem sonucu %f bulunmuştur\n',x)

>> fprintf('işlem sonucu %f bulunmuştur\n tekrar deneyiniz',x)

>> fprintf('işlem sonucu %f bulunmuştur\t tekrar deneyiniz',x)

>> fprintf('işlem sonucu %f bulunmuştur\b tekrar deneyiniz',x)

>> fprintf('işlem sonucu %f ''dir.\n',x)

fprintf fonksiyonunun bu şekilde kullanımı dışında dosyaya veri yazmak için de kullanımı mevcuttur. Bunlarla ilgili işlemler ilerleyen deneylerde yapılacaktır. Ayrıca, “sprintf”

fonksiyonunu inceleyiniz.

Veri türlerinden “cell”, “struct” ve “class” veri tipleri bu ders kapsamında incelenmeyecektir.

MATLAB help dosyalarından inceleyebilirsiniz.

MATLAB’da kullanılan temel fonksiyonlar:

>>help elfun

Satırı ile ekranda gözüken fonksiyonları inceleyiniz.

>>help elmat Ve

>>help specfun

Satırı ile ekranda gözüken fonksiyonları inceleyiniz.

SORULAR:

1. Aşağıdaki işlemleri MATLAB programında gerçekleyiniz.

a) sin(pi/7) b)sin(30o) c) 10log100 d) ln(102/3) e) e5 f) elog10 g) log216

2. x=40o, n=0.5x105 için;

) ln(

) cos(

3 /

2 n

n

sonuc x hesaplayınız.

3. t=300, r=0.072, a=0.233, b=0.057, A=20, B=10 için;

B A b a

t r

K  

  1

)

( 2

3

işlemini gerçekleyiniz.

DİZİLER

MATLAB’ın en temel işlem elemanı dizilerdir(array). Bu deneyde bir boyutlu (vektör) ve çok boyutlu diziler ve bunların oluşturulma biçimleri incelenecektir.

Bir boyutlu dizi (vektör) oluşturma:

MATLAB’de vektör oluşturmanın üç temel yolu vardır:

1. Doğrudan köşeli parantez kullanarak [….].

2. Eşit aralıklı elemanlar kullanarak. Bu işlem için : operatörü veya linspace ve logspace fonksiyonları kullanılır.

3. rand, randn, ones, zeros benzeri fonksiyonlar kullanılarak.

Aşağıdaki satırları çalıştırınız.

>> x=[1 2 3 4 5]

>> x=[1,2,3,4,5]

>>x(2)

>>y=[sind(30) cos(pi/6) sqrt(2)]

>>n=1:1:10

>>y=1:10

>>z=1:2:10

>> n=[1:10]

(5)

>>aci=-2*pi:pi/2:2*pi

>>v=linspace(1,10,5)

>> h=randn(1,4)

>>k=ones(1,5)

>>kl=ones(2,5)

>>z=zeros(1,7)

Vektör işlemleri:

Aşağıdaki satırları çalıştırınız.

>> a=[1 2 3]

>> b=[-1 5 8]

>>a+b

>>a-b

>>a*b

>>a.*b

>>a/b

>>a./b

>>a.\b

>>a^b

>>a.^b

>>a’

>>size(a)

>>length(a)

Dizilerde kullanılan çeşitli fonksiyonlar vardır. Bu fonksiyonları inceleyiniz; “max”, “min”,

“sum”, “prod”, “mean”, “sort”.

İki Boyutlu Diziler (Matrisler):

Aşağıdaki satırları çalıştırınız.

>>a=[1 2 3;4 5 6;7 8 9]

>>b=2*ones(3,4)

>>c=eye(3)

>>d=pascal(4)

>>x1=[1:5]

>>x2=[-1 3 65 8 43]

>>x3=ones(1,5)

>>X=[x1;x2;x3]

Matris işlemlerini incelemek için aşağıdaki satırları çalıştırınız:

>>a=[1 2;3 4]

>>b=[-1 3;5 6]

>>a+b

>>a*b

>>a.*b

>>a/b

>>a./b

>>a’

>>det(a)

>>inv(a)

Matris İndeksleme ve Kolon (:) Notasyonu:

Bir A matrisi için;

1. A(m,n) gösterimi: A dizisinin m,n. elemanının değerini verir.

2. A(:,n) gösterimi: A matrisinin n. sütununu verir.

3. A(m,:) gösterimi: A matrisinin m. satırını verir.

4. A(x:y,:) gösterimi: A matrisinin x’den y’ye kadar olan tüm satırlarını verir.

(6)

5. A(:,x:y) gösterimi: A matrisinin x’den y’ye kadar olan tüm sütunlarını verir.

6. A(m:n) gösterimi: Eleman sayısı ilk sütun elemanlarından başlayarak m. Eleman ile n.

eleman arasındaki elemanları verir.

Aşağıdaki satırları çalıştırınız ve elde edilen sonuçları inceleyiniz.

>>A=magic(5)

>>A(2,4)

>>A(:,3)

>>A(2,:)

>>A(5:8)

>>A(1:2,:)

>>A(:,2:3)

>>x=A

>>x(1,1)=0

>>x(:,2)=[]

>>y=ones(1,5)

>>Ayeni=[A;y]

>>y=ones(5,1)

>>Ayeni=[A y]

SORULAR:

1. Aşağıdaki satırlar MATLAB komut penceresinde yazıldığında elde edilecek çıktıları veriniz (x=[ones(3,2),eye(3);zeros(1,5)]; y=[1:5;2,2,2,2,2;6:10;-1 -1 -1 -1 -1];). 2011 YILI SINAV SORUSU.

a) x b) y

c) z=x(3,1:3) d) a=x(2:3,2:3) e) b=y(1:3,4) f) c=z*b g) d=z.*b h) e=x.*y

2. Beş işçinin 1 ay boyunca çalışma çizelgesi verilmiştir. Çizelgeyi matris şeklinde tanımlayınız.

a) Her bir işçi bir ayda ne kadar para kazanmıştır. MATLAB’de bulunuz.

b) Bu aya toplam maaş ödemesi kaç TL’dir. MATLAB’de bulunuz.

c) Ne kadar ürün üretilmiştir.

d) Bir ürünü üretmenin toplam maliyeti ne kadardır?

1. İşçi 2. İşçi 3. İşçi 4. İşçi 5. İşçi

Saat Ücreti 1.2 2 2.5 3 4.5

Çalışılan Saat 153 160 157 165 150

Ürün Adeti 1100 1250 1000 1200 1100

Referanslar

Benzer Belgeler

Buna göre, &lt; 4, x &gt; ve &gt; 3, x &lt; şartlarını sağlayan iki basamaklı en küçük ve en büyük x doğal sayılarının toplamı kaçtır?..

n pozitif bir doğal sayı olmak üzere, 1 den n ye kadar olan ardışık doğal sayıların toplamı şeklinde yazılabilen sayılara üçgensel sayılar denir. Herhangi bir doğal

İki tam sayının oranı şeklinde yazılamayan yani rasyonel olmayan sayılardır.. I

Aşağıda bazı önermeler veriliyor. Karmaşık sayılar sebebiyle tek dereceli kökler içerisine negatif sayılar yazılabilmiştir. Karmaşık sayılar aynı zamanda bir

Kullanılan alüminyum fosfit miktarının ölümcül olması nedeniyle hasta çocuk yoğun bakım ünitesine yatırıldı.. Destek tedavileri ve izlemi yapılan hasta

Teorem 1.2.4. Herhangi ardışık iki üçgensel sayının toplamı bir tam karedir [2].. Burada n ’nin tek ve çift olma durumuna göre üçgensel sayılar, karelerin toplamı

Tahmin edeceğiniz gibi artı yüklü Na + iyonları suyun kısmi olarak eksi yüklü olan oksi- jenleri tarafından tutulurken, eksi yüklü Cl - iyonları da suyun kısmi olarak

Bu, aslanpençesi bitkisinin (Alchemilla vulgaris) üzerindeki yedi noktalı uğurböceğinin (Coccinella septempunctata) taramalı elektron mikroskopu (SEM) ile çekilmiş