MATLAB KULLANIMI VE MATRIS İŞLEMLERİ
“Matlab” programı ( MATrix LABoratory 'nin ilk üç harfleri alınarak isimlendirilmiştir.) mühendislik uygulamalarının, hesaplamalarının ve simülasyonlarının çoğunun gerçekleştirildiği matris ve matematik tabanlı kompleks bir programdır. Her türlü grafiksel sonuçlar istenilen tarzda alınabildiği için kullanimalani çok geniştir. Ayrıca MATLAB versiyonlarından en az 6.0 ve üzeri olanlarininkullanilmasi güncellik açısından daha yararlı olacaktır.
Bu bölümde programı kullanmaya başlamak için giriş komutları, matematiksel fonksiyonlar ve matris operatörleri anlatılacaktır. Ayrıca kılavuzun en son kısmında da en çok kullanılan matris komutları ve fonksiyonları tablo halinde verilmiştir.
help ‘fonksiyon ismi’
Komutu yazıldığında yardim istenilen fonksiyon hakkında detaylı bilgiye ulaşılabilmektedir.
help help
Yazıldığında ise on-line olarak yardim kılavuzunun nasıl kullanılacağı hakkında bilgilere ulaşılabilmektedir.
1.1 Matris Operatörleri:
Aşağıda verilen simgeler matris işlemlerinde kullanılmaktadır:
+ Toplama
- Çıkarma
* Çarpma
^ Kuvvet alma
‘ Konjüge trans pozunu alma
1.2 Mantık ve İlişki Operatörleri:
< Küçük & Ve
Büyük ~ Değil
~= Eşit değil
— Başlangıç olarak komut satırına:
data
Yazılırsa program tarafından geçerli olan tarih alınacaktır. Yani:
ans=
30-Oct-2002
-- MATLAB bir işlemin sonucunu ans= .... şeklinde gösterir. ( ans = answer = cevap)
-- MATLAB programından çıkmak için ise exit veya quit yazmak yeterli olacaktır.
-- En son yazılan komutların hepsine üst ve alt yön tuşlarına dokunarak kolay bir şekilde ulaşılabilir.
-- En son tanımlanan herhangi bir ‘x’ değeri için yapılan işlemlerden sonra bu ‘x’ değeri komut satırına yazılıp enler tuşuna basılırsa daha önce neye karşılık olarak tanımlandığı ekrana yazılacaktır.
-- nx1 veya 1xn boyutunda vektör tanımlamak için :
x=[1 2 3 -4 -5] veya
X=[1,2,3,-4,-5] yazılmalıdır.
Yukarıdaki iki yazım biçiminden okuma kolaylığı olması için ilk yazılan tip kullanılacaktır.
-- Tanımlanan bu satir vektörünü sütun vektörüne dönüştürmek için :
y=x’ yazılırsa ekranda görülen değer aşağıdaki gibi olacaktır:
y=
1
2
3
-4
-5
-- Matris tanımlamak için asagidaki A matrisi verilmiş olsun :
1.2 10 15
A = 3 5.5 2
4 6.8 7
Bu matrisi MATLAB’e tanıtmak için su şekilde yazılmalıdır:
A = [1.2 10 15 ; 3 5.5 2 ; 4 6.8 7]
Yani her satirin sonunun neresi olduğunu konulan noktalı virgül işareti temsil etmektedir.
-- Örnek olarak asagidaki B matrisini tanıtmak için:
1 e-0.02
B =
v2 3
B = [1 exp(-0.02); sqrt(2) 3] seklinde yazılmalıdır.
Ekranda ise su şekilde gözükecektir:
B = 1.0000 0.9802
1.4142 3.0000
-- Apostrofa işareti (‘) matrisin Konjüge transpozesinin alınmasına yarar. Eğer matris reel bir matris ise basit olarak transpoze alim işlemi olarak da tanımlanabilir..
Yeni bir A matrisi tanımlayalım:
A = [1 2 3 ; 4 5 6 ; 7 8 9]
Ekranda görülecek matris su şekilde olacaktır :
A =
1 2 3
4 5 6
7 8 9
5
Bu matrisin transpozesini almak için :
C = A’ yazılırsa ekranda görülecek transpoze değeri :
C =
1 4 7
2 5 8
3 6 9
-- Kompleks sayıların girilmesi için ise i2=-1 denkleminin kökü i veya j olarak tanımlanır.
Örnek olarak 1+jv3 değerini tanıtmak için:
X = 1+sqrt(3)*i veya
X = 1+sqrt(3)*j olarak yazılmalıdır.
Bu kompleks sayı üstel formatta da yazılabilmektedir:
1+jv3 = 2 exp[(? /3)*j]
Bu durumda komut satırına asagidaki ifade yazılacaktır:
x = 2 exp[pi/3)*j]
i ve j daha önceden değişken olarak kullanılmışsa tanımlama için ii ve jj kullanılacaktır. Yani :
ii = sqrt(-1)
jj = sqrt(-1)
Dolayısıyla asagidaki yazım da mümkün olmaktadır:
X = 1+sqrt(3)*ii
X = 1+sqrt(3)*jj
6
-- Kompleks matris tanımlamak için asagidaki X matrisi verilmiş olsun:
1 j
X =
-j5 2
Komut satırına ise su şekilde girilecektir :
X = [1 j ; -j5 2]
Bu durumda ekranda görülecek deger :
X =
1.0000+0 0+1.0000i
0-5.0000i 2.0000+0
Y = X’ komutu yazılırsa:
Y =
1.0000+0 0+5.0000i
0-1.0000i 2.0000+0 iletisi ekranda okunacaktır.
Daha önce de belirtildiği gibi yukarıdaki işlem Konjüge transpoze olarak algılanmaktadır. Eğer sadece transpoze alınacaksa (konjügesiz) komut su şekilde yazılmalıdır :
Y.’ veya conj(Y’)
Bu durumda ekranda gözükecek değerler :
ans =
1.0000+0 0-1.0000i
0+5.0000i 2.0000+0
-- Toplama ve çıkarma işlemlerinin yapılması için asagidaki M ve N matrisleri verilmiş olsun :
2 3 1 0
M = 4 5 N = 2 3
6 7 0 4
Bu değerleri ekrana girmek için:
M = [2 3 ; 4 5 ; 6 7]
M =
2 3
4 5
6 7
N = [1 0 ; 2 3 ; 0 4]
M =
1 0
2 3
0 4
Toplama işlemi için:
C = M+N
C =
3 3
6 8
6 11
Eğer x vektörü su asagidaki gibi verilirse:
5
X = 4
6
Bu vektörü su şekilde tanıtmak gerekir:
X = [5 ; 4 ; 6]
Örneğin T = X-1 gibi işlemi gerçekleştirmek için :
T = X-1
T =
4
3
5
8
-- Matris çarpımı daha önce de belirtildiği gibi * çarpma operatörüyle yapılmaktadır.
Asagidaki örnek incelenirse çarpmanın da tanımı gereği çarp ilan matrislerin boyutlarının uyuşması gerekmektedir. Aksi takdirde çarpma işlemi yapılmayacak ve hata mesajı verilecektir.
x = [1 ; 2 ; 3]; y = [4 ; 5 ; 6]; A = [1 1 2 ; 3 4 0 ; 1 2 5]
x’*y
ans =
32
x*y’
ans =
4 5 6
8 10 12
12 15 18
b = A*x
b =
9
11
20
Bunların dışında matris bir skiler değerle de çarpılabilir :
5*A
ans =
5 5 10
15 20 0
-- Matris üssü ( expm(A) ) nxn matrise uygulanır.Matematiksel tanımı ise şu şekildedir:
expm(A) = I + A + A2/2! + A3/3! + ...
Eğer A kompleks bir matris ise abs(A) değeri de kompleks modül değerler üzerinden hesaplanacaktır. Yine matematiksel ifadesine bakacak olursak :
abs(A) = sqrt(real(A).^2 + imag(A).^2)
9
angle(A) ise faz açılarını radyan cinsinden A kompleks matrisi için hesaplamaktadır.
Burada tanım değerleri –? ve + ? arasında kabul edilmektedir.
Sonuç olarak verilen bir K matrisi için asagidaki uygulama incelenebilir:
A = [2+2*i 1+3*i ; 4+5*i 6-i];
abs(A)
ans =
2.8284 3.1623
6.4031 6.0828
angle(A)
ans =
0.7854 1.2490
0.8961 -0.1651
-- Kompleks bir sayının modülü ve faz açısını bulmak için :
z = x + iy = reiT
r = abs(z)
theta = angle(z)
z = r*exp(i*theta)
-- Bir vektörün elemanlarının teker teker karesinin alınması işlemi su şekilde yapılmaktadır:
x = [1 2 3];
x.^2
ans=
1 4 9
Eger kompleks sayılar mevcut ise :
y = [2+5*i 3+4*i 1-i]
y.^2
ans =
-21.0000+20.0000i -7.0000+24.0000i 0-2.0000i
2x2 bir kare matris olursa yine ayni şekilde:
A = [1 2 ; 3 4];
A.^2
ans =
1 4
9 16
-- Eleman elemana çarpma işlemi için çarpma operatörünün önüne bir nokta işareti (.)
Konmaktadır:
x = [1 2 3], y = [4 5 6]
z = [x.y]
z = [4 10 18]
Bir örnek daha verilirse:
1 2 3 4 5 6
A = B =
1 9 8 7 6 5
C = A.*B
C =
4 10 18
7 54 40
-- Bir matrisin tüm elemanlarının tek tek karesini almak için:
A=[ 1 2 3 4 ]
A.^2
ans =
1 4 9 16
-- Eleman elemana bölme için ise:
u = x./y
11
u =
0.2500 0.4000 0.4000
0.1429 1.5000 1.6000
-- Bir matrisin tersini bulmak için inv(A) komutu kullanılır:
A = [0 1 0;0 0 1;-6 -11 -6];
inv(A)
ans =
-1.8333 -1.0000 -0.1667
1.0000 0 0
0 1.0000 0
-- Çeşitli komutlar ve durumlar tek bir sırada virgül (,) veya noktalı virgül ile ([img]images/smilies/wink.gif[/img] ayrılarak yazılabilir.
-- Çıkış formatını istediğimiz uzunlukta elde edebiliriz. Eğer matris elemanları tamsayı ise bu durum sonuçta bir değişiklik yapmayacaktır. Bunun için asagidaki komutları kullanmak gerekmektedir:
format short
Format long
x = [1/3 0.00002];
x
x =
0.3333 0.0000
format short; x
x =
0.3333 0.0000
format long; x
x =
0.3333333333333333 0.00002000000000000
12
-- 1’den 5’e kadar sayıları 0.5’lik aralıklarla yazdırmak istersek iki nokta’yı ( kullanmak yeterli olacaktır:
t =
1 2 3 4 5
t = 1:0.5:3
t =
1.0000 1.50000 2.0000 2.50000 3.0000
Düzgün azalan biçimde yazdırırsak :
t = 5:-1:2
t = 5 4 3 2
-- Bir matrisin i. satirini veya j. sütununu görüntülemek için aşağıda tanımlanan A matrisini komutlarıyla inceleyelim:
Asagidaki A matrisinin 2. satiri görüntülemek için: A(i ,
A = [0 1 0;0 0 1;-6 -11 -6]
A(2 ,
ans =
0 0 1
A matrisinin 3. sütununu görüntülemek için :
A(: , 3)
ans =
0
1
-6
-- Bir matrisin (i,j) ninci elemanını bulmak için:
k = A(3,3)
k = -6
13
-- Bir matrisin boyutlarını öğrenmek için size(A) komutu, rankini bulmak için renk(A) kullanılır.
A=
2 3 2
5 4 1
2 6 8
size(A)
ans =
3 3
rank(A)
ans =
3
-- Bir matrisin determinantını bulmak için det(A) komutu kullanılır.
A=
2 3 2
5 4 1
2 6 8
det(A)
ans =
-18
-- Bir matrisin normunu bulmak için ise norm(x) yazmak gerekmektedir. Matematiksel norm ifadesini verecek olursak:
norm(x) = sum(abs(x).^2)^0.5
x = [2 3 6]
norm(x)
ans =
7
14
-- Bir matrisin özdegerlerini bulmak için eig(A) komutu kullanılır :
A = [0 1 ; -1 0]
eig(A)
ans =
0+1.0000i
0 -1.0000i
-- Öz vektörleri bulmak da tek satirlik bir işlem gerektirmektedir. Aslında özvektörleri bulmak için verilen [X,D] = eig(A) komutu ayni zamanda öz değerleri de bulduğu için her iki bilgiye ayni anda ulaşma imkanı olmaktadır :
A = [0 1 0 ; 0 0 1 ; -6 -11 -6]
[X,D] = eig(A)
X =
-0.5774 0.2182 -0.1048
0.5774 -0.4364 0.3145
-0.5774 0.8729 -0.9435
D =
-1.0000 0 0
0 -2.0000 0
0 0 -3.0000
Burada X sonuç matrisinin her bir sütunu verilen A matrisinin bir öz değerini göstermektedir. D sonuç matrisinin diyagonalindeki (köşegenindeki) elemanların her biri de verilen A matrisinin özdegerlerini göstermektedir. Verilen es boyutlu farklı iki A ve B gibi matrisin genelleştirilmiş öz değerlerini ve öz vektörlerini bulmak için ise [X,D] = eig(A,B) komutu yazılmalıdır.
-- Karakteristik denklemi bulmak için poly(A) komutu kullanılır.
A = [0 1 0 ; 0 0 1 ; -6 -11 -6]
p = poly(A)
p =
1.0000 6.0000 11.0000 6.0000
Burada görülen sonuç katsayıları karakteristik denklemin katsayılarıdır.
Yani :
s3 + 6s2 + 11s + 6 = 0
-- Bir polinomun köklerini bulmak için roots(a) komutu yazılmalıdır. Yukarıdaki karakteristik denklemin köklerini bulmak istersek :
r = roots(p)
r =
-3.0000
-2.0000
-1.0000
-- Polinomlarin çarpımı için conv(a,b) komutu kullanılır.
a(s) = s2 – 20.6
b(s) = s2 + 19.6s + 151.2
a(s) ve b(s) Polinomlarin çarpmak için :
a = [1 0 -0.26]; b = [1 1.96 151.2]
c = conv(a,b)
c =
1.0e+003
0.0010 0.0196 0.1306 -0.4038 -3.1147
Dolayısıyla çarpım sonucu su şekilde yazılabilir :
c(s) = s4 + 19.6s3 + 130.6s2 – 403.8s – 3114.7
-- Bir polinomda herhangi bir tamsayı değerini hesaplatmak için polyval(c) komutu kullanılır :
p(s) = 3s2 + 2s + 1
p = [3 2 1];
polyval(p,5)
ans =
86
-- 1 ve 0 sayılarının istenilen matrissel boyutta çabuk olarak üretilebilmesi için ones(m,n) ve zeros(m,n) komutları kullanılabilir:
16
ones(2,2)
ans =
1 1
1 1
zeros(3,3)
ans =
0 0 0
0 0 0
0 0 0
-- Birim matris de eye(n) komutuyla istenilen boyutta olusturulabilir :
eye(5)
ans =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
-- Bir matrisin köşegenindeki elemanları listelemek için diag(A) komutu kullanılır :
A = [1 2 3 ; 4 5 6 ; 7 8 9] ;
diag(A)
ans =
1
5
9
Köşegenin elemanları haricindeki matris bileşenleri 0 olarak göstermek istersek :
diag(diag(A))
ans =
1 0 0
0 5 0
0 0 9
17
Köşegen matrisi oluşturmayla alakalı asagidaki diğer örnekler de incelenebilir :
diag(1:5)
ans =
1 0 0 0 0
0 2 0 0 0
0 0 3 0 0
0 0 0 4 0
0 0 0 0 5
diag(0:4)
ans =
0 0 0 0 0
0 1 0 0 0
0 0 2 0 0
0 0 0 3 0
0 0 0 0 4
[diag(1:5) – diag(0:4)]
ans =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
-- Bir matrisi rasgele olarak oluşturmak için rand(n) komutu kullanılır.0 ile 1 arasındaki sayıları alır.
rand(4)
ans =
0.3654 0.6739 0.3603 0.0493
0.1400 0.9994 0.5485 0.5711
0.5668 0.9616 0.2618 0.7009
0.8230 0.0589 0.5973 0.9623
Blogda Aramak İçin TIKLAYINIZ
|
|
Matlab kullanımı ve Matrisleri
*
Bu yazı tarih olarak: Pazar, Mayıs 24, 2009
eklenmiştir.Kategorisi
Matetematik Dersi Konu Anlatımları
.
Bu yazıya yapılacak yorumlardan haberdar olmak için feed. Bu yazıya yorum yazabilirsiniz.
Kapsamlı ve ayrıntılı dokümanlar için TIKLAYINIZ