ENF1012 MATLAB’a Giriş
Konular: MATLAB ortamının tanıtımı Matlab sistemi (ara yüzey tanıtımı) Geliştirme ortamı Komut penceresi Başlatma penceresi (launch pad) Workspace History Current directory
MATLAB MATLAB, bilim adamları ve mühendislere, Fortran ve C gibi gelenekselleşmiş dillerde program yazmaksızın, matrislere dayalı problemleri çözmede kullanılmak üzere bir sayısal hesaplama kütüphanesi sunmak amacıyla, MATris LABoratuvarı (MATrix LABoratory) programı olarak tasarlanmıştır. Fakat daha sonra, Optimization Toolbox ve Control System Toolbox gibi bazı toolbox’lar eklenerek geliştirilmiştir. MATLAB bir yorumlayıcıdır (interpreter); yani sonuç, daha ziyade eltipi hesap makinelerine benzer tarzda ekranda yazılı bir metin olarak alınabilir. Neticede diğer dillerde olduğu gibi “derleme”ye (compiler) ihtiyaç yoktur; fakat programlamaya izin vermesinden dolayı da güçlü bir paket programdır.
z(x,y) = x exp( - x^2 - y^2): >> [x,y] = ndgrid(-2:.2:2, -2:.2:2); >> z = x .* exp(-x.^2 - y.^2); >> mesh(z)
1. Temel Bilgiler Komut Penceresi: MATLAB ile iletişim kurulan ana penceredir. MATLAB yorumlayıcısı kullanıcıdan gelecek komutları kabul etmeye hazır olduğunu gösteren “ >> ” biçiminde bir ileti görüntüler. Örneğin, 4*25+6*52+2*99 gibi basit matematiksel işlemi yapmak için >> 4*25+6*52+2*99 ifadesini yazıp Enter tuşuna basılınca, ans= 610 Komut satırında yanlışların düzeltilmesi: Klavyede yer alan ok tuşları komut satırında yapılan yanlışlıkları düzeltilmesine olanak tanır. Bunlar yukarı “↑” aşağı “↓” sol “←” sağ “→”. Yukarı tuşu kullanılarak bir önceki satır tekrar görüntülenerek sağ ve sol tuşları ile yanlış yazılı yere kursör taşınarak düzenleme gerçekleştirilir. Sonucun Ekranda Görüntülenmesini Gizleme: bir deyim yazıp, Enter tuşuna basılınca sonuçlar ekranda otomatik olarak görüntülenir. Buna karşılık, deyimin sonuna “ ; ” ilave edilecek olursa, bu deyim ile yapılan hesaplamalar ekranda görüntülenmez.
2. MATLAB DEĞİŞKENLERİ VE KURALLAR Diğer programlama dillerinin pek çoğunda olduğu gibi MATLAB da matematik deyimler şart koşmakla beraber, diğer pek çok programlama dillerinden farklı olarak bu deyimler tümüyle matrisleri kapsar. Deyim oluşturma gurupları: Değişkenler, rakamlar, işletmenler ve fonksiyonlardır. MATLAB deyimleri ise komut ortamında yazılan her türlü komut satırlarıdır. Değişkenler: Deyimler içerisinde sayısal değerlerin yerini alan ifadelerdir. MATLAB bir değişken ile karşı karşıya geldiğinde, otomatik olarak bu değişkeni oluşturulur ve yeteri kadar bellek ayrılır. Eğer değişken daha önceden tanımlı ise MATLAB onun içeriğini değiştirir ve gerekirse yeni bellek ayırır. Örneğin, >>x =50 yazıldığında “x” adı altında bir değişken oluşturur ve 50 değerini bu değişkene atar. Diğer bilgisayar dillerinde olduğu gibi MATLAB’ın da değişken isimleri konusunda bazı kuraları vardır.
Belli Başlı Kurallar Aşağıda Olduğu Gibi Özetlenebilir. 1- Değişken isimleri küçük büyük harf kullanımına duyarlıdır. Buna göre aynı anlama gelen fakat farklı yazılan “orta”, “Orta”, “orTa” ve “ORTA” kelimeleri MATLAB için farklı değişkenlerdir. 2- Değişken isimleri en fazla 31 karakter içerebilir. Bundan fazla olanlar dikkate alınmaz 3- Değişken isimleri daima bir harf ile başlamalı ve bunu herhangi bir sayıda harfler, rakamlar veya alt çizgi ”_” izleyebilir. Noktalama işaretleri değişken isminde kullanılmaz. Çünkü bunların pek çoğunun MATLAB için bir anlamı vardır. Rakamlar: MATLAB rakamlar için artı veya eksi işareti ve tercihli ondalık noktası ile birlikte alışagelmiş ondalık işaretler sistemi kullanır. Bilimsel işaretler sistemi 10 tabanına göre kuvvet belirlemek için “e” harfi kullanır. Sanal rakamlar son takı olarak “ i ” veya “ j ” harfi kullanır. 3, -100, 0.0005, 9.53564 1.456e10, 2.5e-5, 10i, -3.4j, 3e5i
İşletmenler: MATLAB deyimler içerisinde alışageldik aritmetik işletmenler ve öncelik kuralları kullanır. İşlem Sembol Örnek Toplama, a+b + 2+3 Çıkarma, a-b - 5-2 Çarpma, a*b * 3*4 Bölme, a/b / 14/7 Üs alma, ab ^ 2^3 Parantez a*(b+c) ( ) 2*(3+5) Matematik işlemlerde öncelik hakkı: Tek bir matematiksel deyim içinde birden fazla işlem bir arada bulunabildiğine göre hangi işlemin öncelik hakkına sahip olduğunun bilinmesi yerinde olacaktır. Aşağıda MATLAB da kullanılan işlemlerde, işlemlerin öncelik listesi verilmiştir.
2. Üst alma, soldan sağa doğru 3. Çarpma ve bölme, soldan sağa doğru Öncelik İşlem 1. Parantez 2. Üst alma, soldan sağa doğru 3. Çarpma ve bölme, soldan sağa doğru 4. Toplama ve çıkarma, soldan sağa doğru Fonksiyon: MATLAB sin, abs, sqrt, ve Log gibi çok önemli fonksiyonları da içine alan çok sayıda elemansal matematik fonksiyon sağlar. Bu fonksiyonların bazıları aşağıdaki Tablo’da listelenmiştir. Fonksiyon Sembol Örnek Sinüs, sin() sin sin(pi) Cosinüs, cos() cos cos(pi) Tanjant, tan() tan tan(pi) Arksinüs, arcsin() asin asin(0) Arkkosinüs, arccos() acos acos(0) Arktanjant, arctan() atan atan(1) Fonksiyon Sembol Örnek Eksponensiyal, ex exp exp(2) Doğal logaritma ln(x) log log(10) 10 tabanlı logaritma log10 log10(10) Kare kök, x sqrt sqrt(25) Mutlak değer, |x| abs abs(3)
MATLAB’ DE DEĞİŞKEN TİPLERİ Double: Skaler veya vektörlerden oluşan sayısal değişkenleri ifade eder. Char: Tek bir karakter veya karakter grubundan oluşan skaler veya dizinleri ifade eder. MATLAB’ DE DEĞİŞKEN ATAMALARI Eşitlik İfadeleri ile Değişken Atamaları Bu şekildeki bir değişken atamasının genel hali, >> değişken = değer şeklindedir. Burada "değişken", herhangi bir karakter veya karakter grubu olabilir. "değer" ise, herhangi bir matematiksel ifade, bir karakter dizisi, bir sabit, bir matris veya bunların birden fazlasının matematiksel işlemler ile oluşturulmuş kombinasyonları olabilir.
Örnek: Skaler atama Örnek: >> a=5 X = 3 A = 5-5i B = A / 5 Bir değişkene bir değer atadıktan sonra aynı değişkene farklı bir değer atamak, o değişkenin ilk değerinin silinmesine, söz konusu değişkenin bundan sonraki işlemlerde yeni değeri ile işlem görmesine neden olmaktadır. Örnek: >> a=5 >>b=a+2 b = 7 >>a=10 >>b=a+2 b = 12
Bilgisayarda yazılımı Örnekler: Matematiksel yazılım Bilgisayarda yazılımı ab-c+d-6+da a*b-c+d-6+d*a b+c3-d/8-b2c b+c^3-d/8-b^2*c ??? Ödev: İşlemini bilgisayar dilinde kodlayınız
ÖZEL DEĞERLER VE KALICI DEĞİŞKENLER MATLAB'ın yapısında önceden tanımlanmış, kullanılacakları zaman tekrar tanımlanmalarına gerek olmayan ve herhangi bir anda kullanılmaya hazır bazı özel değerler bulunur. Örneğin: yarıçapı 2 birim olan bir kürenin alanını >> r=2; >> alan = 4 * pi * r^2 >> alan = 50.2655 >> date ans = 19-Mar-2003 >> clock ans = 2003 3 19 18 47 7.828
x değerini giriniz= 10 Uygulama Sorusu: BİR DEĞİŞKENE DIŞARIDAN BİR DEĞER ATANMASINI İSTEMEK “ input " fonksiyonu, komut penceresinde kullanıcıdan bir değişkene bir değer girmesini isteyen bir komut görüntüler ve kullanıcının bu değeri girmesini bekler, X=input('Bir değer giriniz= '); >> x=input('x değerini giriniz= ') x değerini giriniz= 10 x = 10 Uygulama Sorusu: Dışardan girilen 3 sayının ortalamasını bulan bir MATLAB programı yazınız.
MATEMATİKSEL VE MANTIKSAL OPERATÖRLER Program dallandıran bir çok yapıda, işlemler, sonucun "doğru" (1) veya "yanlış" (0) olması durumları ile kontrol edilir. MATLAB' da 'doğru' veya 'yanlış' ifadeleri ile sonuçlar üreten iki çeşit operatör vardır. Bunlar matematiksel ve mantıksal operatörlerdir. Matematiksel Karşılaştırma Operatörleri Bu operatörler iki değişkenin değer bakımından karşılaştırmasını yaparlar ve üretilen sonucun doğru (1) veya yanlış (0) durumuna göre sonuçlar üretirler. Genel kullanımları a1 işlem a2 şeklindedir. Burada a1 ve a2, aritmetik değerler, değişkenler veya karakter dizileri olabilir, "işlem" ise, söz ettiğimiz matematiksel kıyaslama operatörlerinden biri olabilir. Eğer a1 ve a2 arasındaki ilişki operatörün belirttiği şekilde ise sonuç, 1 değerini alır. Eğer operatörün belirttiği durumdan farklı bir durum söz konusu ise sonuç, 0 değerini alır. == Eşittir ~= Eşit değildir > Büyüktür >= Büyük veya eşittir < Küçüktür <= Küçük veya eşittir 5<6 → 1 5<=6 → 1 5==6 → 0 5>6 6<=6
Eşitlik durumlarında verilen işaret iki adet eşittir "==" işaretinden oluşur. Oysa değişken atamalarında kullandığımız eşittir "=", bir tanedir. Bu ikisi birbirlerinden farklı operatörlerdir. "==" operatörü, kıyaslama durumlarında kullanılır ve mantıksal bir sonuç üretir. "Eşit ise", "eşit midir?" şeklindeki durumlarda kullanılır. "=" işareti ise, bir değişkene bir değer atamada kullanılır, örneğin MATLAB komut penceresinde; 3=5 yazdığımızda; program hata üretir. Oysa 3==5 yazdığımızda bu “ 3, 5'e eşit midir? " anlamına gelir, kıyaslama yanlıştır ve MATLAB bu durum için “0” cevabını üretir. Yeni başlayanlar için bir karşılaştırma durumunda tek eşittir "=" işareti kullanmak, sık yapılan bir hatadır. >> 3 = 5 ??? 3=5 ! Error: Missing operator, comma, or semicolon. >> 3==5 ans = >> x=0; >> y=sin(pi); şeklinde yapılan iki değişken atamasını takiben yapılan x==y karşılaştırmasının sonucu olarak 1 cevabı beklenirken, 0 cevabı alınır. MATLAB, bu iki değeri farklı olarak algılamıştır. Çünkü MATLAB'da sin (pi) değeri 0'a eşit değildir, sin(pi), yuvarlamadaki farklılıktan ötürü 1.2246e-016 değerine sahiptir ve 0'a eşit değildir. Yani teorik olarak birbirine eşit iki değer, aslında farklı sayılara tekabül etmektedir.
Mantıksal Operatörler >>x=0; >>y=sin(pi); >>x==y ans = 0 Sık yapılabilecek diğer bir hata da karşılaştırma operatörlerinin aritmetik operatörlerden daha sonra değerlendirildikleri durumunu ihmal etmektir. Yani parantezlerden yararlanılmadığı durumlarda bile aritmetik işlemler, öncelikle yapılır. 2+8 > 8+3 Bu iki durumda da MATLAB'ın üreteceği cevap 0'dır. (2+8) > (8+3) Mantıksal Operatörler Bu operatörler, bir veya iki mantıksal anlamı olan ve mantıksal bir sonuç üreten operatörlerdir. Üç tane çiftli mantık operatörü vardır. Bunlar; "AND", "OR" ve "XOR" dur. Diğer bir mantık operatörü tekli yapıya sahip olan "NOT" operatörüdür. Çiftli yapıdaki operatörlerin genel kullanımı a işlem b şeklinde iken tekli bir operatör olan "NOT" genel kullanımı işlem a şeklindedir. Burada a ve b değişkenler iken işlem, aşağıdaki mantık operatörlerinden biridir, a ile b'nin arasındaki ilişki, operatörün belirttiği şekilde ise sonuç 1, eğer değilse sonuç 0 olur.
& | xor ~ Örnek: >> k=4; m=5; Operatörler Komut karşılığı İşlevleri & AND VE | OR VEYA xor XOR Özel Veya ~ NOT Değil Örnek: >> k=4; m=5; >> (k>6) and (m<8) HATALI YAZIM ??? (k>6) and (m<8) | Error: Missing operator, comma, or semicolon. >> (k>6) & (m<8) ans = 0<=x<9 ifadesinin MATLAB’deki karşılığı: (0<=x) & (x<9)
MATLAB’ de M-dosyası Programlama Genel tanıtımı : Bir senaryo dosyası (script file) özel bir görevi yerine getirmek için gerekli MATLAB komutlarının saklandığı bir metin programıdır. Başka bir ifadeyle; bir hesaplamayı gerçekleştirmek için yazılacak bir çok komutlar dizisi, komut penceresinden tek tek girmek yerine bir dosyada saklanır daha sonra bu dosya çalıştırılarak bu komutlar icra edilir. Bu dosyaların MATLAB’ın çalıştığı birimde "dosya_adı.m" uzantısıyla saklanmaları gerekir. Senaryo dosyalarının ( M-dosyalarının ) oluşturulması ve yazılması için MATLAB bir metin hazırlayıcısı (text editor) sunmaktadır. Bu senaryo dosyaları Windows’da Notepad gibi herhangi bir metin hazırlayıcısında da yazılabilirler. MATLAB metin hazırlayıcısı ya komut penceresinin üst kısmında yer alan “New M-file” düğmesi tıklanarak veya kısaca “File” menüsünden “New/M-file” ibaresini seçerek etkin hale getirilebilir.
M-dosyalarının Gerekliliği: Değişken sayısı fazla olması durumunda Akış diyagramlarının uygulanmasında Programdaki değişikliklerin kolayca yapılmasında Örnek: Dışardan girilen dairenin yarıçapına göre alan ve çevre hesaplayan program yazınız? R = input(' Dairenin yarıçapını giriniz = '); Alan=pi*R^2; Cevre=2*pi*R; Alan,Cevre
Uygulama : Dışarıdan girilen x ve y değerlerine göre aşağıdaki fonksiyonun değerini hesaplayan bir program yazınız. Uygulama : 1 ile girilen herhangi bir sayı arasındaki sayıların toplamını ve çarpımını hesaplayan bir program yazınız.
İlave örnek – Vücut Kütle İndeksinin (BMI) hesaplanması Kategori BMI aralığı – kg/m2 Ölümcül derecede zayıf 15’ten küçük Aşırı derecede zayıf 15.0 ila 16.0 Zayıf 16.0 ila 18.5 Normal (sağlıklı kilo) 18.5 ila 25 Kilolu 25 ila 30 Obez Sınıf I (Orta derecede obez) 30 ila 35 Obez Sınıf II (Aşırı derecede obez) 35 ila 40 Obez Sınıf III (Ölümcül derecede obez) 40’ın üstü
BMI Hesaplama agirlik = input('Kilogram cinsinden ağırlığınızı giriniz: '); boy = input('Metre cinsinden boyunuzu giriniz: '); adiniz = input('Adınız nedir? :','s'); % Burada 's' isim girileceğini belirtmektedir. BMI = agirlik/boy^2; disp(['Merhaba ',adiniz]); disp (['sizin Vücut Kütle Indeksiniz (BMI): ']), BMI
Kontrol yapıları IF Switch For Loop While Loops
IF Şartının Üç şekli vardır if Şartlı deyimi Bir mantıksal ifadeyi kontrol ederek bunun sonucuna göre mümkün seçeneklerden birini icra edebilen bir komuttur. IF Şartının Üç şekli vardır IF Şart 1. işlem 2. işlem 3. işlem : END IF Şart … ELSEIF … ELSE END IF Şart 1.işlem; ELSE 2. işlem END
if x>y sonuc=sqrt(x-y) elseif x==y sonuc=(x-y)^7 else sonuc=x+y end Örnek: Girilen (okutulan) x ve y değerlerine göre aşağıdaki sonuc değerini bulan programı yazınız x>y ise sonuc= (x-y) x=y ise sonuc=(x-y)7 Değilse sonuc=x+y x=input('x değeri='); y=input('y değeri='); if x>y sonuc=sqrt(x-y) elseif x==y sonuc=(x-y)^7 else sonuc=x+y end ÇÖZÜM:
Farklı bir şekilde BMI hesaplama – GUI prompt={'Kilonuzu Giriniz:','Boyunuzu Giriniz:','Adinizi Giriniz:'}; % Size ekranda sorulacak olan sorular. title='BMI Hesaplama'; % Diyalog ara yuzunun ustunde gosterilen ad. answer=inputdlg(prompt,title); agirlik = str2num(answer{1}); boy = str2num(answer{2}); % Ilk iki satirda girilen veriler rakam ve bunu yapan komut str2num. adiniz = answer{3}; BMI = agirlik/boy^2; disp(['Merhaba ',adiniz]); disp (['sizin Vücut Kütle ?ndeksiniz (BMI): ']), BMI
BMI hesabında sonucu aralıkla belirlemek agirlik = input('Kilogram cinsinden ağırlığınızı giriniz: '); boy = input('Metre cinsinden boyunuzu giriniz: '); adiniz = input('Adınız nedir? :','s'); % Burada 's' isim girileceğini belirtmektedir.
BMI = agirlik/boy^2; disp(['Merhaba ',adiniz]); if BMI<15, disp(['Cok zayifsiniz']), BMI elseif (BMI>=15)&(BMI<18.5), disp(['Zafiyfsiniz']), BMI elseif (BMI>=18.5)&(BMI<25), disp(['NORMALSINIZ']), BMI elseif (BMI>=25)&(BMI<30), disp(['Kilolusunuz']), BMI elseif (BMI>=30), disp(['Obezsiniz']), BMI end
1 < = x < 10 10 < = x Ödev: Dışarıdan girilen x değerlerine göre aşağıdaki fonksiyonun değerini hesaplayan bir program yazınız. 1 < = x < 10 10 < = x
Disp: Ekrana mesaj veya değer yazdırmak için kullanılan komuttur. Disp(‘yazdırılacak mesaj’); Disp(değişken adı); Örnek: Girilen iki sayının oranını bulan ve payda sıfır girildiğinde ekrana “üzgünüm sıfıra bölüm hatası var” mesajı yazdıran program clear N = input(‘payı giriniz: '); D = input(‘paydayı giriniz: '); if D==0 Disp(‘üzgünüm, sıfıra bölüm hatası var‘) else oran = N/D end
Örnek: Girilen ay’a göre gün sayısını hesaplayan program clear ay = input( ' Kaçınçı ayın gün sayısını öğrenmek istiyorsunuz (1-12)= ' ); if ay==1 | ay==3 | ay ==5 | ay==7 | ay==8 | ay==10 | ay==12 disp(‘Bu Ay 31 günden oluşur‘) elseif ay==2 disp(' Bu Ay 28 günden oluşur ') else disp(' Bu Ay 30 günden oluşur ') end
Uygulama: Dışardan girilen bir derse ait ödev, quiz ve 1.vize notlarını alıp ortalamasını hesaplayan ve harfli sisteme göre GENEL VİZE notunu bulan bir program yazınız. Not: Şart Harfli Not --------- ------------ Ortalama >= 90 A 75 <= Ortalama < 90 B 60 <= Ortalama < 75 C 45 <= Ortalama < 60 D Diğer F
Switch Şartlı Deyimi Switch (durum) case (durum1) işlemler case (durum2) . otherwise ►isteğe bağlı end
Örnek: 1 ile 10 arasında girilen sayıların tek ya da çift olduğunu ekrana yazdıran programı yazınız sayi=input(‘1 ile 10 arasında bir sayı giriniz:’); switch (sayi) case {1,3,5,7,9} disp(‘Bu sayı Tektir’) case {2,4,6,8,10} disp(‘Bu sayı Çifttir’) otherwise disp(‘Sayı 1 ile 10 arasının dışında’) end
Uygulama : clear ay = input('bir ay numarası giriniz (1-12)='); Girilen ay numarasına göre, o ayın gün sayısını veren programı switch komutu kullanarak yazınız. clear ay = input('bir ay numarası giriniz (1-12)='); switch ay case {1,3,5,7,8,10,12}; disp('Bu Ay 31 günden oluşur') case {2} disp('Bu Ay 28 günden oluşur') case {4,6,8,9,11}; disp('Bu Ay 30 günden oluşur') end
FOR DÖNGÜSÜ Bir çok uygulamada belirli işlemlerin tekrar tekrar gerçekleştirilmesi gerekir. Programlamada bu işlemler grubunu çok sayıda tekrar etmek imkanı sağlayan yapılara ÇEVRİM, DÖNGÜ veya LOOP denir. ►Çevrim, bir tekrarlı işlem yapısıdır. Çevrimdeki işlem sayısını önceden belirleyerek ve bu sayıya ulaşıp ulaşmadığını bir sayaç ile denetleyerek gerçekleştirilen çevrim yapıları Çevrimin sona ermesini bir koşula bağlı olarak kontrol eden çevrim yapıları
for döngüsünün genel yapısı for döngü değişkeni = başlangıç : bitiş komutlar end Örnek: 1’den 20’ye kadar sayıların toplamını bulan program clear toplam = 0 ; for x = 1:20 toplam = toplam + x ; end toplam
Örnek:1 ile girilen herhangi bir sayı arasındaki sayıların toplamını ve çarpımını hesaplayan bir program yazınız. clear sayi=input(‘lütfen bir sayı giriniz=‘) toplam=0 ; carpim=1 ; for i=1:sayi toplam=toplam+i ; carpim=carpim*i ; end toplam carpim
fprintf Fonksiyonu Genel kullanımı: fprintf (‘ekrana basılacak açıklama %f \n’, deger) Burada %f : Değerin reel sayı olduğunu gösterir \n : Bir satır atlatır deger : Ekrana yazılması istenen sayısal değişkenin adı Diğer yazım biçimleri: %g : Tamsayı değeri basar %e : Üstel değer basar
Uygulama: fprintf(‘For döngüsü testi\n'); for i = 4:-1:1 fprintf('For döngüsü testi. i = %g\n',i); end fprintf('\n Döngünün sonu.\n');
While Döngüsü Önceden belirlenmiş belli bir durum gerçekleşinceye kadar gereken sayıda tekrar edilen ifadeleri içerir. Genel Kullanımı: While durum ifade_1 ifade_2 ifade_n end
Örnek: a=5 while a<10 a=a+1 end Uygulama Ekrana adınızı ve soyadınızı 10 kez yazan bir programı WHILE döngüsü kullanarak yazınız a=0 while a<10 a=a+1; disp(‘Bülent Çakmak') end
Break ifadesi FOR ve WHILE döngülerine ilaveten bir program akışını kontrol edebilmenin diğer bir yolu break ifadesini kullanmaktır. Break ifadesini döngü gövdesi içerisinde kullanmak, döngünün durmasını ve döngüden sonra gelen ilk ifade veya komutun işletilmesini sağlar. Örnek: for j=2:6 if j==4 break end fprintf(‘j= %g \n”, j) disp(‘döngü sonlandırıldı’)
İçiçe FOR döngüleri clear Toplam=0 for i = 1:5 Toplma = 0 for j = 1:5 toplam = toplam + j end Carpım = toplam * i
Örnek: Çarpım tablosunu veren bir program yazınız for a=1:10 for b=1:10 carpim=a*b; fprintf(‘%d * %d = %d\n’, a, b, carpim) end
İçiçe while döngüsü i=7; while i>5 x=input(‘x değerini giriniz=‘); if x<=0 break end while x>1 if mod(x,2)==0 x=x/2; else x=3*x+1; i=i-2; fprintf(‘Bravo, programı sonuçlandırdınız:%g’, x)
Uygulamalar Uygulama 1: Dışardan girilen girilen iki sayının farkını ve bölümünü hesaplayan bir MATLAB programı yapınız.
Uygulamalar Uygulama 2: Kenar Uzunlukları dışardan girilen bir ABC üçgenini kenarlarına göre inceleyen programın algoritmasını MATLAB’de kodlayınız A1: Basla A2: A,B,C değerlerini gir A3: A=B ise A4’e git değilse A5’e git A4: B=C ise A6’ya git değilse A8’e git A5: A=C ise A8’e git değilse A7’e git A6: ‘Üçgen Eşkenardır’ A7: B=C ise A10’a git, değilse A9’a git A8: ‘Üçgen İkizkenardır’ A9: ‘Üçgen Çeşitkenardır’ A10: ‘Üçgen İkizkenardır’ A11: Son
Uygulama: Ax2+Bx+C=0 ikinci derece denklemin köklerini hesaplayan aşağıdaki algoritmayı MATLAB’de programlayınız A1: Başla A2: A,B,C değerlerini gir A3: delta=B^2-4ac değerini hesapla A4: delta<0 ise ‘kökler kompleks’ yaz, değilse A5’e git A5: delta>0 ise ’kökler reel’ yaz, değilse ‘katlı kök hali’ yaz A6: A7: A8: X1 değerini yaz A9: X2 değerini yaz A10: Son
Çözüm: a=input(‘x^2 li terimin katsayısını giriniz=‘); b=input(‘x li terimin katsayısını giriniz=‘); c=input(‘Sabit terimi giriniz=‘); delta=b^2-4*a*c; if delta<0 disp(‘kökler kompleks’); elseif delta>0 disp(‘kökler Reel’) elseif delta ==0 disp(‘katli kök hali’) end x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); fprintf(‘1.kök:%f\n’, x1); fprintf(‘2.kök:%f\n’, x2);
MATLAB’de Karakter Tipinde Değişken Girişi: k=input(‘Açıklama: '); Komutu ile k değişkenine sadece sayısal değerler girebiliriz. Bu k değişkeni bir karakter olduğunda ve bu değişkene komut penceresinde bir karakter değer girmek istediğimizde değeri iki tırnak içinde girmek zorundayız. Bu durumdan kurtulmak için MATLAB’de karakter tipindeki değişkenin okutulması için şu yapı kullanılır: Degisken_adi=input(‘Açıklama: ', 's'); Değişkenin karakter tipinde olduğunu gösterir
karakter=input('Karakteri giriniz: ', 's'); ksayi=0; Örnek: Karakter değerler okuyan ve bir noktaya rastlayınca toplam karakter sayısını veren programı MATLAB’de yazınız. karakter=input('Karakteri giriniz: ', 's'); ksayi=0; while karakter ~= ‘ . ' karakter=input('Karakteri giriniz:', 's'); ksayi=ksayi+1; end fprintf('Toplam karakter sayısı=%g', ksayi)
Örnek 1: PROGRAMLAMADA DİZİ KAVRAMI Bir değişken içerisinde birden çok veri numaralandırılarak tek bir isim altında saklanmasına DİZİ denir. Dizi içinde aynı isim altında çok sayıda veri olduğu için bunları birbirinden ayırt etmek için İNDİS adı verilen bir bilgiye ihtiyaç vardır. Örnek 1: A Dizisi 23 45 -1 1.24 78 A(1) A(2) A(3) A(4) A(5)
Örnek 2: İKİ BOYUTLU DİZİ B DİZİSİ 1 2 3 4 23 12 75 48 3 36 15 45 4 55 13 1 2 3 B(1,1)=23, B(1,2)=12, B(1,3)=75, B(1,4)=48 B(2,1)=3, B(2,2)=36, B(2,3)=15, B(2,4)=12 B(3,1)=45, B(3,2)=4, B(3,3)=55, B(3,4)=13
Tek boyutlu bir dizinin değerlerinin girilmesi (okutulması) Aşağıda 1x5 boyutunda (1 satır ve 5 sütun) bir dizinin elemanlarını giren MATLAB programı aşağıda verilmiştir for i=1:5 fprintf('A(%d)=',i) A(i)=input(‘ '); end A
Örnek: N elemanlı bir dizinin N değeri ve elemanları okutulacak (dışardan girilecek) ve bu vektörün normunun karesi (elemanlarının karelerinin toplamı) bulunacaktır N=input('N deðerini giriniz='); toplam=0; for i=1:N fprintf('A(%d)=',i); A(i)=input(''); end toplam=toplam+A(i)*A(i); fprintf('A matrisinin normunun karesi=%f', toplam)
İKİ BOYUTLU BİR DİZİNİN DEĞERLERİNİN GİRİLMESİ (OKUTULMASI) Aşağıda 2x3 boyutunda (2 satır ve 3 sütun) bir dizinin elemanlarını giren MATLAB programı aşağıda verilmiştir: for i=1:2 for j=1:3 fprintf('B(%d,%d)=',i,j) B(i,j)=input(''); end B
Uygulama 1 Elemanları dışardan girilen iki boyutlu bir dizinin programını yazınız (değerler aşağıda verilmiştir) 12 21 23 90 34 67 45 89 Uygulama 2 0 ile 50 arasında 4 artımlı bir tek boyutlu A dizisi oluşturunuz
VEKTÖRLER (DİZİLER) ve MATRİSLER MATRİSLE, iki boyutlu DİZİLER (VEKTÖRLER) olarak düşünülebilirler: Böyle dikdörtgen bir tabloya, mxn matrisidir denir. Burada, m sayısına matrisin satır sayısı, n sayısına matrisin sütun sayısı denir. Eğer, m=n ise matris kare matris olarak adlandırılır, ve A matrisi, n. mertebedendir denir.
Örnek: Verilen A ve B matrislerini düşününüz. A matrisi 2x3 ve B matrisi ise 2x2 matristir. a22=5 ve b12=2 Bir matrisin veya vektörün boyutlarını tespit etmek için aşağıdaki MATLAB komutu kullanılır [m,n]=size(A) m = 3 n = 2 Burada m: satır sayısını n: sütün sayısını göstermektedir
MATRİSLERLE İŞLEMLER Matrislerin kendilerine ait bir cebirleri vardır. Özellikle matrislerin aşağıda sıralanan dört işlemleriyle ilgileneceğiz. Bir skalerle çarpım Matris toplama Matris çıkarma Matris çarpımı Matris transpozu İleri MATRİS işlemleri için MATLAB hazır fonksiyonları kullanılacaktır
Örnek: Matrislerle Skaler Çarpım Her hangi bir matris, bir c skaleriyle çapılabilir. Sonuçta, matris cA, Örnek: Aşağıda verilen Matrisin 2 ile çarpımı sonucunu veren MATLAB programı A=[2 3 ; 1 4]; [m,n]=size(A); for i=1:m for j=1:n C(i,j)=2*A(i,j); end C
ÖRNEK: A=[1 3; 4 2]; for i=1:2 for j=2:2 A(i,j)=3*A(i,j); end A Elemanları dışardan girilen 2x2’lik bir Matrisin 2. sütununu 3 ile çarpıp yeni bir Matris elde eden bir MATLAB programı yazınız A=[1 3; 4 2]; for i=1:2 for j=2:2 A(i,j)=3*A(i,j); end A
Ödev: 3x3’lük bir matris dışardan girilerek (okutularak) bu matrisin ana köşegen elemanlarının toplamını bulan programı yazınız.
Matrislerde Toplama ve Çıkarma İşlemi İki matrisin toplanabilmesi veya çıkarabilmesi için boyutlarını yani satır ve sütün sayısını eşit olmalıdır. İki matrisin toplamı MATLAB programı A=[2 3; 1 4]; B=[3 6; 4 5]; for i=1:2 for j=1:2 C(i,j)=A(i,j)+B(i,j); end C
Örnek Matrislerde Çarpma İşlemi A ve B gibi iki matrisin çarpılabilmesi için A matrisinin Sütun sayısının B matrisinin satır sayısının eşit olması gerekmektedir. A matrisi mxn boyutunda, B matrisi nxk olmak üzere Bu çarpma işlemi sonucunda elde edilecek C matrisinin boyutu mxk olacaktır. Örnek clear clc A=[1 2 1;0 3 -1]; B=[1 2; 1 5;2 3]; for k=1:2 for i=1:2 C(i,k)=0; for j=1:3 C(i,k)=C(i,k)+A(i,j)*B(j,k); end C