Matlab Temel Bilgisayar Bilimleri (MATLAB) Ders Notu - Övün Işın MATLAB’A GİRİŞ • MATLAB (MATrix LABoratuvary); ilk defa 1985 yılında C. B. Moler tarafından geliştirilmiş ve özellikle de matris esaslı matematik ortamında kullanılabilen etkileşimli bir paket programlama dilidir. • FORTRAN dilinde uzun zaman alan programlama işlemlerine bir alternatif olarak çıkmıştır. • İlk sürümleri FORTRAN diliyle yazılmış olmakla beraber son sürümleri C dilinde yazılmıştır. Başlıca kullanım alanları Matematik ve hesaplama işlemleri, algoritma geliştirme Modelleme, benzetim ve prototiplime Verilerin analizi, incelenmesi ve görüntülenmesi Bilimsel ve mühendislik alanda grafik işlemleri Grafiksel kullanıcı ara yüz yapısını içine alan uygulama geliştirme Ara yüz Çalışma alanı (Workspace) Komut Geçmişi (Comand History) Girilmiş olan tüm değişkenler ve özellikleri Komut satırından yazılan her şey doğru veya yanlış olsun hafızada tutulur ve burada görüntülenir. Bu bölümde daha önce yazılmış komutların üzerine çift tıklanarak komut yeniden işleme konur. Komut Penceresi (Comand Window) Enter: Komut satırında komut varsa komutu uygular ve bir alt satıra geçer Esc Delete Komut satırında yazılanı iptal eder • Komut satırında komuttan önce veya sonra boşluk bırakılmasının bir önemi yoktur. • Komut satırının sonu yoktur. • Komut satırından daha önceki satırlara erişim ve düzenleme imkânı yoktur. Aşağı (down) ve yukarı (up) yön tuşları kullanılarak önceki veya sonraki komut satırları o andaki komut satırına çağrılarak düzeltme yapılır. Komut satırı A= 11 12 13 21 22 23 Büyük Küçük Harf Duyarlılığı Matlab büyük ve küçük harf karakterlerine duyarlı bir dil içerir. Örnek: toplam=0 Toplam=1 TOPLAM=2 Burada ‘toplam’ kelimesi üç farklı değişkeni ifade eder. Yani bir isme birden fazla değer atamak mümkündür. Genel Komutlar who: kullanıcı tarafından tanımlanan değişkenlerin isimlerini listeler whos: kullanıcı tarafından tanımlanan değişkenlerin isimlerini ve boyutlarını listeler. help: komut penceresinde yardım konularını listeler. Örnek: help sin clc: çalışma ortamını (komut penceresi) temizler. date: sistem tarihini gösterir. save: .mat uzantılı dosya saklar. quit veya exit: Matlab’i sonlandırır. Hata Mesajı Komut hatalı yazıldığında ??? Undefined function or variable ‘hatalı komut' şeklinde verilir. Örnek: date yerine deta yazılsın ve enter tuşuna basılsın gelecek olan mesaj ??? Undefined function or variable ‘deta' şeklindedir. Matlab’de Kullanılan Belli Başlı İşaretler Vektörleri ve Matrisleri biçimlendirmek için kullanılır. [ ] : Köşeli Parantez Örnek: A=[11 12 13; 21 22 23] 2 satır 3 sütundan oluşan bir matrisi gösterir. Matris oluşturmada ‘;’ noktalı virgül, bir satırı sona erdirip bunu izleyen satırın oluşturulmasını sağlar. Aritmetik ifadelerde işlem önceliklerini belirtmek, ( ) : Normal Parantez k=x + 2.(y+z) Fonksiyon argümanlarını kapatmak, y=sin(x) için kullanılır. Kesirli sayı ayırma işareti olarak kullanılır. . : Nokta 3.14 veya .314e1 Dizi işlemlerinde eleman elemana çarpma, bölme ve üs almada kullanılır. (0,314x10) Kullanış biçimi .* ./ .\ .^ Örnek: C=A./B elemanları C(i,j)=A(i,j)/B(i,j) olan bir matristir. Tek bir satıra sığmayan ifadelerin bir alttaki satırdan devam edeceğini gösterir. ... : 3 nokta Bir satırda birden fazla bildirim yazılması halinde bildirim komutlarını ayırmak için kullanılır. , : Virgül ; : Noktalı virgül Bir bildirimle elde edilen sonuçların program icrası sonunda ekranda görüntüle nmesini önler. Açıklama satırları için kullanılır. % : Yüzde Sütun işareti olarak, indislerde ve FOR iterasyonunda kullanılır. : İki Nokta üst üste Belli başlı kullanım biçimleri J:K J’den başlayarak 1 er 1 er K’ya kadar artan bir dizi. [J, J+1, ......., K] J:C:K J ile başlayan C aralığında artarak K’ya kadar giden dizi. [J, J+C, J+2C, ... , K] İki nokta üst üste (:) işareti aynı zamanda vektörlerin ve matrislerin seçilen satırlarını, sütunlarını ve elemanlarını ayırmak için kullanılır. A(:) tek sütun olarak A’nın bütün elemanlarını gösterir. A(:,j) A’nın J’ninci sütununu gösterir. A(:,J:K) A’nın J’den itibaren 1 er 1 er artarak K’ya kadar giden elemanlarını gösterir. Text şeklindeki aktarım işlemlerinde kullanılır. ‘ : Tırnak Örnek : ‘Bir sayi giriniz’ Matrislerin tarnspozesini almak için kullanılır. Örnek: X’ X matrisinin transpozesidir. Diziler Matlab’in en temel işlem elemanı ve veri türü dizilerdir. En genel tanımı ile sayısal veya metinsel değerler topluluğudur. Biz Matlab’de sayısal dizileri ele alacağız. Sayısal diziler; 1. Skaler (1x1 dizisi a=3,b=-2,c=12.55 veya d=1+2*i gibi), 2. Vektör (mx1 yani sütun vektörü, 1xn yani satır vektörü) 3. Matrisler (mxn yani m satır sayısı n sütun sayısı) olmak üzere üçe ayrılır. Vektör Oluşturma: 1. Doğrudan […] (Köşeli Parantez) Kullanarak: 2. Eşit Aralıklı Elemanlar Kullanarak: : (iki nokta üst üste) işareti Kullanarak: Matrisler ve Temel Matris İşlemleri Matrislerin Çarpımı C=A*B a ve b matrislerini çarpımı olan c matrisinin 1. satır 1. sütun elemanı; 1. satır 1. sütun elemanı=2*4+7*12+9*7=155 (a matrisinin 1. satır elemanları ile b matrisinin 1. sütun elemanlarının çarpımının toplamı) Bir Matrisi Matlaba Yüklemek A= 2 7 9 1 -3 6 0 5 7 B= 4 7 8 12 14 5 7 9 11 İki matrisin çarpımının yapılabilmesi için birinci matrisin satır sayısının ikinci matrisin sütun sayısına eşit olması gerekir. Karşılıklı Elemanların Çarpımı Aynı satır ve sütun indisli elemanlar çarpılır. C=A.*B C matris çarpımının 1. satır 1. sütun elemanı; a matrisinin 1. satır 1. sütun elemanı ile b matrisinin 1. satır 1. sütun elemanının çarpımına eşittir. Matrisin Transpozesi Bir matrisin transpozesi satırlar ile sütunların yer değiştirdiği yeni bir mat ristir. D=A’ A= 2 7 9 1 -3 6 0 5 7 2 7 1 -3 0 5 - + Matrisin Kuvvetini Alma Bir A matrisinin kuvvetini almak için A.^p deyimi kullanılır. Bu işlem a matrisi içindeki her bir elemanın teker teker p. kuvvetini alır. Burada A bir kare matris, p ise skaler bir sayıdır. Bir kare matrisin karesi yani A^2 işlemi A*A işlemine denktir. Burada matrisin karesi matrisin 2. kuvvetini almaktan farklıdır. Aynı şekilde A^4 işlemi de A*A*A*A işlemine denktir. Bir matriste üs alma işlemi yapılabilmesi için satır sayısının sütun sayısına eşit yani kare matris olması gerekir. Matrisin Determinantı Saruss Kuralı: det(A)=[(2*(-3)*7)+(7*6*0)+(9*1*5)]-[(0*(-3)*9)+(5*6*2)+(7*1*7)]=-106 Bu kural sadece 3. mertebeden yani 3x3 boyutundaki matrisler için geçerlidir. Matrisin Tersi (Invers) Bir matrisin tersinin yani inversinin bulunabilmesi için; 1. Matris kare matris olmalı, 2. Matris tekil (singular) olmamalı yani matrisin determinantı 0’dan farklı olmalı. Eğer A matrisinde det(A)=0 ise A matrisi kare matris olsa dahi inversi (tersi) yoktur. Diğer işlemler A(:,1) :sadece 1. sütunu çağırır. A(1,:) :sadece 1. satırı çağırır. A(:,1).*A(:,2) :1. ve 2. sütunun elemanter çarpımını yapar. 5*A(:,1) :1. sütun elemanlarını 5 ile çarpar. A(1:2,:) :1. satırdan 2. satıra kadar olan elemanları listeler. A(:,1:2) :1. sütundan 2. sütuna kadar olan elemanları listeler. 2*A(1,2) :1. satır 2. sütun elemanını 2 ile çarpar. A(:,1)’ :1. sütunun transpozesini alır yani satıra dönüştürür (Satır vektörü). A(1,:)’ :1. satırın transpozesini alır yani sütuna dönüştürür (Sütun vektörü). A(2,3)=3 :6 olan 2. satır 3. sütun elemanını 3 ile değiştirir. A(:,2)=[ ] :2. sütunu siler. A(:,[1 3])=[ ] :1 ve 3. sütunu siler. Temel İstatiksel İşlemler Yapılan deneysel çalışma, anket ve gözlemlerin analiz ve değerlendirmesi istatiksel analiz olarak bilinir. Temel veri analiz komutları aşağıda verilmiştir. max :Verilerin en büyük değerini bulur. min :Verilerin en küçük değerini bulur. length :Veri sayısını bulur. sum :Verilerin toplamını hesaplar. mean :Verilerin aritmetik ortalamasını hesaplar. sort :Verileri azalan sırada hesaplar. A= 2 7 9 1 -3 6 0 5 7 İstatiksel işlemlerde kullanılan komutlar matrislerde sütun sütun işlem yapar. Örneğin sum(A) işlemi A matrisinin sütunlarını ayrı ayrı toplar. A matrisinin 1. satır elemanlarının toplamı bulunmak istiyorsa; Örnek: x=5*log(2) değişken sayı Operatör (Matematiksel) fonksiyon log(2) Burada sadece fonksiyon var. length komutu matrisin sütun sayısını verir; İfadeler Matlab diğer programlama dillerinde olduğu gibi giriş olarak çeşitli matematiksel ve metinsel ifadeler sunar. Bu ifadeler 4 ana madde altında incelenir. 1. Sayılar (Numbers) 2. Değişkenler (Variables) 3. Operatörler (Operators) 4. Fonksiyonlar (Function) 1. Sayılar (Numbers) • Pozitif (+), negatif (-) reel veya ondalık notasyonda gösterir. • Ondalık sayılar , (virgül) yerine .(nokta) ile gösterilir. • Bilimsel notasyonda e harfi 10’nun kuvvetini temsil eder. • Karmaşık sayılarda sanal (imajiner) kısımlar sonlarına i veya j eki alırlar. Örnekler: 3 +7 -56 9.639 1.66021e-20 3e-2=0.003 1+3*i veya 1+3i 2. Değişkenler (Variables) Matlab yeni bir değişken adı belirlendiğinde kendiliğinden değişkeni oluşturur ve uygun şekilde yerleştirir Eğer aynı değişkenden daha önce varsa onun içeriğini değiştirir. • Değişken adları kesinlikle bir harf ile başlamalıdır. Onu izleyen karakterler harf, rakam veya alt çizgi (_)’den oluşabilir. Boşluk, nokta (.), çizgi ( -) kullanılmamalıdır. • Değişkenlerin sağ tarafında eşittir (=) işareti bulunur. X=1 • Komut satırı işaretinden (>>) sonra değişken adına nereden başlandığı, değişken adından veya eşittir (=) işaretinden sonra ve değerler arasında ne kadar boşluk verildiğinin bir önemi yoktur. Örnek: >> k = 25 * 4 • Değişken adları en fazla 63 karakter uzunluğunda olur. 63 karakteri geçtiğinde ilk 63 karakter alınır. • Değişken adlarında büyük veya küçük olsun Türkçe karakterler kullanılmaz. • Değişken adlarında karmaşık sayıların sanal kısımlarını ifade eden i ve j gibi karakterlerinde kullanılmamasına özen gösterilmelidir. • Bir değişkenin içeriğini görmek için değişken adı yazılıp enter tuşuna basılır. • Bir değişkeni silmek için clear değişken adı kullanılır. >>clear x Değişkenlerin tamamını silmek için >>clear all • Bir değişken ismi kullanılmadan bir matematiksel işlem yapıldığında yani işlemin sonucu bir değişkene atanmadığında Matlab sonucu otomatik olarak ans diye bir değişkene atar. Örnek: >>100/2 ans= 50 >>ans*ans ans= 2500 >>ans+10 ans= 2510 Değişkenleri Saklama ve Tekrar Çağırma Matlab’den çıkıldığında tüm değişkenler silinir. Dolayısıyla oturum süresince komut satırından girilen tüm değişkenlere erişmek için bu değişkenleri saklamak gerekir. • Tüm değişkenler topluca. mat uzantılı bir dosyada saklanır. >>save dosya adı • Saklanan değişkenleri başka bir oturumda tekrar geri getirmek yani yüklemek için load komutu kullanılır. >>load dosya adı Operatörler Aritmetik Operatörler İlişkisel Operatörler Mantıksal Operatörler Sayısal hesaplamalar yapar. Nicelik karşılaştırmaları yapar. Lojik işlemlerde kullanılır. Özel Sabit ve Değişkenler 3. Operatörler (Operators) Not-a-Number Rakam değil 0/0’da olduğu gibi tanımlanmamış işlemlerde ortaya çıkar. NaN Sonsuz ( ?) değeri için atanmış bir değişkendir 0’a bölme işlemlerinde çıkar inf i, j ? (3,141592653589793) pi 1 -Aritmetik Operatörler İlişkisel Operatörler • Karşılaştırma işlemi sadece eleman elemana yapılabilir. • Karşılaştırma işlemi yani verilen bir ilişki doğru ise sonuç 1, yanlış ise sonuç 0 ile gösterilir. • Karşılaştırılan dizilerin eşit uzunlukta olması gerekir Sağa bölme 6/3 sonuç 2 / Çarpma * Çıkartma - Toplama + Dizilerde eleman elemana çarpma .* Atama = Üs alma ^ Sola bölme 6\3 sonuç 0,5 \ Dizilerde üs alma .^ Dizilerde eleman elemana sola bölme .\ Dizilerde eleman elemana sağa bölme ./ Büyük eşit >= Küçük eşit <= Büyüktür > Küçüktür < Eşit değildir ~= Eşittir == Mantıksal Operatörler ~ NOT (Değil) P bir dizi ise ~P, P ile aynı boyda yeni bir dizi üretir. Bu yeni dizi P’nin elemanları 0 değil ise 0‘lardan; P’nin elemanları 0 ise 1’lerden oluşur. & AND (ve) P ve Q birer dizi ise P&Q, P ve Q ile aynı boyda yeni bir dizi üretir. Bu yeni dizi P ve Q dizlerinin her ikisinde de 0 olmayan elamanlar için 1’lerden, 0 olan elemanlar için ise 0’lardan oluşur. | OR (veya) P ve Q birer dizi ise P|Q, P ve Q ile aynı boyda yeni bir dizi üretir. Bu yeni dizi P ve Q dizlerinde en az bir eleman 0 değil ise 1’lerden, P ve Q’da her ikisi de 0 ise 0’lardan oluşur. |x| (Mutlak Değer) : abs(x) x (Karekök) : sqrt(x) e x (üstel) : exp(x) lnx (e tabanına göre logaritma) : log(x) logx (10 tabanına göre logaritma) : log10(x) x n (üs alma) : x^n sinx : sin(x) cosx : cos(x) tanx : tan(x) cotx : cot(x) secx : sec(x) cosecx : csc(x) 4. Fonksiyonlar Matlab standart olarak temel matematiksel fonksiyonların birçoğunu sağlar. Matlab’de fonksiyon adları küçük harf duyarlıdır. Öncelik Sırası İşlem 1 2 3 4 En içten başlayarak en dış paranteze doğru tümparantez işlemleri Soldan sağa doğru tüm üstel işlemler Soldan sağa doğru tüm çarpma ve bölme işlemleri Soldan sağa doğru tüm toplama ve çıkarma işlemleri Ters trigonometrik Fonksiyonlar arcsinx : asin(x) arccosx : acos(x) arctanx : atan(x) arccotx : acot(x) arcsecx : asec(x) arccosecx : acsc(x) Matlab’de trigonometrik fonksiyonlarda derece yerine radyan kullanılır. 180 o = ? radyan 30 o =30*pi/180 Temel Aritmetik İşlemlerde Öncelik Sırası İşlem önceliğinde çarpmanın bölmeye ve toplamanın da çıkartmaya göre kendi aralarında öncelikleri yoktur. 2+3*4^2 1 2+3*16 2 2+48 3 2*((2-3)-1/2)^3 1 2*(-1-1/2)^3 2 2*(-1-0.5)^3 3 2*-1.5^3 4 2*-3.3750 5 (2-4).(5-3) 2-4*5-3 1 2-20-3 2 Sonuç:-21 (2-4)*(5-3) 1 2 Sonuç:-4 Hesap işlemlerinde bir anlamda sonucu garantiye almak için parantez kullanmayı gerektirmeyen durumlarda bile parantez kullanmanın faydası vardır. 15/4+7 ------->(15/4)/7 Üs alma işlemlerinde hata yapmamak için parantez kullanılmalıdır. 2^1/2-------->2^(1/2) Sonuç:1 Sonuç:1.4142 (sin4x)-(2cosx) 3 ifadesinin değerini x=45 o için bulunuz. ( ) x x y 2 cos 1 1 sin 2 - - = İfadesinin değerini x=35 o için bulunuz. Başla ifad e deyim Bitir doğru yanlış Komutlar Giriş Komutu input Genel yazımı; değişken=input (‘değişken:’) x=input (‘x:’) Eğer gerekli görülürse parantez içinde bir açıklama da yapılabilir. x=input (‘pozitif bir sayi giriniz:’) Koşul Deyimleri • if • else (if else) • elseif Genel yazımı; if if ifade (ilişkisel ifade yani nicelik karşılaştırması ile sınama yapılması) deyim (aritmetik işlemler veya değişik atama işlemleri olabilir) end Örnek: 50’den küçük bir sayı girilmesi halinde girilen sayıyı 5 ile çarpıp sonucu yazdır an matlab programı a=input (‘Bir sayi girin: ’) if a<50 sonuc= a*5; end sonuc Başla ifade Deyim_1 Bitir doğru yanlış ifade doğru yanlış Deyim_2 İç içe if Yapısı n tane if......end yapısı ile n tane sınama yapılabilir. Yukarıdaki örneğe; a>=50 için a/5 işlemini ilave edelim. a=input (‘Bir sayı girin: ’) if a<50 sonuc=a*5; end if a>=50 sonuc=a/5; end sonuc if ifade_1 İç içe if kullanıldığında; deyim_1 if ifade_2 deyim_2 end end if a<50 sonuc=a*5; if a>=50 sonuc=a/5; end end sonuc Başla ifade Deyim_1 Bitir doğru yanlış Deyim_2 Başla ifade Deyim_1 Bitir doğru yanlış Deyim_3 ifade doğru yanlış Deyim_2 Genel yazımı; else if ifade deyim_1 else deyim_2 end a=input (‘Bir sayi girin: ’) if a<50 sonuc=a*5; else sonuc=a/5; end sonuc Genel yazımı; elseif if ifade_1 deyim_1 elseif ifade_2 deyim_2 else deyim_3 end Örnek: Girilen bir sayı 50’den küçük ise (a<50), girilen sayıyı 5 ile çarpsın (a*5), girilen sayı 50’ye eşit ve büyük ancak 100’den küçük ise (50<=a<100) girilen sayıya 5 eklesin (a+5), girilen sayı 100’e eşit ve büyükse (a>=100) girilen sayıyı 5’e bölsün (a/5). a<50-----------------> a*5 if 50<=a<100---------> a+5 elseif a>=100---------------> a/5 else a=input (‘Bir sayi girin: ’) if a<50 sonuc=a*5; elseif a<100 sonuc=a+5; else sonuc=a/5; end sonuc Sonuç olarak; if------------------->1 if-else------------->2 if-elseif-else------>3 sınama işlemi yapılabilir. Eğer 3’den fazla sınama işlemi varsa elseif komutları arka arkaya kullanılarak işlemler yürütülür. if ifade_1 deyim_1 elseif ifade_2 deyim_2 elseif ifade_3 deyim_3 . . . . elseif ifade_(n-1) deyim_(n-1) else deyim_n end Başla Deyimler Bitir doğru yanlış x>n x’i j kadar artır x=m:j:n Sonuc Döngüler (Loops) • for • while komutları ile döngüler oluşturulur. • break • continue komutları döngü içerisinde kullanılarak daha esnek bir döngü yapısı oluşturulur. break------->döngüyü durdurur. continue---->break ile durdurulan döngüyü yeniden devam ettirir. Bu iki komut daha ileride örneklerle açıklanacaktır. Genel yazımı; for for değişken=ifade deyimler end x=m:j:n x: değişken m: döngünün ilk değeri n: döngünün son değeri j: artım miktarı Örnek: 1’den 5’e kadar sayıların karelerinin hesaplanması; Sonuçların sütun olarak görüntülenmesi istenirse; Sonuçların satır olarak görüntülenmesi istenirse; Sonuçların sütun şeklinde görüntülenmesinde matris endeksleme yöntemi kullanılmıştır. Sonuçların satır şeklinde vektör endeksleme yöntemi kullanılarak görüntülenmesi istenirse; Vektör endeksleme yöntemi sonuçların satır şeklinde görüntülenmesinde kullanılabilir. Ancak sütun şeklinde görüntülemede matris endeksleme yöntemi kullanılmalıdır. Örnek: 1’den 100’e kadar olan sayıların toplamı. Örnek: ?’nın 1’den 10 radyana kadar olan değerleri için y= ?sin( ? ?/5) ifadesini hesaplayın. Başla Deyimler Bitir doğru yanlış ifade Genel yazımı; while while ifade deyimler end while döngüsü işletilmeden önce başında döngü değişkenin bir değeri mutlaka olmalıdır. Diziyi çıkışta görüntülemek için kullanılan fonksiyondur. disp fonksiyonu Genel yazımı; disp (değişken) Yukarıdaki örnekte eğer değişkenle (x) birlikte sonuçlar (s) sütun şeklinde görüntülenmek isteniyorsa disp fonksiyonu şu şekilde kullanılır; Çıkışta veya programın işleyişi sırasında bir karakter yada bir sözcük görüntülenmek isteniyorsa disp fonksiyonu şu şekilde kullanılır; disp (‘metin’) Kendinden önce veya sonra gelecek satırlar arasında bir satır boşluk bırakılmak isteniyorsa disp fonksiyonu şu şekilde kullanılır; disp (‘ ’) Örnek: Toplamları 528 yapan kaç tane ardışık tam sayının olduğunu bulan programı yazınız. Döngülerde continue ve break Kullanımı continue komutu for ve while ile kurulan döngülerde verilen koşul veya durum sağlandığında program akışını bir sonraki döngü değeri ile devam ettirir. Eğer iç içe for veya while kullanılmışsa continue’nun geçtiği ve end ile sonlandırılan döngü atlanıp bir sonraki döngüye geçilir. Örnek: Aşağıda verilen t dizisinde sadece pozitif sayıların logaritmaları alınmakta negatif sayılar atlanıp döngü dizinin diğer elemanı ile devam ettirilmektedir. break komutu for ve while ile kurulan döngülerde verilen koşul veya durum sağlandığında program akışını orada keser. Eğer iç içe for veya while kullanılmışsa sadece break komutunun geçtiği döngü sona erdirilir ve bir dıştaki döngüye geçilir. Örnek: Aşağıdaki örnekte sadece pozitif sayıların karekökü aldırılmakta sayı negatif olduğunda program akışı kesilmektedir. switch-case yapısı Gördüğümüz if, else ve elseif yapılarının kullanımına alternatiftir. Aslında switch-case ile yapılan her şey if yapılarıyla da yapılır. Ancak switch-case yapısı ile yazılan programlar daha okunabilir özelliğe sahiptir. Genel yazım şekli; switch giriş ifadesi (skaler veya karakter dizgesi) case ifadesi deyim_1 case ifadesi deyim_2 . . . . otherwise deyim_n end Örnek1: 0 db ise ‘0 olası değildir’ 5 ve katları şeklinde db cinsinden girilen gürültü seviyeleri için; 5–35 db ise ‘kabul edilebilir’ 40 db ise ‘sınır değer’ Bunların dışında ise ‘sınırın dışında’ şeklinde ileti veren programı switch-case yapısı kullanarak yazınız. Kalan Bulma Matlab’de bölme işleminde kalan bulma rem komutu ile yapılır. Genel yazım şekli; rem(x,y) x : Bölünen y : Bölen Şimdi yukarıdaki örneği kullanıcın 5 ve katları haricinde bir değer girmesi halinde programdan çıkmadan 5 ve katları şeklinde değer girmesini isteyen kodu ekleyelim (switch- case yapısı kullanılacaktır). Sayı Yuvarlatma Sayı yuvarlatma işlemlerinde kullanabileceğimiz iki komutlardan ikisini görelim; Genel yazım şekli; fix(x) : Tam sayıya yuvarlatır. round(x) : En yakın tamsayıya yuvarlatır. I. Bölge II. Bölge III. Bölge IV. Bölge Örnek: Girilen bir açı değerinin hangi bölgede yer aldığını gösteren program (switch-case yapısı kullanılacaktır). y=f(x) Fonksiyon adı Fonksiyonun bağlı olduğu değişken Fonksiyon Dosyaları Oluşturma Matlab’de kullanılan hazır fonksiyonların yanında m_file şeklinde programlama yapılarak özel fonksiyonlarda oluşturulup kullanılabilir. Burada dikkat edilecek 2 nokta vardır: 1.Eğer bir fonksiyon m_file oluşturulacaksa ilk satır mutlaka function ile başlamalıdır. 2.Oluşturulan fonksiyon ile m_file’ın yani dosyanın adı aynı olmalıdır. Dosya ad ları mevcut fonksiyon adlarını içermemeli (sin, cos, log gibi). İki sayının harmonik ortasını veren fonksiyon dosyasını oluşturalım. Fonksiyon dosyasının kullanılması ise şöyledir; Örnek: Koordinatları belli iki nokta arasındaki doğrusal uzaklığı hesaplayan fonksiyon dosyasını yazınız. A(x 1 ,y 1 ) ve B(x 2 ,y 2 ) noktaları arasındaki doğrusal uzaklık; ( ) ( ) 2 1 2 2 1 2 y y x x u - + - = ifadesi ile hesaplanmaktadır. Sayıların Katarlara Dönüştürülmesi Sayıları katarlara dönüştürmek için iki fonksiyon kullanılır; num2str (değişken) Bu fonksiyon kullanılacaksa katara dönüştürülecek sayı tam veya ondalıklı olabilir. int2str (değişken) Bu fonksiyon kullanılacaksa katara dönüştürülecek sayı tam sayıdır. Mevcut Fonksiyon Dosyası ile Bağlantı Kurma Burada uzaklık adlı daha önceden hazırlanmış fonksiyon dosyası ile bağlantılı başka bir m_file ile iki nokta arasındaki uzaklığın hesabı yaptırılacaktır. Uzaklığı hesaplamak için yazılan m_file çalıştırılarak fonksiyon dosyası ile bağlantı kurulur. Burada dikkat edilmesi gereken nokta fonksiyon dosyası ile yazılan m_file ’ın aynı klasör içinde bulunmasıdır. Mevcut fonksiyon dosyası İki nokta arasındaki uzaklığı hesaplamak için yazılan m_file dosyası Uygulamalar 1.Yarıçapları 1’den 5’e kadar değişen kürelerin hacimlerini hesaplayan programı yazınız (while döngüsü kullanılarak çözülecektir.) 2. ax2+bx+c=0 şeklindeki ikinci derece denklemin çözümünü yapan matlab programını yazın. 3. Bir fabrika yarıçapları 0.5 cm’den 2 cm’ye kadar 0.25cm artarak değişen dairesel alüminyum plakalar üretmekte ve bunları da birim çevre fiyatı 10 YTL’den satmaktadır. Buna göre alüminyum plakaların yarıçaplarını çevrelerini ve toplam fiyatlarını veren, tablonun sonuna en büyük ve en küçük plakanın fiyatları ile en büyük ve en küçük fiyat arasındaki farkı da ekleyen matlab programını yazınız hazırlayınız (Döngü kullanılmayacaktır). 4. Bir öğrencinin üç tane sınav notunun ortalamasını alıp aşağıdaki şarta uygun olarak olarak notun harfsel karşılığını veren programı yazınız. Ortalama>=90------>A 80<=ortalama<90------->B 70<=ortalama<80-------->C 60<=ortalama<70-------->D Ortalama<60-------->F 5. Her bir elemanı satır ve sütun sayılarının karelerinin toplamından 1 eksik olacak şekilde 5 satır ve 5 sütundan oluşan kare matrisi for döngüsü kullanarak oluşturunuz. 6. Aşağıda verilen program kodu çalıştırıldığında ekrana ne çıkar? Başlangıçta elamanları 1’den 10’kadar 1 artımlı bir a dizisi verilmiştir. A dizisindeki veri sayısı yani lenght(a)=10’dur. Daha sonra i değişkeni ile bir döngü tanımlanmaktadır. Döngü 1 den başlayıp i=10 olana kadar sürer. İşlem; b(1,i)=a(1,i)+2a(1,11-i) b(1,1)=a(1,1)+2a(1,10)=1+2.10=21 b(1,2)=a(1,2)+2a(1,9)=2+2.9=20 b(1,3)=a(1,3)+2a(1,8)=3+2*8*19 . . b(1,10)=a(1,10)+2a(1,1)=10+2.1=12 Sonuç olarak elemanları 21’den 12’ye kadar 1’er 1’er azalan bir b dizisi ortaya çıkar. 7. Bir barajın yıllık su kaçak yüzdesi %12’dir. Başlangıçta barajda 100 .000 m 3 su varken barajın hiç su toplamadığını var sayarak 20 yıl sonra yıl lara göre; kaçak miktarını ve barajdaki toplam su miktarını bulan programı yazın. Değerlerin Sayısal Formatı Değerlerin sayısal formatını kontrol etmek için kullanılır. Bu komut sayesinde sayıların kaç hane veya kaç ondalıkla gösterileceği belirlenir. 1. format veya format short Tam sayıdan sonra 4 rakamlı sabit noktalı skala formatı 2. format long Tam sayıdan sonra 15 rakamlı sabit noktalı skala formatı 3. format short e Tam sayıdan sonra 4 rakamlı kayan noktalı skala formatı 4. format long e 5. format short g fprintf fonksiyonu Program çıkışının formatlı olarak yaptırılması istenirse fprintf fonksiyonu kullanılır. 1’den 5’e kadar sayıların karesini fprintf fonksiyonu kullanarak görüntüleyelim. fprintf ('%2.0f %2.0f\n',x,y) 1. Sütun formatı 2. Sütun formatı Sütunlar arası boşluk (Duruma göre belli karakter aralığında bırakılır) Bir alt satıra geçişi 1. Sütun değişkeni 2. Sütun değişkeni %-2.2f İşaretleyici (Marker) Mutlaka kullanılır Değiştirici (Modifier) İsteğe bağlı kullanılır Sütun içindeki alan genişliği İsteğe bağlı kullanılır Tamlık (precision) İsteğe bağlı kullanılır. Virgülden sonra kaç hane görüntüleneceğini gösterir. Format tanımlayıcı Mutlaka kullanılır. - : Çıkışın Sütun içinde sola hizalı olacağını gösterir Değiştirici (Modifier) + : Pozitif olan sayıların başına + işareti koyar 0: Sayı çıkışlarında boş hanelerin 0 ile doldurulacağını gösterir. Örneğin – yerine 2’den önce 0 varsa sayı 01.23 şeklinde görüntülenir (%02.2f) Örneğin f format short’u belirtir. f yerine g kullanılırsa sayıların formatı format short g olur. Format Tanımlayıcı fprintf(‘\n’): Bir satır boşluk bırakır. fprintf(‘\n\n’): İki satır boşluk bırakır. fprintf(‘\n\n\n’): Üç satır boşluk bırakır. Örnek: n’in 1’den 10’a kadar değerleri için n, log(n)/n, 10 n .e n ifadelerinin değerlerini bir tablo halinde gösteren programı yazınız. Örnek: Bir barajın yıllık su kaçak yüzdesi %12’dir. Başlangıçta barajda 10.000 m 3 su varken barajın hiç su toplamadığını var sayarak 20 yıl sonra yıllara göre; kaçak miktarını ve barajdaki toplam su miktarını bulan programı yazın (çıkış için fpririntf kullanılacaktır.) veya daha önce num2str ve int2str kullanılarak disp komutu ile alınan çıkışın aynısını fprintf komutu ile almak için; Veri Dosyası Oluşturma ve Çağırma Bir işlemin ya da programın sonucunu bir text (yazı) dosyasına yazdırma (Örneğin Notepad, Word veya Excel dosyası gibi). • Daha önceden hazırlanmış bir text dosyasından veri okutma ve kullanma. Bu işlemler; özellikle veri dosyası çok büyükse ya da başka bir ortamda hazırlanmış veya hesaplanmış verileri kullanmak gerekiyorsa kolaylık sağlar. Veri Dosyası Oluşturma Veri dosyası açmak için kullanılan fonksiyon fopen fonksiyonudur. Genel yazım şekli; değişken=fopen (‘dosyaadı.txt’, ‘izin’) wt : Var olan bir dosyanın içindekileri siler ve dosyayı okuma, yazma işlemleri için açar. Eğer dosya yoksa oluşturur. İzin at : Var olan bir dosyayı okuma, yazma işlemleri için açar ve yeni verileri dosyanın sonuna ekler. Eğer dosya yoksa oluşturur. Daha önceden oluşturulmuş veri dosyasını kapatmak için fclose fonksiyonu kullanılır. Genel yazım şekli: fclose (değişken) fopen ile açılan dosya fclose ile mutlaka kapatılmalıdır. İki fonksiyonun genel kullanım şekli; x=fopen (‘veri.txt’, ‘wt’); algoritma fclose (x); Örnek: Yarıçapları 1 mm’den 20 mm’ye kadar 1 mm artımla dairelerin alanlarını hesa playan ve yarıçaplarla birlikte alanları alan adlı bir text dosyasına listeleyen programı yazınız. Word belgesi olarak istenirse matlab kodunda dosya adı: alan.doc Oluşturulan dosyanın formatı; Excel çalışma kitabı olarak istenirse matlab kodunda dosya adı: alan.xls Örnek: Masaüstünde (Desktop) oluşturulan alan isimli text dosyasında; verilerin sonuna 21 mm’den 40 mm’ye kadar olan dairelerin yarıçaplarını ve alanlarını ekleyelim. Veri Dosyası Çağırmak Daha önce masaüstünde yarıçapları 1 mm’den 20 mm’ye kadar 1 mm artımla değişen dairelerin alanlarını hesaplayan ve yarıçaplarla birlikte alanları alan adlı bir text dosyasına yazdıran programı yapmıştık. Şimdi text dosyasındaki verileri kullanarak işlem yapalım. Öncelikle başlık silinerek dosya içerisindeki veriler 2 sütun haline getirilir ve dosya bu şekliyle yeniden kaydedilir. Şimdi bu text dosyası içerisinde yer alan 2. satır 1. sütun elamanı ile 4. satır 2. sütun elamanın çarpımını yapalım. Dosyadan veri almak için load komutu kullanılarak öncelikle dosya yüklenir. Yazılacak m_file ile verilerin alındığı text dosyası aynı çalışma klas öründe olmalıdır. 2 D (2 Boyutlu) Grafikler x-y eksen takımının yer aldığı düzlemde çizilen grafiklerdir. Bu grafikleri 3 ana bölüm altında inceleyebiliriz. a. Doğru ve veri grafikleri b. Fonksiyon grafikleri c. Özel (çubuk, pasta, halka v.b.) grafikler Doğru ve Veri Grafikleri plot fonksiyonu kullanılarak çizilir. plot fonksiyonu 2 boyutlu doğru grafikleri çizdirir. x ve y aynı boyutlu iki vektör ise x’deki sayılar x_ekseni yani absis, y’deki sayılarda y_ekseni yani ordinat üzerinde olsunlar. plot fonksiyonu x’in her bir noktasına karşılık gelen y değerlerini çizdirir. Yani plot fonksiyonu aynı uzunlukta iki vektörün çizimini sağlar. x y 1 25 x(1), y(1) 2 0 x(2), y(2) 3 20 x(3), y(3) 4 5 x(4), y(4) 5 15 x(5), y(5) veya Grafiği çizdirdikten sonra Figure penceresi açıkken komut penceresinde (command window) değişiklik yapılırsa var olan grafik üzerine değişiklikler doğrudan yansır. Eksenleri adlandırma ve Grafiğe Başlık Ekleme xlabel (‘isim’) : x_eksenini adlandırır. ylabel (‘isim’) : y_eksenini adlandırır. title (‘isim’) : grafiğe başlık adı verir. Eksen adlandırma (xlabel, ylabel) ve grafiğe başlık (title) ekleme komutlarının kendi aralarında önceliği yoktur. Ancak plot komutundan sonra kullanılmaları gerekir. Kılavuz Çizgilerinin Eklenmesi Grafiğin daha anlaşılır olması için, diğer bir deyişle grafiğin okunabilirliğini arttırmak ve görünümünü daha belirgin yapmak amacıyla kılavuz çizgileri eklenir. grid : geçerli tüm eksenlere kılavuz çizgileri ekler. grid off : kılavuz çizgilerini kaldırır. Figure penceresi .fig uzantılı bir dosya olarak kaydedilip saklanabilir. Ancak Matlab oturumu kapatıldığında veriler silineceğinden kaydedilen figure penceresinde daha sonra değişiklik yapılamaz. Bu sebeple grafiğin m_file olarak yazılıp saklanması daha uygundur. Grafiklere Sembol ve Yunan Karakterleri Eklemek Mühendislik ve bilimsel grafiklerde Eksen adlandırmada (xlabel, ylabel) ve grafiğe başlık (title) ekleme ya da ileride görülecek olan grafiğe gösterge (legend) ve yazı (text -gtext) ekleme sırasında ? , ß , ? , ? , ? , ? gibi yunan alfabesi harflerini ve diğer sembolleri eklemek gerekebilir. Bunlardan en çok kullanılanların Matlab kod sistemindeki karşılıkları aşağıdaki tabloda verilmiştir. Sembol Matlab’deki Karşılığı ? \alpha ß \beta ? \gamma ? \epsilon ? \theta ? \lambda µ \mu ? \pi ? \phi ? \omega üst indis ^ Alt indis _ Bu semboller sadece grafik düzenleme işlemlerinde değil program kodlarının yazımında da aynı şekilde kullanılabilir. Tek Değişkenli Fonksiyonların Grafikleri Tek değişkenli fonksiyonların grafiklerinin çizimini örnekler üzerinden açıklayalım. Örnek: y=x 2 parabolünü x’in -5 ile 5 arasındaki değerleri için 0. 1 artımla çizin. Artım aralığını sıklaştırmak eğriyi daha hassas çizecektir. Örnek: z=5+t-4sin( ? / 2t) 1<=t<=10 artım: 0.01 Örnek: y=x.|x|/(x 3 -5) fonksiyonunu -10<=x<=10 aralığında 0.1 artımla çizdiriniz. Grafik çizgisinin rengi kırmızı, çizgi türü kesikli işaretleyici ise daire şeklinde Çizgi ve İşaretleme Seçenekleri Genel yazım şekli; plot (x,y, ‘indikatör’) Burada; x,y veri vektörlerinden sonra gelen ve tırnak içinde yazılan üçüncü argümanlar aşağıda verilmiştir. 1.Çizgi Rengi r Kırmızı k Siyah g Yeşil b Mavi İndikatör Renk Default Çoklu grafik çizimlerinde örneğin üç grafik varsa mavi, yeşil, kırmızı olarak otomatik renklendirilir. 2. Çizgi Türü Çizgi Türü İndikatör Düz Çizgi - Kesikli Çizgi -- Noktalı Çizgi : Kesikli Noktalı -. 3. İşaretleyici İşaretleyici Sembol İndikatör Nokta . Artı + Yıldız * Daire o x x Kare s plot (x,y, ‘r+:’) kırmızı renkte + işaretli noktalı çizgi. plot (x,y, ‘r+’) sadece kırmızı renkte + işaretleri görünür çizgi gözükmez. Örnek: y=e 2cosx grafiğini 0<=x<=4 ? aralığında ?/15 artımla, grafik rengi kırmızı, işaretleyici daire ve çizgi türü kesikli olacak şekilde çizdiren m_file yazınız. ezplot Fonksiyonu Bu fonksiyon iki boyutlu tek değişkenli fonksiyonların grafiklerini bir fikir alabilmek için kabataslak çizdirmeye yarar. Genel yazım şekli; ezplot fonksiyon veya (x ve y ekseninin sınırları da verilmek istenirse) ezplot (‘fonksiyon’, [xmin,xmax,ymin,ymax]) Örnek: y=sin(x)/1+x 2 fonksiyonunu ezplot ile çizdirelim. Burada x ve y eksenlerinin minimum ve maksimum değerleri kullanılmamıştır. Eksenlerin skalası program tarafından otomatik olarak belirlenmiştir. ezplot fonksiyonu ile çizilen grafiklerde fonksiyonun tam karakteristiğini görmek için eksen sınırlarının program tarafından otomatik belirlenmesi önem taşır. Şimdi de aynı fonksiyonu x ekseninin 0 ile 5 aralığında çizdirelim. fplot Fonksiyonu fplot fonksiyonu ezplot fonksiyonu ile aynı işlevi görür ancak ez plot ile yapılamayan çizgi rengi, çizgi türü ve işaretleyici seçenekleri ilave edilebilir. Genel yazım şekli; fplot (‘fonksiyon’, [xmin, xmax, ymin, ymax], ‘indikatör’) Burada indikatör olarak daha önce çizgi ve işaretleme seçenekleri konusu altında veri len belirleyici karakterler kullanılır. Örneğin çizgi rengini yeşil ve çizgi türünü de kesikli çizgi yapmak için indikatörde ‘g--’ kullanılır. Çoklu Grafik Çizimleri Çoklu grafik çizimi için iki yol vardır: 1. Tek bir plot fonksiyonu kullanarak çizdirmek; 2. Grafiğin üzerine yeni bir grafik eklemek; 1. Tek Bir Plot Fonksiyonuyla Birden Fazla Grafik Çizdirmek plot (x,y,w,u,z,t,........) Burada; x-------->y w------->u z-------->t grafikleri çizdirilir. Örnek: y=sin(t), y=sin(t-0.25) ve y=sin(t-0,5) fonksiyonlarını ?/100 artımla 0<=t<=2 ? aralığında plot fonksiyonunu kullanarak çizdirin. Burada varsayılan (default) olarak program tarafından y1 mavi, y 2 yeşil ve y3’de kırmızı renklerde çizdirilmiştir. Çoklu grafiklerde tüm grafikleri daha açık bir şekilde görebilmek için renk, çizgi türü ve işaretleyici simgelerin kullanılması uygun olur. 2. Grafiğin Üzerine Yeni Bir Grafik Eklemek Bazı durumlarda çizilmiş bir grafiğin üzerine bir başka grafik eklenmesi gerekebilir. Üst üste birden fazla plot fonksiyonu kullanmak bir önceki grafiği iptal edeceğinden; bunu önlemek için hold on fonksiyonu kullanılır. Genel yazım şekli; plot (x,y1) : ilk grafiği çizer hold on : grafiği dondurur plot (x,y2) : yeni bir grafik ekler hold off : dondurulan grafiği ya da grafikleri serbest bırakır Örnek: y=cos(x), y=cos(2x) ve y=cos(x/2) fonksiyonlarını hold on özelliğini kullanarak -2 ?<=x<= 2 ? aralığında 0,1 artımla çizdiriniz. hold on fonksiyonu bir önceki grafiği dondurur ve aynı düzlemde diğer grafiklerin çizilmesini sağlar. plot fonksiyonu ile çizilecek olan grafikler ilk grafiğin geçerli eksenlerini kullanır. Ancak çizilecek olan sonraki grafiklerden eksen aralığı en büyük olan kullanılır ve diğer tüm grafiklerin eksenleri bu en büyük aralığa göre otomatik ayarlanır. Grafiğe Gösterge Eklemek Grafikteki gösterge çoklu grafik çizimlerinde ihtiyaç duyulan bir özelliktir. legend fonksiyonu kullanılarak uygulanır. Genel yazım şekli; legend (‘Seri1’,’Seri2’,’Seri3’,........,Position) Position gösterge kutusunu belli bir konuma yerleştirir. Position İşlevi 0 Verileri kapatmayacak şekilde olası en iyi yeri otomatik belirler. 1 Sağ üst köşe (default yani position’a hiç bir şey yazılmazsa 1 olarak kabul edilir.) 2 Sol üst köşe 3 Sol alt köşe 4 Sağ alt köşe —1 Grafik alanın dışında sağ taraf Grafik Üzerine Yazı Eklemek Grafik üzerinde belirlenen x ve y koordinatlarının kesim noktasından başlayarak yazı eklemek için text fonksiyonu kullanılır. Genel yazım şekli; text (xposition, yposition,’yazı’) xposition : x koordinatı yposition : y koordinatı Örnek: y=e x fonksiyonunu 0<=x<=2 aralığında 0,1 artımla çizip, (1, 2.5) koordinatlarına ‘y=e x fonksiyonunun grafiği’ yazdıralım. gtext fonksiyonu Bu fonksiyon text fonksiyonuna göre daha işlevsel ve kullanışlıdır. Grafiği çizdirdikten sonra bu fonksiyon yardımıyla mouse grafik ekranda eksenel bir görüntü alır. Eksenlerin kesim noktası yazının konumlandırılacağı yerin başlangıç noktasını gösterir. Arka arkaya bir kaç kez kullanılarak ek açıklamalarda yapılabilir. Genel yazım şekli; gtext (‘yazı’) Bu komut tüm grafik biçimlendirme işlemleri (xlabel, ylabel, title v.b.) yapıldıktan sonra en son satırda kullanılır. Tek Bir Sayfa Üzerine Birden Fazla Grafik Yerleştirme Aynı düzlem üzerinde ve aynı eksen takımı kullanılarak tek bir grafik (figure) penceresinde birden fazla grafik çizdirmek için subplot fonksiyonu kullanılır. subplot(2,1,1) 2 satır 1 sütun plot (x,y) subplot (2,1,2) plot (z,t) subplot(1,2,1) 1 satır 2 sütun plot (x,y) subplot (1,2,2) plot (z,t) Grafik_1 y=f(x) Grafik_2 t=f(z) Grafik_1 y=f(x) Grafik_2 t=f(z) subplot(2,3,1) 2 satır 3 sütun plot (x,y) subplot (2,3,2) plot (z,t) subplot (2,3,3) plot (l,k) subplot (2,3,4) plot (m,n) subplot (2,3,5) plot (u,v) subplot (2,3,6) plot (p,q) Grafik_1 y=f(x) Grafik_2 t=f(z) Grafik_3 k=f(l) Grafik_4 n=f(m) Grafik_5 v=f(u) Grafik_6 q=f(p) Genel yazım biçimi; subplot (m,n,p) m : satır sayısı n : sütun sayısı p : indeks (1 ile m.n arasında olmalıdır. Satırda soldan sağa, sütunda yukarıdan aşağıya doğru grafik belirlemesi yapar.) Örnek: y=5x, y=x 2 , y=e x ve y=|x| fonksiyonlarını 2 satır 2 sütun şeklinde aynı figure penceresinde -10<=x<=10 aralığında 0,01 artımla çizdirin. İki y eksenli Grafik Çizmek Bazı durumlarda verileri y ekseninin hem sol hem de sağ tarafında ölçeklemek gerebilir. Bu durumda plotyy fonksiyonu kullanılır. Genel yazım şekli; plotyy (x1,y1,x2,y2) X1 değerlerine ait y1 grafiği y ekseninin sol tarafında ölçeklendirilir. X2 değerlerine ait y2 grafiği y ekseninin sağ tarafında ölçeklendirilir. Örnek: y=e -x sin(x) ve y=e x cos(x) fonksiyonlarını 1<=x<=10 aralığında 0,01 artımla y1 değerleri ve y2 değerleri farklı eksenlerde olacak şekilde çizdirin. Eksen Sınırlarını Ayarlamak Buraya kadar yapılan uygulamalarda eksen ölçekleri Matlab tarafından otomatik olarak belirlendi. Ancak eksen sınırları programcı tarafından da belirlenebilir. Eksen sınırlarını belirlemek için temel fonksiyon axis fonksiyonudur. Bu fonksiyon var olan bir grafik üzerinde hem x ekseninin hem de y ekseninin geçerli sınırlarını değiştirebilir ve istenilen bir eksen ölçeği belirleyebilir. Genel yazım şekli; axis ([xmin xmax ymin ymax]) plot fonksiyonundan sonra kullanılmalıdır. Örnek: y=x 3 fonksiyonunu 0<=x<=10 aralığında 0,01 artımla x ekseninin minimum değeri - 50 maksimum değeri 50 ve y ekseninin minimum değeri -500 maksimum değeri 1500 olacak şekilde çizdirelim. Özel Grafikler Matlab birçok 2D veya 3D özelleştirilmiş grafik formatını destekler. Bunlardan en çok kullanılan pasta dilimi ve bar formatlarını görelim. 1. Pasta Dilimi Grafikleri (Pie) Pasta dilimi grafikleri parçaların bir bütün içerisinde ne kadar yer kapladıklarını gösteren grafiklerdir. Genel yazım şekli; pie (x,{‘isim1’,’isim2’,.....,’isimn’}) Örnek: Karbon, hidrojen ve oksijenden oluşan bir kimyasal maddenin analizini, kullanıcıdan bu maddelere ait yüzde miktarlarını isteyerek pasta dilimi şeklinde gösteren grafiği çizen Matlab kodunu yazınız. Pasta dilimi formatındaki grafiklerde istenen dilimlerin bütünden ayrılması için explode (patlatma) işlemi uygulanır. pie fonksiyonunda x veri vektöründen sonra sonra [1 1 0 0 0] yazılırsa 5 dilim içerisinde 1. ve 2. dilimler bütünden ayrı olarak gösterilir. Az önceki örnekte 1. dilimi bütünden ayrı olarak gösterelim. 2. Çubuk Grafikler (Bar) Çubuk grafikler verilerin birbirleri ile karşılaştırılması için en iyi seçenektir. Matlab’de dikey çubuk grafikler çizilebilir. Genel yazım şekli; bar (m:n,x,çubuk kalınlığı) m : ilk çubuk sayısı n : son çubuk sayısı x : veri vektörü bar (1:5,x,0.2) 1’den 5’e kadar olan 5 adet çubuğu n 0,2 kalınlıkla çizileceğini gösterir. Çubuk sayısı ile veri vektörünün uzunluğu eşit olmalıdır. Kalınlık değeri yazılmazsa örneğin bar(1:5,x) gibi çubuk genişliğinin default değeri 0,8 alınır. Örnek: 2006 yılında Türkiye deki sektörlerin toplam ciroları aşağıdaki gibi olsun buna göre her bir sektörün toplam içindeki yerini gösteren grafiği çiziniz. Ticaret Sanayi Ulaşım Turizm Tarım 17milyon YTL 27milyon YTL 13milyon YTL 22milyon YTL 8milyon YTL 3D (3 Boyutlu) Grafikler 1. 3D Çizgi Grafikleri 3D çizgi grafikleri plot3 fonksiyonu ile oluşturulur. Aynı boyutlu x, y, z olarak adlandırılan 3 vektörün, karşılıklı gelen noktalarının birleştirilmesiyle çizilir. Diğer bir deyişle (x1,y1,z1), (x2,y2,z2), (x3, y3, z3) noktaları birleştirilir. Eksen adlandırılmalarında iki boyutlu çizimlerde xlabel ve ylabel fonksiyonlarına ilave olarak zlabel fonksiyonu da kullanılır. Burada grafik (10,10,0), (20,20,230), (30,30,75), (40,40,600) noktaları arasındaki çizgiler birleştirilerek elde edilmiştir. 2. 3D Pasta Dilimi (pie) Grafikleri 2D çubuk grafik çizimlerinde bar fonksiyonunun pie3 şeklinde kullanılmasıyla elde edilir. 3. 3D Çubuk (bar) Grafikleri 2D çubuk grafik çizimlerinde bar fonksiyonunun bar3 şeklinde kullanılmasıyla elde edilir. 4. 3D Ağ (mesh) ve Yüzey (surf) Grafikleri z=f(x,y) şeklinde üç boyutlu fonksiyonların yüzeyini gösterebilmek için 3D ağ (mesh) grafikleri çizmek gerekir. Önce meshgrid fonksiyonu ile x ve y koordinatlarının oluşturduğu ikililerle bir değerler matrisi hazırlanır daha sonra mesh fonksiyonu ile bu değerler matrisi kullanılarak üç boyutlu grafik çizilir. Genel yazım şekli; [x,y]=meshgrid (x1:i:x2, y1:j:y2) mesh (x,y,z) x1,y1 : x ve y’nin başlangıç değerleri x2,y2 : x ve y’nin bitiş değerleri i,j : x ve y’nin artım miktarları Örnek: z=5cosx.siny fonksiyonunu - ? ile ? aralığında ?/50 artımla üç boyutlu olarak çizdiriniz. meshgrid fonksiyonu ile birlikte mesh komutu yerine surf komutu kullanılırsa çizilen yüzeyin grid boyunca farklı bölgeleri farklı renklerle boyanır. Genel yazım şekli; [x,y]=meshgrid (x1:i:x2, y1:j:y2) surf (x,y,z) surf mesh Temel Matematiksel İşlemler 1. İntegral İntegral bir fonksiyon grafiğinin altındaki alanı bulmak için kullanılan sayısal bir yöntemdi r. Matlab’de integral iki şekilde hesaplanır: • Sayısal yani nümerik (Sınırları belirli) • Simgesel (Sınırlar belirsiz) —Sayısal Değerli İntegral Örnekleri quad komutu kullanılır. quad adaptif tekrarlı Simpson kuralını kullanan düşük dereceli bir yöntemdir. quad fonksiyonu, 10 -6 hata ile matematiksel fonksiyonun a ile b arasındaki integraline yaklaşır. Genel yazım şekli; quad (‘f(x)’, a, b) Sonucun yukarıda olduğu gibi sabit noktalı 5 rakamlı (format short) şeklind e değil de basit kesir şeklinde görüntülenmesi istenirse komut satırında öncelikle format rat komutu yazılır ve daha sonra integral hesaplatılır. Örnek 1: ? - - 2 0 3 5 2 1 dx x x integralini hesaplayınız. ? b a dx x f ) ( İki Katlı İntegral Hesabı Şeklindeki integrallerin hesaplanmasında dblquad fonksiyonu kullanılır. Genel yazım şekli; dblquad (‘f(x,y)’, xmin, xmax, ymin, ymax) Burada fonksiyon x ve y’ye bağlı iki değişkenli bir fonksiyon olmalıdır. Örnek 2: ( ) ? + + + 1 0 2 2 2 1 ) 3 ( 3 2 dx x x x integralini hesaplayınız. Örnek 3: ? 2 / 0 cos sin ? xdx x integralini hesaplayınız Örnek: ? ? + ? ? ? 2 0 ) cos sin ( dxdy y x x y integralini hesaplayınız. ? ? max min max min ) , ( y y x x dxdy y x f—Simgesel İntegral Örnekleri Simgesel işlemlerde kullanılacak değişkenlerin (simgelerin) önceden bildirilmesi gerekir. Değişkenleri bildirmek için syms komutu kullanılır. Şeklindeki belirsiz bir integrali Matlab’de hesaplatabilmek için int fonksiyonu kullanılmaktadır. Ancak öncelikle syms komutu ile f fonksiyonunun bağlı olduğu değişken yani x tanımlanmalıdır. Genel yazımşekli; syms x,a b,… :Fonksiyondaki simgelerin bildirilmesi, int (f(x)) :syms ile belirlenen simgelerden x’e göre f(x)’in belirsiz integralini alır. Örnek 1: dx x ? - ) 25 ( 1 2 belirsiz integralini hesaplayınız. Örnek 2: dx x tx ? cos . 3 sin belirsiz integralini hesaplayınız. ? dx x f ) (Burada sonuç oldukça karmaşık gözükmektedir. Bu nedenle bu tür ifadeler pretty fonksiyonu ile daha net görülebilir hale getirilebilir. Bu örnekte görüldüğü gibi syms komutu ile x ve t simgeleri belirtilmiş olmasına rağmen integraller x değişkenine göre alınmıştır. Burada int fonksiyonu; int (f(x),x) şeklinde de kullanılabilir. Örnek 3: a pozitif bir doğal sayı olduğuna göre; dx e ax ? ? ? - - 2 integralini hesaplayın. Bu örnekten çıkan sonuç; int fonksiyonu quad fonksiyonunda olduğu gibi belli aralıkta yani sayısal değerli integral hesabı da yapabilir. int (f(x),x,a,b) :f(x) fonksiyonunun x’e göre a’dan b’ye kadar integralini alır. Katlı integraller de iç içe int fonksiyonu kullanılarak hesaplanabilir. şeklindeki sınırları belli katlı bir integral int fonksiyonu ile şu şekilde hesaplatılır. int (int(f,x,c,d),y,a,b) 2. Türev Türev alma işleminde kullanılan fonksiyon diff olup simgesel işlem mantığı çerçevesinde genel yazım şekli şöyledir: diff (f(x)) :syms ile belirlenen simgelerden x’e göre f(x) fonksiyonunun türevi. diff (f(x),x) :f(x) fonksiyonunun x’e göre türevi. diff (f(x),n) :n pozitif bir tamsayı olmak üzere syms ile belirlenen simgelerden x’e göre f(x) fonksiyonunun n. dereceden türevi. diff (f(x),x, n) :n pozitif bir tamsayı olmak üzere x’ göre f(x) fonksiyonunun n. dereceden türevi. Örnek 1: f(x)=5x 3 +ax 2 +bx+14 a ve b sabit sayılar olmak üzere f(x) fonksiyonunun x’e göre türevini alın. ? ? b a d c dxdy y x f ) , ( Örnek 2: x x f cos 5 1 1 ) ( + = fonksiyonunun 3. türevini bulup bu türevin grafiğini çizdiriniz. Bu örnekten de anlaşılacağı gibi; türevin belli bir noktadaki sayısal değeri hesaplanmak istenirse subs komutu kullanılır. Genel yazım şekli; subs (f(x),değer) 4.Denklem ve Denklem Sistemlerinin Çözümü Matlab her türlü doğrusal veya doğrusal olmayan denklem ve denklem sistemlerinin çözümünü bulabilir. Bu işlem için solve fonksiyonu kullanılır. Genel yazım şekli; solve (‘denklem’) Burada çözüm kümesi bulunacak denklem solve fonksiyonunda tırnak içerisinde verilmiştir. Ancak syms komutu ile çözüm kümesi bulunacak denklemin değişkeninin önceden tanımlanması halinde denklem tırnak içerisinde verilmez. Örnek 3: ) 3 cos( ) ( x e x f x = fonksiyonunun 3. türevini bulup türevin x=-2’deki değerini hesaplatınız. Örnek 1: 6 ) ( 2 - - = x x x f fonksiyonunun çözüm kümesini bulunuz. Örnek 2: 0 67 120 3 2 7 10 12 = + - + - x x x x denkleminin köklerini bulunuz. Elde edilen sonuç çok karmaşık görünmektedir. Sonucu 4 haneli hale getirmek için double komutu kullanılır. Örnek 3: 0 2 = + + c bx ax şeklindeki 2. derece denklemin çözümünü bulunuz. 0 0 2 2 2 1 1 1 = + + = + + c y b x a c y b x a (1) (2) Denklem sistemlerinin çözümünü biçiminde doğrusal bir denklem sisteminin çözümünde x ve y yani iki bilinmeyen için çözüm aranmaktadır. Yine solve fonksiyonu kullanılacaktır. Bu durumda çözümü [x,y] şeklinde çıkış değişkenleri ile belirtmeliyiz. Genel yazım şekli; [x,y]=solve (‘a1x+b1y+c1=0’,’ a2x+b2y+c2=0’) Denklem eşitliği verilmezse varsayılan olarak denklemler 0’a eşit alınır. Örnek 1: 2 1 2 = - = + y x y x denklem sisteminin çözüm kümesini bulunuz. Örnek 2: 0 3 4 3 2 2 = + - = + + x x y xy x denklem sisteminin çözüm kümesini bulunuz. Örnek 3: denklem sisteminin çözüm kümesini bulunuz. a bir parametre olmak üzere 1 0 2 2 = - = - v u v auÖrnek: P(x)=x 4 +3x 3 -15x 2 -2x+9 Polinomlar P(x)=a n x n +a n-1 x n-1 +……….+a 1 x+a 0 x’in en büyük üssü n polinomum derecesini beliler. ai(i=1,2,3,…….,n) polinomun katsayılarıdır. Polinomlar en büyük üsden başlayarak azalan sıradaki katsayılar vektörü ile gösterilir. Polinomun Değerini Bulma P(x) polinomunun x=k için alacağı değer polyval fonksiyonu ile bulunur. Genel yazım şekli; polyval(P(x),k) Örnek: P(x)=x 4 +3x 3 -15x 2 -2x+9 polinomunun x=-2 için değerini hesaplayınız. Örnek: Q(x)=2x 3 -x 2 +1 polinomunun köklerini bulunuz. Polinomun Köklerini Bulma P(x)=0 polinomunun çözüm kümesi polinomun kökleridir. Kökleri bulmak için roots fonksiyonu kullanılır. Genel yazım şekli; roots(P(x)) Örnek: P(x)=x 3 -2x+1 polinomunun 5 ve -3 için değerini hesaplayınız. Kökleri Belli Polinomu Bulma Kökleri belli polinomu bulmak için poly fonksiyonu kullanılır. Genel yazım şekli; poly([KÖKLER]) Örnek: Kökleri -3 ve 7 olan polinomu bulunuz. Yani; P(x)=x 2 -4x-21 Örnek: Kökleri -1.23+3.5i, -1.23-3.5i ve 6.75 olan polinomu bulunuz. Yani; P(x)=x 3 -4.29x 2 -2.8421x-92.8996 Polinomların Çarpımı R(x) ve S(x) şeklindeki iki polinomun çarpımı için conv fonksiyonu kullanılır. Genel yazım şekli; conv(R(x),S(x)) Polinomların Bölümü P(x) ve Q(x) şeklindeki iki polinomun bölümü için deconv fonksiyonu kullanılır. Genel yazım şekli; [B K]=deconv(P(x),Q(x)) Burada; B :Bölüm K :Kalan P(x)’in Q(x)’e bölünebilmesi için P(x)’in derecesi Q(x)’in derecesine eşit veya büyük olmalıdır. Örnek: R(x)=-5x 5 -4 ve S(x)=18x 2 -x ise R(x).S(x) nedir? Yani; -90x 7 +5x 6 -72x 2 +4x Örnek: P(x)=-7x 3 -3x 2 +x+14 ve Q(x)=4x 2 +9x-5 ise P(x)/Q(x) nedir? Yani; Bölüm :-1.75x+3.1875 Kalan :0x 4 +0x 3 -36.4375x+29.9375 P(x n )/Q(x n+1 ) şeklindeki küçük dereceli bir polinom büyük dereceli bir polinoma bölünürse Bölüm 0, Kalan ise bölünen yani P(x n )’dir. Polinomlarda Toplama ve Çıkarma Aynı dereceden olmak şartı ile iki veya daha fazla polinomun toplaması ve çıkar ması yapılabilir. Örnek: P(x)=x 2 +4x+4 ve Q(x)=x 3 +x+5 ise P(x)/Q(x) nedir? Yani; Kalan : P(x)=x 2 +4x+4 Örnek: P(x)=5x 2 -22x+4 ve Q(x)=x 2 +4x+4 ise P(x)+Q(x) nedir? Yani; 6x 2 -18x+8 Polinomların Türevi P(x) şeklindeki iki polinomun türevini almak için polyder fonksiyonu kullanılır. Genel yazım şekli; polyder(P(x)) : P(x)’in türevi, polyder(P(x),Q(x)) : P(x)*Q(x)’in türevi, P(x) Q(X)’den büyük dereceli olmak üzere; [B K]=ployder(P(x),Q(x)) :P(x)/Q(x)’in türevi Örnek: P(x)=-7x 3 -3x 2 +x+14 ve Q(x)=4x 2 +9x-5 olsun buna göre türevleri hesaplayalım