1 matlab giris

12
1 MATLAB PROGRAMLAMAYA GİRİŞ MATLAB, MATrix LABoratory sözcüklerinden gelir ve temelde sayısal ve analitik olarak matematiksel fonksiyonların ifadelerinin kullanıldığı başta mühendislik alanında olmak üzere sayısal analiz yöntemlerini kullanan bilimlerde son yıllarda oldukça sık kullanılan bir hazır yazılım paketidir. Özellikle yüksek performans gerektiren algoritma hazırlama ve geliştirme, sayısal analiz, benzetim, mühendislik problemlerinin sayısal ve grafik çözüm tekniklerinde son derece etkindir. 1.1. M-Dosyaları M-dosyaları MATLAB ortamında kullanılan komutlardır ve veri analizini sağlayan fonksiyonlardır. Bu fonksiyonlar her amaca yeterli olsa da sonuçlara daha hızlı ulaşabilmek için kullanıcıya özel fonksiyonlar yani yeni M-dosyaları oluşturulabilir. Çeşitli yollarla bu M- dosyalarını hazırlanabilir. Ya bir komutlar dizisi sayesinde sonuca ulaşılır ya da ‘functionkelimesiyle başlayan bir fonksiyonel dosya oluşturulur. Önemli olan istenilen sonucu kısa zamanda verebilmesidir. M-dosyası oluşturmak için ilk yol ‘file’ menüsünden ‘new’ alt menüsü içeriklerinden M-file’ı seçmektir, bu seçimle istenilen alan oluşturulmuş olur. Başka bir yol ise Command Window’da ‘edit’ yazarak oluşturmaktır. Ardından kullanıcı amacına uygun bir program ya da fonksiyon yazabilir. 1.2. Temel Matematiksel İşlemler Bu program yardımıyla birçok matematiksel işlem kolayca yapılabilir. >> 5^8 ans = 40 >> sqrt(2) ans = 1.41421356237310 % ln(14)+sin(p/4) asagidaki sekilde hesaplanir: >> log(14)+sin(pi/4) ans = 3.34616411080181 Matematiksel işlemlerden önce aşağıdaki komutlar kullanılırsa oluşacak sonucun gösterim formatı değiştirilebilir. format long: istenilen sonucun duyarlılığı gösterir. format rat: sonucu kesirli halde gösterir. format compact: işlem sonucu arasına ekstra boşluk bırakılmaz. Temel trigonometrik operatörler: cos, sin, tan, sec, csc, cot tersleri: acos, asin, atan, asec, acsc, acot Üstel fonksiyon: exp Doğal logaritma: log MATLAB’ de hazır fonksiyonların kullanım şekilleri bilinmek istenirse ‘help’ komutu kullanılır.

Upload: stalker23arm

Post on 20-Oct-2015

7 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Matlab Giris

1

MATLAB PROGRAMLAMAYA GİRİŞ MATLAB, MATrix LABoratory sözcüklerinden gelir ve temelde sayısal ve analitik olarak matematiksel fonksiyonların ifadelerinin kullanıldığı başta mühendislik alanında olmak üzere sayısal analiz yöntemlerini kullanan bilimlerde son yıllarda oldukça sık kullanılan bir hazır yazılım paketidir. Özellikle yüksek performans gerektiren algoritma hazırlama ve geliştirme, sayısal analiz, benzetim, mühendislik problemlerinin sayısal ve grafik çözüm tekniklerinde son derece etkindir. 1.1. M-Dosyaları M-dosyaları MATLAB ortamında kullanılan komutlardır ve veri analizini sağlayan fonksiyonlardır. Bu fonksiyonlar her amaca yeterli olsa da sonuçlara daha hızlı ulaşabilmek için kullanıcıya özel fonksiyonlar yani yeni M-dosyaları oluşturulabilir. Çeşitli yollarla bu M-dosyalarını hazırlanabilir. Ya bir komutlar dizisi sayesinde sonuca ulaşılır ya da ‘function’ kelimesiyle başlayan bir fonksiyonel dosya oluşturulur. Önemli olan istenilen sonucu kısa zamanda verebilmesidir. M-dosyası oluşturmak için ilk yol ‘file’ menüsünden ‘new’ alt menüsü içeriklerinden M-file’ı seçmektir, bu seçimle istenilen alan oluşturulmuş olur. Başka bir yol ise Command Window’da ‘edit’ yazarak oluşturmaktır. Ardından kullanıcı amacına uygun bir program ya da fonksiyon yazabilir. 1.2. Temel Matematiksel İşlemler Bu program yardımıyla birçok matematiksel işlem kolayca yapılabilir.

>> 5^8 ans = 40 >> sqrt(2) ans = 1.41421356237310 % ln(14)+sin(p/4) asagidaki sekilde hesaplanir: >> log(14)+sin(pi/4) ans = 3.34616411080181

Matematiksel işlemlerden önce aşağıdaki komutlar kullanılırsa oluşacak sonucun gösterim formatı değiştirilebilir. format long: istenilen sonucun duyarlılığı gösterir. format rat: sonucu kesirli halde gösterir. format compact: işlem sonucu arasına ekstra boşluk bırakılmaz. Temel trigonometrik operatörler: cos, sin, tan, sec, csc, cot tersleri: acos, asin, atan, asec, acsc, acot Üstel fonksiyon: exp Doğal logaritma: log MATLAB’ de hazır fonksiyonların kullanım şekilleri bilinmek istenirse ‘help’ komutu kullanılır.

Page 2: 1 Matlab Giris

2

1.3. Değişkenler Tüm yazılabilir karakterler (Türkçe karakterler dışında) değişken olarak atanabilir ve ‘=’ olarak verilir.

>> x=23 x = 23

Değişken isimleri büyük ve küçük harf ayrımına hassastır. X ve x değişkenleri ayrı olarak tanımlanabilir.

>> x^2–3*x+2 ans = 30 >> log(x) ans = 1.94591014905531 >> sin(x) ans = 0.65698659871879

Yeni bir ifade için bir önceki değişken kullanılabilir. Her işlem sonucu bellekte saklanır.

>>x=7 x= 7 >> y=8*x y = 56 >> x=x+5 x = 12

who, komutu kullanılan değişken isimlerini verir.

>> who Your variables are: ans x y

whos, komutu değişkenlerin boyut bilgisini verir.

>> whos Name Size Bytes Class ans 1x1 8 double array x 1x1 8 double array y 1x1 8 double array Grand total is 3 elements using 24 bytes

Bellekteki değişkenleri silmek için ‘clear’ komutu kullanılır.

Page 3: 1 Matlab Giris

3

1.4. Karmaşık Sayılar Genel formatı a+ib, a-ib, a+bj, a+jb olan ifadelerdir.

>>2-3i ans = 2.0000 – 3.0000i >> 2–3*i ans = 2.0000 – 3.0000i

Karmaşık sayıların tanımında ‘complex’ fonksiyonu da kullanılabilir. Bu fonksiyon karmaşık sayının gerçel ve sanal kısımlarını verir.

>> x=3;y=4; >> complex(x,y) ans = 3.0000 + 4.0000i

Karmaşık Sayı işlemleri abs: Mutlak değer alır (Genlik bilgisi). angle: Faz açısı. conj: Karmaşık eşlenik. imag: Karmaşık sanal kısım. real: Karmaşık gerçel kısım. 1.5. Temel İstatistiksel İşlemler Özellikle gürültü gibi stokastik veriler üzerinde yapılacak analizler ve değerlendirilmeler için istatistiksel yöntemleri MATLAB’de kullanmak mümkündür. Bilinen en temel komutlar; max: Veri kümesindeki en büyük değeri bulur. min: Veri kümesindeki en küçük değeri bulur. length: Küme içinde kaç eleman olduğunu verir. sum: Kümenin içindeki elemanların toplamını verir. prod: Verilerin çarpımını hesaplar. median: Verilerin ortanca değerini hesaplar. std: Standart sapma. mean: Ortalama değer ya da aritmetik ortalama. geomean: Geometrik ortalama. harmmean: Harmonik ortalama. sort: Küme elemanlarını azalan sırada hazırlar. 1.6. Yuvarlatma İşlemleri fix: Sıfıra doğru yuvarlatır. floor(x):. x’ ten küçük veya eşit en yakın tam sayıya doğru yuvarlatır.

ceil(x): x’ ten büyük veya eşit en yakın tam sayıya doğru yuvarlatır. round: En yakın tamsayıya yuvarlatır

Page 4: 1 Matlab Giris

4

1.7. Matrisler ve Vektörler Matris oluşturmak için köşeli parantez kullanılır ve ’;’ ile satırlar ayrılır.

>> A=[2 11 -3 8; 1 0 8 -3; 7 1 2 5] A = 2 11 -3 8 1 0 8 -3 7 1 2 5

Sonuç verecek olan bir komut satırı sonuna ‘;’ konulursa komut penceresinde o komutun oluşturduğu değişkenin değeri yazılı olarak görünmez.

>> B=[2 0 3; 1 1 3]; Vektörler matrislerin tek kolon halidir ve gösterimleri;

>> v = [ 2; 3; -4] v = 2 3 -4

Bir satır vektörü bir satırı olan bir matristir.

>> w=[3 -2 5 11] w = 3 -2 5 11

Örneğin iki sayı arasında sıralı satir vektörü oluşturmak için 'a:b';

>> 2:5 ans = 2 3 4 5

'j:i:k' bir satir vektörünü tanımlar ve j başlangıç, i artım ve k son elemanı gösterir.

>> 3:2:9 ans = 3 5 7 9

Matrisin transpozu

>> A=[5 -2 9; 11 7 8] A = 5 -2 9 11 7 8 >> A' ans = 5 11 -2 7 9 8

Page 5: 1 Matlab Giris

5

Nokta Çarpım MATLAB dilinde nokta işlemler çarpma “*.” Bölme “./” veya “.\” Üst alma “.^” olarak kullanılır. Yani nokta işaretli işlemler matrislerde elemanter işlem yapılacağını gösterir. n bir skaler olmak üzere na , a matrisindeki her bir elemanın n. kuvvetinin alınacağını ifade eder. Vektörlerin nokta çarpımında, karşılıklı her eleman çarpılır ve birikmiş toplam elde edilir. Nokta çarpım simetriktir aynı sonuç alınır.

>> v=[7; 23; 15; 2], w=[5; -2; 1; -8] v = 7 23 15 2 w = 5 -2 1 -8 >> dot(v,w) ans = -12

Bir vektörün boyu ( ).v v v= .

>> vlength=sqrt(dot(v,v)) vlength = 28.4077

Ya da 'norm' komutu ile de elde edilir.

>> norm(v) ans = 28.4077

İki vektör arasındaki açı θ , ( ). cosv w v w θ= buradan .v warccosv w

θ⎛ ⎞

= ⎜ ⎟⎜ ⎟⎝ ⎠

olarak elde

edilir.

>> theta=acos(dot(v,w)/(norm(v)*norm(w))) theta = 1.6144 >> theta*180/pi ans = 92.4971 %radyan cıkan sonucun derece olarak karsılıgı

Bir matrisin tüm karesel alt matrislerinden, determinantı sıfırdan farklı olan en yüksek boyutlusunun boyutuna A matrisinin rankı denir.

Page 6: 1 Matlab Giris

6

>> A=[1 2 1 4; 2 3 1 3; 3 2 1 2; 4 3 1 1] A = 1 2 1 4 2 3 1 3 3 2 1 2 4 3 1 1 >> rank(A) ans = 3

Ters İşlemler Bir A matrisinin tersi 1A− ; A^(-1) ya da inv(A) ile gösterilir. ‘inv’ ters işlem yapma operatörüdür. Buradaki dikkat edilmesi gereken nokta A matrisin tekil olmamasıdır.

>> A=[2 1 1; 1 2 2; 2 1 2] A = 2 1 1 1 2 2 2 1 2 >> Ainv=inv(A) Ainv = 2/3 -1/3 0 2/3 2/3 -1 -1 0 1

Sonucun sağlanması için tersi ile kendisinin çarpımı birim matrisi vermelidir. 1.8. Hazır Matris Fonksiyonları ‘rand’ veya ‘randn’ fonksiyonları bazı durumlarda yalnızca bir özelliği veya bir şeyi denemek ve durumunu gözlemek için rasgele sayılardan oluşmuş bir matris oluşturmak için kullanılır. ‘rand’ düzenli olarak dağılmış ‘randn’ ise normal olarak dağılmış rasgele sayı üretir. Örneğin; a=-5 ile b=5 arasında yani -5 ile +5 arasında rasgele sayılı 2x4 (iki satır 4 sütunlu) bir matris üretmek istenirse

>>a=-5+10*rand(2,4) a = 4.3547 -0.8973 -4.4211 3.1317 4.1690 3.9365 -1.4713 -4.9014

‘ones’ fonksiyonu elemanları 1 olan bir matris ‘zeros’ fonksiyonu elemanları 0 olan matris oluşturur.

Page 7: 1 Matlab Giris

7

>> s=ones(3) s = 1 1 1 1 1 1 1 1 1 >> d=zeros(4) d = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

‘eye’ fonksiyonu ile birim matris oluşturulur.

>> f=eye(3,3) f = 1 0 0 0 1 0 0 0 1

1.9. Özvektörler ve Özdeğerler Bir kare matrisin özdeğerlerini bulmak için ‘eig’ komutu kullanılır.

>> A=[ 3 1 1; 1 3 1; 1 1 3] A = 3 1 1 1 3 1 1 1 3 >> eig(A) ans = 2.0000 2.0000 5.0000 >> [Q,D]=eig(A) %A caprazlanabilir ise Q = -0.8164 -0.0137 0.5774 0.3963 0.7139 0.5774 0.4201 -0.7001 0.5774 D = 2.0000 0 0 0 2.0000 0 0 0 5.0000

Q matrisinin sütunları A matrisinin özvektörlerini oluşturur 1Q AQ D− = .

>> inv(Q)*A*Q ans = 2.0000 0 0.0000 0.0000 2.0000 0.0000 -0.0000 0.0000 5.0000

Page 8: 1 Matlab Giris

8

Bir matrisin köşegen değerlerinin gösterimi için ‘diag(A)’ kullanılır.

>> a=[2 4 4;2 3 1;3 -2 5] a = 2 4 4 2 3 1 3 -2 5 >> diag(a) ans = 2 3 5

1.10. Grafik Çizimleri ‘plot’ fonksiyonu belirli bir düzlem verisinin grafik gösterimi için kullanılır. En temel çizim komutu olan bu komut üç temel şekilde kullanılabilir:

1. plot(x,y): x ve y matrislerinin elemanlarını koordinat düzleminde (x1,y1), (x2,y2), (x3,y3) … olacak şekilde noktalara yerleştirerek aralarını düz bir çizgiyle birleştirir.

2. plot(y): y matrisinin elemanlarını koordinat düzleminde (1,y1), (2,y2), (3,y3) … olacak şeklindeki noktalara yerleştirerek aralarını düz bir çizgiyle birleştirir.

3. plot(x1,y1,x2,y2): y1 matrisini x1’e göre, y2 matrisini de x2’ye göre çizer.

‘stairs’ komutu sadece stairs(x,y) ve stairs(y) şeklinde kullanılabilir. plot’ tan farklı olarak grafikteki noktaları basamak fonksiyonları şeklinde birleştirerek çizer. ‘stem’ komutu da stem(x,y) ve stem(y) şeklinde kullanılabilir. plot’ tan farklı grafikteki noktaları darbe fonksiyonları şeklinde çizer. ‘subplot’ ve ‘hold on – off’ komutları birden fazla grafik aynı ekranda görülmek isteniyorsa kullanılır. hold on komutu art arda sıralanan grafik çizim komutlarında grafikleri aynı grafik penceresinde üst üste çizer. Bu özellik hold off ile kapatılır. subplot(<satır_sayısı>,<sütun_sayısı>,<kaçıncı_grafik_oldugu>) şeklinde ifade edilebilir. Çizilen grafiğe başlık ‘title’, x ekseni etiketi ‘xlabel’, y ekseni etiketi ‘ylabel’ ve legand ‘legend’ komutlarıyla eklenir. Grafik ekranında grafiğin çizgi rengi, işareti ve şekli istendiğinde değiştirilebilir. Bunun için aşağıda verilen harf, şekil ve işaretler plot( ) fonksiyonuna yazılır.

Renk İşaret Çizgi y sarı * yıldız : nokta m meganta s kare .- nokta sürekli c pembe d elmas - sürekli r kırmızı v üçgen aşağı -- kesikli g yeşil ^ üçgen yukarı b mavi < üçgen sola k siyah > üçgen sağa

Page 9: 1 Matlab Giris

9

1.11. Sembolik Değişkenler ve İfadeleri MATLAB simgesel işlemlerde Symbolic Math Toolkit’i kullanır. Kullanılacak fonksiyonlar ‘help symbolic’ ile görülebilir. Simgesel değişken ve işlemlere giriş yapmak için ‘symintro’ yazmak yeterlidir. Sayısal işlemlerde ve karakter indislerinde bildirime gerek yok iken, simgesel işlemlerde kullanılacak değişkenlerin önceden bildirilmesi gerekir. Örneğin, ‘a’ gibi bir sembolik değişken aşağıdaki gibi bildirilir.

>> sym a ans = a %veya >> sym('a') ans = a

Bir fonksiyonda geçen değişkenler x,y ve z olsun

>> syms x y z %Anlami x=sym('x'), y=sym('y') ve z=sym('z'). >> S=x^2-y^2 S = x^2-y^2

Bu ifadenin faktörü (çarpanları)

>> factor(S) ans = (x-y)*(x+y)

Bir fonksiyonu sadeleştirmek için ‘simplify’ fonksiyonu kullanılır.

>> S=(x^3-4*x)/(x^2+2*x) S = (x^3-4*x)/(x^2+2*x) >> simplify(S) ans = x-2

Fonksiyonları tanımlamak için bir başka yol da ’inline’ komutunu kullanmaktır. Örnek olarak ( ) 2, 3 2g x y x xy= − + fonksiyonu aşağıdaki gibi yazılabilir.

>> g=inline('x^2-3*x*y+2') g = Inline function: g(x,y) = x^2-3*x*y+2

Page 10: 1 Matlab Giris

10

1.12. Polinomlar Polinomlar genellikle tek değişkenli ve sabit katsayılı fonksiyonlardır. Bu fonksiyonların en genel hali aşağıda verilmiştir.

11 1 0 0n n

n na x a x a x a−−+ + + + =… (1.1)

Denklem (1.1)’ de verilen eşitliğin kökleri gerçek veya karmaşık sayı olabilirler. Polinom Kökleri MATLAB’da polinom köklerini bulmak için ilk önce katsayılar dizini Denklem (1.2)’ deki gibi oluşturulur daha sonra roots(kat) yazılarak sonuçlar elde edilir.

[ ]1 1 0, , , ,n nk a a a a−= … (1.2)

Örnek 1.1: 5 3 24 - 2 - - 20 0x x x x + = denkleminin köklerini MATLAB yardımı ile hesaplayınız.

>> k=[4, 0, -1, 2, -1, -20] k = 4 0 -1 2 -1 -20 >>roots(k) ans= 1.3825 0.4639 + 1.3186i 0.4639 - 1.3186i -1.1552 + 0.7187i -1.1552 - 0.7187i

Kökleri Bilinen Polinomun Katsayıların Bulunması Bir polinomun çözüm kümesi biliniyor ise MATLAB onu bir polinom halinden de istenirse yazabilir. poly([ kök1, kök2, kök3]) yazılarak türetilen polinomun katsayıları elde edilir. Örnek 1.2: Kökleri 1 2 34, 1ve 1x x x= = − = olan bir polinom türetiniz.

>> poly([-1,1,4]) ans = 1 -4 -1 4

Bunun anlamı 3 24 4 0x x x− − − = yani polinom elde edilmiş olur. Polinom Değerini Bulmak Eğer bir polinomun verilen herhangi bir değişken değerine karşı gelen polinom değerini bulmak istersek polyval( ) komutu kullanılır.

Page 11: 1 Matlab Giris

11

Örnek 1.3: ( ) 5 3 24 2 20f x x x x x= − + − − fonksiyonunun x = 3 iken değerini hesaplayınız.

>>k=[4, 0, -1, 2, -1, 20] k = 4 0 -1 2 -1 20 >>polyval(k,3) ans = 980

Polinom Çarpımı ve Bölme Polinom çarpımı, bölme ve çıkarma işlemlerinden daha zordur. Bu işlemlerin daha kolay yapılabilmesi adına çarpma için MATLAB conv( ) komutunu ve bölme işlemi için de deconv() komutunu kullanılır. Burada deconv kullanılırken biraz dikkat etmek edilmesi gereken nokta tam bölünememe durumudur. Eğer verilen polinomlar tam bölünmüyor ve fonksiyonun kalanının gösterilmesi isteniyor ise bu durum da [a,b]=deconv(f,g) şeklinde bir komut kullanılmadır. Burada a, bölünen polinomun katsayılarını, b ise bölünmeyen kısmın katsayılarını verir. Örnek 1.4: ( ) 3 22 5 3f x x x x x= − + − ile ( ) 1g x x= − olarak verilirse ( ) ( )f x g x

ve ( ) ( )/f x g x fonksiyonlarını MATLAB ile hesaplayınız.

>> fk=[2 -5 3 -3]; >> gk=[ 1 -1]; >> capma=conv(fk,gk) capma = 2 -7 8 -6 3 >> [bolme,r]=deconv(fk,gk) bolme = 2 -3 0 r = 0 0 0 -3

1.13. Sayısal Türev Türev matematiksel olarak bir ( )f x fonksiyonunun x’ e göre değişim oranı olarak tanımlanır ve Denklem (1.3)’ deki gibi gösterilir.

( ) ( ) ( ) ( )'

0limx

f x x f x df xf x

x dxΔ →

+ Δ −= =

Δ

(1.3)

MATLAB’ da türev işlemi polyder() ve diff(y) fonksiyonlarıyla yapılır. Polinomların türevi alınacak ise polyder(katsayılar) komutu ile kullanılır. Eğer bir fonksiyonu türevi alınacak ise diff() komutu kullanılır. n. dereceden türev diff(f,n) olarak verilir. Bir fonksiyonun bilinmeyen parametrelerine göre türevinin alınması için Jacobian matrisin oluşturulması gerekir. Bunun için ‘jacobian’ komutu kullanılır. Adı diferansiyel denklemlerin çözümü için ‘dsolve’ komutu kullanılmaktadır.

Page 12: 1 Matlab Giris

12

1.14. İntegral Simgesel integral alma fonksiyonu ‘int’ genel kullanım şekli int(s) : findsym ile belirlenen simgesel değişkene göre S’nin belirsiz integralini alır int(s,v) : S’nin v’ye göre integralini alır. int(S,a,b) : S’nin varsayılan değişkene göre a’ dan b’ ye kadar belirli integralini alır. int(S,v,a,b) : S’nin tanımlı a’ dan b’ ye kadar belirli integralini alır. Örnek 1.5: ( )52 4 20x x dx− − +∫ integralinin hesaplanması

>>int(-2*x^5-4*x+20) ans = -1/3*x^6-2*x^2+20*x >> pretty(int(-2*x^5-4*x+20)) 6 2 - 1/3 x - 2 x + 20 x

MATLAB sayısal integral almak için birçok komut kullanmaktadır. Bunlardan bazıları trapz, quad ve dblquad’ dır. Trapz(x,y) Komutu Trapez sayısal integralde kullanılan yöntemlerde trapez yöntemine göre integral hesaplar. Yani verilen x ve y noktalarının oluşturacağı trapezlerin alanı integral değerini verir. Quad(f, xmin, xmax) Komutu Bu komut integral işlemini nümerik olarak yinelemeli Simpson yöntemini kullanarak [a − b] aralığında hesaplar. İntegral I= quad(f,a,b) yazılarak hesaplanabilir. Dblquad komutu MATLAB’de iki değişkenli fonksiyonların integralleri de alınabilir. Yani ( ),f x y gibi iki değişkene bağlı ise fonksiyonun integrali dblquad(f,xmin,xmax,ymax,ymin) şeklinde yazılarak hesaplatılabilir.