1. GİRİŞ 1.1. GENEL BAKIŞ MATLAB (MATrix LABoratory) sayısal hesaplama ve dördüncü nesil programlama dilidir. MathWorks firması tarafından geliştiriliyor. MATLAB; - matris işlenmesine, - fonksiyonlar ve veri çizilmesine, - algoritmalar uygulanmasına, - kullanıcı arayüzü oluşturulmasına ve - diğer dillerle yazılmış programlar ile etkileşim oluşturulmasına izin verir. C, C++, Java, ve Fortran dillerini içerir1. MATLAB’ın kullanım yerleri; Denklem takımlarının çözümü, doğrusal ve doğrusal olmayan diferansiyel denklemlerinin çözümü, integral hesabı gibi sayısal hesaplamalar, Veri çözümleme işlemleri, İstatistiksel hesaplamalar ve çözümlemeler, Grafik çizimi ve çözümlemeler, MuPAD sembolik motorunu kullanarak sembolik hesaplamalar Simulink kullanılarak dinamik ve gömülü sistemler model tasarımı 1.2. - KULLANICI ARAYÜZÜ Şekil 1 de gösterilen kullanıcı ara yüzünde; Komut Penceresi (Command Window); Komut Tarihçe Penceresi(Command History) Çalışma Alanı (Workspace) Çalışılan Dizin (Currrent Directory) penceresi En üstte Araç Çubuğu (Toolbox) yer almaktadır. Komut penceresinde görülen “>>” sembolünün işaret ettiği satıra komut satırı adı verilir. Komut satırında girilen komutlar yorumlanarak sonuçları yine aynı pencerede gösterilir. Böylece MATLAB kullanıcı ile etkileşimli (interaktif) bir biçimde kullanılabilir. Genelde kısa işlemler için en yaygın kullanım şekli interaktif kullanımdır. Ayrıca birkaç komutun ardı sıra uygulanmasını gerektiren uygulamalar için interaktif kullanım yerine, ilgili komutlar uzantısı “.m” olan program dosyası(betik) adı verilen dosyalara kaydedilmek veya yine aynı uzantılı dosyalarda saklanan fonksiyon programı oluşturmak suretiyle çalışılabilir. Komut satırına girilen geçerli işlem enter veya return tuşuna basılmak suretiyle icra edilir. MATLAB arka planda belirtilen işlemi kendi kurallarına uygun ise icra ederek sonucu yine aynı pencerede görüntüler. İşlem talebi kurallarla uygun olarak gerçekleştirilmemişse hata mesajı iletilir. >> 2+3 ans = 5 >> 2+x ??? Undefined function or variable “x”. 1 http://tr.wikipedia.org/wiki/MATLAB 1 MATLAB kullanıcı arayüzünde bulunan diğer bir pencere çalışma alanı(Workspace) penceresidir, Şekil 1a. Bu pencerede MATLAB oturumu başlatıldığı andan itibaren tanımlanan değişkenler, değerleri ve değişken türleri listelenmektedir. Bu alandaki bilgiler clear komutu kullanıldığında silinirler. Şekil 1. Matlab Kullanıcı Arayüzü Kullanıcı arayüzünde bulunan diğer bir pencere ise Komut Tarihçe Penceresi (Command History) dir. Bu pencerede komut penceresinden daha önce girilen komutlar giriliş sırasına göre listelenmektedir. Bu pencerede yer alan herhangi bir komut, farenin sol tuşuyla çift tıklanmak suretiyle tekrar çalıştırılabilir. Veya alternatif olarak klavyedeki yukarı ok tuşu yardımıyla önce girilen komut, komut penceresinde gözükene kadar ilerleyerek enter veya return tuşu yardımıyla aynı işlem tekrar gerçekleştirilebilir. 2. KOMUT PENCERESİNDEN MATLAB Skaler olarak bildiğimiz reel veya kompleks bir sayı MATLAB de 1x1 boyutlu bir matris; n bileşenli bir satır vektörü 1xn boyutlu matris ve sütun vektörü ise nx1 boyutlu bir matris olarak işlem görmektedir. 2.1. SKALERLER Bilinen toplama ( + ), çıkarma ( - ), çarpma ( * ), bölme ( / ) ve üs alma( ^ ) operatörleri ile skalerler üzerinde interaktif aritmetik işlemler komut penceresinde yer alan ve komut promptu adı verilen “>>” işaretinin bulunduğu komut satırında gerçekleştirilebilir (Bkz. Tablo 1). Tablo 1 Skaler değerli değişkenler üzerinde işlemler 2 Tablo 1 de görüldüğü üzere belirtilen işlemler komut satırında yazılarak enter veya return tuşuna basıldığında işlem sonuçları varsayılan değişken olarak bilinen “ans” (answer) değişkenine atanır. Bu yönüyle skalerler üzerinde MATLAB bir hesap makinesi olarak kullanılabilir. İşlem sonuçları daha sonra kullanılmak isteniyorsa skalerlere isimler verilmelidir. Diğer bir deyimle skalerleri saklayan değişkenler tanımlanmalı ve değişkenlere değerleri “=” atama operatörü yardımıyla Tablo 2 de görüldüğü üzere atanmalıdır. Tablo 2 de sol üç sütunda a ve b skaler değerli değişkenlerine sırasıyla 2 ve 3 değerleri atanmakta ve toplama işleminin sonucu c değişkenine atanmaktadır. Atama işlemi sonunda satır sonunda noktalı virgül kullanılmaması durumunda değişken değerlerinin ve işlem sonucunun ekrana tekrar yazıldığını görüyoruz. Sağ üç sütunda ise aynı işlemelerin noktalı virgül kullanımı ile yapılması durumu gösterilmektedir. Dikkat edilirse ikinci durumda işlem sonucu c değişkeninde saklanmakta olup sonuc ekranda görüntülenmemektedir. İlgili değişken değerini görmek için Tablo 2 nin son sütununda görüldüğü üzere değişken isminin yazılarak enter veya return tuşuna basılması gerekir. Örnek: 5 formülündeki x değerini bulunuz. >> x = 5 + (8+10)/3 x= 11 Örnek : 2 10 12 0 denkleminin bir çözümü bulunuz. Örnek : Üçgenin çevresini ve alanını bulan kodları yazınız >> r=3; >> cevre=2*pi*r; >> alan=pi*r*r; M. dosyasına kaydedip (inputla) r değerini alalım R=input(‘yaricapi gir’); Örnek : Küpü girilen bir sayının en yakın tamsayı değerini bulan bir program yazınız. 3 Örnek : Kullanıcının girdiği a, b ve h değerlerini kullanarak yandaki şeklin 1- hacmini 2- yüzeyinin alanını bulunuz. Örnek : Bir M dosyası oluşturarak kullanıcıdan alınan iki sayının (a, b) 1-Toplamını 2-Farkını 3-Çarpımı 4-Bölümünü hesaplayan bir program yazınız. Örnek (Uygulamada Sorulmuş Soru):m kütlesine sahip bir cismin h yüksekliğindeki bir binansan serbert atışla bırakılıyor. M ve h değerleri kullanıcıdan alınacaktır. Buna göre - t düşme süresi - bina üzerinde iken cismin hsaip olduğu potansiyle enerji - cismin yere düşmeen hemen öncesi kinetik enerjisini hesaplayınz. 2.2. VEKTÖRLER MATLAB de vektörler tek satır veya sütundan oluşan matrisler olarak değerlendirilirler. Vektörler köşeli parantez içerisinde elemanlar arasında boşluk veya virgül konularak tanımlanabileceği gibi, elemanlar arasındaki farkı birbirine eşit olan vektörler için başlangıç noktası, artış miktarı ve bitiş noktasının belirtilmesi suretiyle de tanımlanabilirler: >> x=[1 3 2] x = 1 3 2 veya >> y=1:2:10 % (Başlangıç =1; artış miktarı=2; bitiş =10) y = 1 3 5 7 9 y vektörü aynı zamanda 1x5 boyutlu matris olarak değerlendirilmektedir. y’ ile elde edilen y nin transpozu ise sütun vektörü veya 5x1 boyutlu bir matris olarak değerlendirilmektedir. Diğer alternatifler arasında linspace ve logspace komutları vardır. Tablo 3a da iki vektörün arasında tanımlı işlemler ile, bir skalerin bir vektörle çarpımı gibi lineer cebirsel işlemlere ilaveten MATLAB de işlemlerde kolaylık açısından tanımlı olan bir vektör ile bir skalerin toplama işleminin nasıl gerçekleştirildiği gösterilmektedir. 4 Önemli Fonksiyonlar sin : cos : tan : sind : 5 cosd : tand : asin : acos : atan : sqrt : exp : log : log10 : abs : sign : max : min : floor : ceil : round : sum : mean : median : mod : >> x = [1.0000 0.5000 0.7000] >> sin(x) ans = 0.8415 0.4794 0.6442 >> asin(x) ans = 1.5708 0.5236 0.7754 >> sinh(x) ans = 1.1752 0.5211 0.7586 21 >> log(x) ans = 0 -0.6931 -0.3567 >> log10(x) ans = 0 -0.3010 -0.1549 >> exp(x) ans = 2.7183 1.6487 2.0138 size : Bir vektörün bileşen sayısı ile birlikte satır veya sütun vektörü olup olmadığını da belirlemek için kullanılır. length : sadece vektörün bileşen sayısını verir. 6 isreal : değerini verir. norm : vektörün bütün bileşenlerinin reel olması durumda 1, diğer durumlarda sıfır vektörün orjine olan uzaklığının bir ölçüsüdür. Alt Vektör Tanımlama Bazı uygulamalarda bir vektörün belirli bir kısmından oluşan bir alt vektörün kullanılması gerekebilir. Örneğin; >> x=[1,2,3,4,5,6,7,8,9]; ile tanımlanan vektörünün tek indisli terimlerinden xtek, çift indisli terimlerinden ise xcift isimli bir vektör tanımlayabiliriz: >> xtek=x(1:2:9) xtek = 1 3 5 7 9 >> xcift=x(2:2:8) xcift = 2 4 6 8 Ayrıca in belirli sayıda elemanından(örneğin ilk beş elemanı) oluşan vektör >> xbes=x(1:5) xbes = 1 2 3 4 5 ile tanımlanabilir. Noktalı Vektör Operatörler Bilinen aritmetik operatörlerin ( + , * , - , / , ^ ) yanı sıra, bazı aritmetik işlemlerin daha etkin biçimde gerçekleştirilebilmesi için MATLAB de çarpma, bölme ve üs alma operatörlerinin noktalı versiyonları olarak noktalı çarpma ( .* ), noktalı bölme ( ./ ) ve noktalı üs ( .^ ) operatörleri geliştirilmiştir. Noktalı çarpma operatörü aynı sayıda bileşe sahip olan iki vektörün karşılıklı elemanlarının çarpılmasıyla yeni bir vektör oluşturur. Benzer biçimde noktalı bölme x./y ile x vektörünün her bir bileşeninin y vektörünün karşılık gelen bileşenine bölünmesi suretiyle yeni bir vektör oluşturur. Şüphesiz bu durumda işlemin geçerli olabilmesi için y vektörünün bütün bileşenlerinin sıfırdan farklı olması gerekmektedir. x.^y şeklinde tanımlanan noktalı üs işlemi sonucunda ise x’in her bir bileşeninin y’nin karşılık gelen bileşeninci kuvveti alınarak yeni bir vektör oluşturur. y nin skaler olması durumunda x in her bir bileşeninin y skaleri ile belirtilen üssü alınır. Belirtilen işlemleri Tablo 3b den takip ediniz: 7 8