19
Dr. Gökçe BAYSAL TÜRKÖLMEZ MATLAB Temel İşlemler ve Hesaplamalar

MATLAB - kisi.deu.edu.trkisi.deu.edu.tr/gokce.baysal/Matlab_uygulamali_opt.pdf · Dr. Gökçe BAYSAL TÜRKÖLMEZ 11 3) İlişkisel ve Mantıksal Operatörler, If ve Switch Komutları

  • Upload
    others

  • View
    11

  • Download
    0

Embed Size (px)

Citation preview

Dr. Gökçe BAYSAL TÜRKÖLMEZ

MATLAB Temel İşlemler ve Hesaplamalar

Dr. Gökçe BAYSAL TÜRKÖLMEZ

1

Matlab

1) Temel İşlemler

Vektörler ve Matrisler

Satır Vektörü: birkaç farklı yoldan satır vektörü oluşturulabilir.

>> sv=[1 2 3 4 5]

sv =

1 2 3 4 5

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

sv =

1 2 3 4 5

1’den 6’ya kadar satır vektörü

>> sv=1:6

sv =

1 2 3 4 5 6

1’den 15’e kadar 3’erli aralıkla oluşturulan satır vektörü

>> nv=1:3:15

nv =

1 4 7 10 13

Linspace fonksiyonu: Doğrusal aralıklı vektör oluşturur; linspace(x,y,n), x’ten y’ye aralık içeren n

değerli bir vektör oluşturur.

ls=linspace(3,15,5)

ls =

3 6 9 12 15

Dr. Gökçe BAYSAL TÜRKÖLMEZ

2

İki vekötrü birleştirip yeni bir vektör oluşturmak

>> yenivektor=[nv ls]

yenivektor =

1 4 7 10 13 3 6 9 12 15

Yeni vektörün 5. Elemanı=13

>> yenivektor(5)

ans =

13

Yeni vektörün 4. Elemanından 6. Elemanına kadar olan elemanları

>> b=yenivektor(4:6)

b =

10 13 3

Yeni vektörün 1., 5. ve 10. Elemanları

>> yenivektor([1 5 10])

ans =

1 13 15

Yukarıdaki ifadede b değişkenine atanan yenivektor(4:6) ifadesinde 2. Elemanı 11 ile değiştirir.

>> b(2)=11

b =

10 11 3

Satır vektörüne yeni bir değer eklemek için;

>> yv=[5 65 18]

yv =

5 65 18

Dr. Gökçe BAYSAL TÜRKÖLMEZ

3

>> yv(4)=7

yv =

5 65 18 7

>> yv(7)=8

yv =

5 65 18 7 0 0 8

Sütun vektörü:

>> c=[1;6;7;9]

c =

1

6

7

9

Transpoz:

>> s=1:3;

>> c=s'

c =

1

2

3

Matris Değişkeni:

>> mat=[5 8 7;6 9 2]

mat =

5 8 7

6 9 2

>> mat=[1:3; 7:9]

mat =

1 2 3

7 8 9

Dr. Gökçe BAYSAL TÜRKÖLMEZ

4

2x2 boyutlu (0,1) uniform dağılışlı rastgele sayı türeterek matris oluşturmak için;

>> rand(2)

ans =

0.8147 0.1270

0.9058 0.9134

Not: randn komutu Normal dağılışlı rassal sayı türetir.

Sembolik Hesaplamalar

‘syms’ değişkenleri sembolik olarak ifade etmeye yarar. ‘expand’ komutu ifadeyi açar, ‘factor’

çarpanlarına ayırır, ‘simplify’ sadeleştirir.

>> syms x y

>> (x - y) * (x – y) ^2

ans =

(x – y) ^3

>> expand (ans)

ans =

x^3 – 3 *x^2*y + 3*x*y^2 – y^3

>> factor (ans)

ans =

(x – y)^3

>> simplify ((x^3 – y^3) / (x-y))

ans =

x^2 + x*y + y^2

Dr. Gökçe BAYSAL TÜRKÖLMEZ

5

Sembolik İfadeler

subs(t, a, 2) komutu t ifadesinde 2 değişkeninin yerine 2 değerini koyacaktır. Örneğin:

>> syms a b

>> t = a^2 – b^2

t =

a^2 – b^2

>> subs (t, a, 2)

ans =

4 – b^2

>>d=1;

>> subs (t, b, d)

ans =

u^2-1

>> subs (t, b, a + b)

ans =

a^2 – (a+b)^2

Dr. Gökçe BAYSAL TÜRKÖLMEZ

6

2) Matlab’da Programlamaya Giriş

Giriş ve Sonuç Komutları:

MATLAB’de programlama genel olarak iki yolla yapılır:

Komut satırında (inline) programlama

m-dosyaları ile (m-files) programlama

Düzyazı (script) m-dosyaları ile programlama

Fonksiyon (function) m-dosyaları ile programlama

m-dosyaları oluşturabilmek için ise bir metin düzenleyicisine (editor) ihtiyaç vardır.

Editör penceresi (.m dosyaları)

Örnek 2.1

Dr. Gökçe BAYSAL TÜRKÖLMEZ

7

Giriş Komutları (input)

Veri Girmek için ‘input’ fonksiyonu:

Command Window’da:

>> sayi=input('Lütfen bir sayı yazınız=')

Lütfen bir sayı yazınız=52

sayi =

52

>> bolum=input('Lütfen bölümünüzün adını yazınız=','s')

Lütfen bölümünüzün adını yazınız=Ekonometri

bolum =

'Ekonometri'

Editör penceresinde:

Örnek 2.2

Dr. Gökçe BAYSAL TÜRKÖLMEZ

8

Çıktıyı göstermek için kullanılan komutlar: ‘disp’ (display) ve ‘fprintf’

>> disp('Merhaba')

Merhaba

>> disp(4^3)

64

MATLAB’in num2str fonksiyonu kendisine parametre olarak aldığı bir sayıyı bir karakter dizisine

(string) çevirir. (22 sayısı '22' olur.)

Çıktıyı belirli bir formatta ekranda yazdırmak için fprintf komutu kullanılır

fprintf('Ekrana Basilacak Aciklama %X \n', deger);

Burada %X Kısmında Kullanabileceğimiz Seçenekler :

%c : deger in tek bir karakter olduğunu gösterir.

%s : deger in bir karakter dizisi (string) olduğunu gösterir.

%d : deger in bir tamsayı olduğunu gösterir.

%f : deger in bir ondalıklı sayı olduğunu gösterir.

%g : deger i mümkün olan en kompakt forma sokar.

\n : İmleci bir alt satırın başına götürür. (n, newline)

\t : İmleci bir TAB kadar sağa kaydırır.

Örnek 2.3:

>> fprintf('Sonuç %d',4^3)

Sonuç 64>>

>> fprintf('Sonuç %d, \n',4^3)

Sonuç 64,

>> fprintf('Sonuç %f, \n',4^3)

Sonuç 64.000000,

Dr. Gökçe BAYSAL TÜRKÖLMEZ

9

disp komutu ekrana çıktı verdikten sonra bir alt satıra otomatik olarak atlar. fprintf komutunu bir alt

satıra götürebilmek için ise \n kullanılmalıdır.

Ayrıca disp komutu satır veya sütun vektörleri ile matrisleri ekrana kolayca yazdırabilirken aynı işlemi

fprintf ile yapabilmek daha çok işlem gerektirmektedir.

Editör penceresinde:

Örnek 2.4

Dr. Gökçe BAYSAL TÜRKÖLMEZ

10

Örnek 2.5

Dr. Gökçe BAYSAL TÜRKÖLMEZ

11

3) İlişkisel ve Mantıksal Operatörler, If ve Switch Komutları

İlişkisel Operatörler

İlişkisel operatörler sonuç olarak 1 (BİR) (true) veya 0 (SIFIR) (false) değerlerini üretirler.

Mantıksal Operatörler Mantıksal operatörler de ilişkisel operatörler gibi sonuç olarak 1 (BİR) (true) veya 0 (SIFIR) (false) değerlerini üretirler.

Mantıksal Matlab Operatörleri

İşlevleri

x&&y Ve (and)

x || y Veya (or)

~x Değil (not)

If Komutu: if koşul

eylem

end

== Eşit

~ = Eşit değil

> Büyük

>= Büyük veya eşit

< Küçük

<= Küçük veya eşit

Dr. Gökçe BAYSAL TÜRKÖLMEZ

12

Örnek 3.1: Yazılan bir sayı eğer sıfırdan küçükse mutlak değerini alan bir program yazınız

Örnek 3.2: Yazılan bir sayının karekökünü alsın, sayı sıfırdan küçükse önce mutlak değerini alsın

Dr. Gökçe BAYSAL TÜRKÖLMEZ

13

Örnek 3.3: Rassal sayı

Dr. Gökçe BAYSAL TÜRKÖLMEZ

14

Örnek 3.4: If-else komutu (iç içe if else)

𝑦 = 𝑓(𝑥) fonksiyonu tanımlanmış

𝑦 = 𝑓(𝑥) = {

1

𝑥 𝑥 < −1

𝑥2 − 1 ≤ 𝑥 ≤ 2𝑥3 𝑥 > 2

1.Yol:

2. Yol: elseif

Dr. Gökçe BAYSAL TÜRKÖLMEZ

15

3. Yol: Fonksiyon çağırma

Editor penceresine fonksiyon yazılır. Editor penceresindeki program fonksiyonun adıyla

kaydedilmelidir. Örnekte fonksiyonun adı dongu1, dosyanın adı da dongu1.m olmak zorundadır.

Command Window penceresinde değişkenin değeri ve fonksiyonun adı aşağıdaki gibi yazılarak sonuç

hesaplatılır.

Switch Şartlı Deyimi:

ayNo = input('Bir Ay Numarasi Giriniz (1-12)= ');

switch ayNo

case {1,3,5,7,8,10,12}

disp('Bu Ay 31 Gunden Olusur.');

case 2

disp('Bu Ay 28 Gunden Olusur.');

case {4,6,9,11}

disp('Bu Ay 30 Gunden Olusur.');

otherwise

disp('Yanlis Bir Ay Numarasi Girdiniz.');

end

Uygulama 3.1

Klavyeden girilen iki sayının oranını bulan ve fprintf komutuyla ekrana yazdıran bir Matlab programı

yazınız. Payda=0 girildiğinde “disp” komutuyla “Üzgünüm! Sıfıra bölüm hatası var” mesajı yazdırsın.

Dr. Gökçe BAYSAL TÜRKÖLMEZ

16

4) Döngüler

For Döngüsü:

for döngü değişkeni=başlangıç:artış miktarı:bitiş

komutlar

end

Sadece başlangıç ve bitiş yazılırsa artış miktarı 1 olur. Döngü değişkeni sayaç olarak isimlendirilir. for döngü değişkeni=başlangıç:bitiş

komutlar

end

Örnek 4.1: Klavyeden girilen bir sayı ile 1 sayısı arasındaki sayıların toplamını veren bir Matlab programı yazınız.

Not: Hangi fprintf komutunun çalıştırıldığına dikkat edin.

Dr. Gökçe BAYSAL TÜRKÖLMEZ

17

While Döngüsü

while koşul

işlem 1

işlem 2

işlem 3

işlem n

end

Bu döngüde koşul sonucu sıfır veya bir olan bir karşılaştırma testi, mantıksal sınama veya eşitlik testi olabilir.

Örnek 4.2: For döngüsündeki örneğin while döngüsü ile çözümü

Dr. Gökçe BAYSAL TÜRKÖLMEZ

18

Uygulamalar

1) Ekranda adınızı ve soyadınızı 5 kez yazan bir Matlab programını for ve while döngüleriyle oluşturunuz. 2) Klavyeden girilen bir sayı ile 1 sayısı arasındaki sayıların çarpımını alan bir Matlab programını while ve

for döngüleriyle oluşturunuz. 3) Çarpım tablosunu hesaplayıp ekrana yazan bir Matlab programı yazınız.