2.3. MATRİSLER 2.3.1. Matris Tanımlama Matrisler girilirken köşeli parantez kullanılarak ( [ ] ) ve aşağıdaki yollardan biri kullanılarak girilir: 1. Elemanları bir tam liste olarak girmek Buna göre matris girilirken; o Elemanlar, baştan ve sondan köşeli parantezlerle kapatılır. o Elemanların arasında boşluk veya virgül konulur. o Matris satırlarını ayrımak için noktalı virgül kullanılır. >> A= [1 2 3; 4 5 6] A= 1 2 3 4 5 6 şeklinde veriler matrisler biçiminde tanımlanır. 2. Yerleşik deyim ve fonksiyonları kullanarak matrisler üretmek 3. M-dosyaları kullanılarak matrisler oluşturmak 4. Dış ver dosyalarından matrisleri yüklemek Matris elemanları rastgele rakamlardan oluşabileceği gibi MATLAB in deyimlerinden de oluşabilir. Örneğin; >> A=[-1.3 sqrt(3) (1+2+3/475)] A= -1.3000 1.7321 4.8000 Küçük matrisleri eleman olarak kullanıp daha büyük matrisler oluşturulaiblir: >> M=[A;[10 13 15]] M= -1.3000 1.7321 4.8000 10 13 15 durumunu alır. matrisini oluşturunuz. >> B = [1 exp(-0.02); sqrt(2) 3] B = 1.0000 0.9802 1.4142 3.0000 9
2.3.2. Genel Matrisler Matlab te kullanıcı, matris verilerini kendi oluşturabileceği gibi Matlab in özel matrislerinden de istifade edebilir. Fonksiyon Adı zeros ones rand randn Açıklama Tüm elemanları sıfır olan bir matris oluşturur. Tüm elemanları bir olan bir matris oluşturur. Düzgün dağılımlı rastgele sayılar veya matrisler oluşturur Normal dağılımlı rastgele sayılar veya matrisler oluşturur Örnek Kullanım Z=zeros(2,4) Z=ones(2,4) Z=rand(2,3) Z=randn(2,3) eye Bir birim matris oluşturur Z=eye(3) magic Sihirli kare matris oluşturu. Z=magic(3) 2.3.3. Matris ile Colon(:) Operatörü Kullanımı Z= [0 0 0 0 0 0 0 0] Z= [1 1 1 1 1 1 1 1] Z=[1.0668 0.2944-0.6918 0.0593-1.3362 0.8580] Z=[ -0.4336 3.5784-1.3499 0.3426 2.7694 3.0349] Z=[ 1 0 0 0 1 0 0 0 1] Z=[ 8 1 6 3 5 7 4 9 2] Bir matrisin herhangi satır veya sütunlarından oluşan bir yeni bir matris(alt matris) elde edilebilir. Örneğin R matrisi şu şekilde tanımlansın. >> R=rand(3,2) %Rasgele elemanlara sahip 3x2 lik matris R = 0.9501 0.4860 0.2311 0.8913 0.6068 0.7621 R nin birinci ve ikinci satır ve sütunlarından oluşan bir alt matris >> RR=R(1:2,1:2) RR = 0.9501 0.4860 0.2311 0.8913 olarak elde edilir. İndisler değiştirilmek suretiyle istenilen alt matris elde edilebilir. Özel olarak R nin birinci satırı, >> R(1,:) 0.9501 0.4860 10
R nin birinci sütunu >> R(:,1) 0.9501 0.2311 0.6068 ile elde edilir. Genel olarak R(u,v) ile u ve v indisleri ile belirtilen satır ve sütunlardan oluşan alt matris elde edilir. Örneğin; >> R=rand(4) R = 0.9501 0.8913 0.8214 0.9218 0.2311 0.7621 0.4447 0.7382 0.6068 0.4565 0.6154 0.1763 0.4860 0.0185 0.7919 0.4057 >> u=[1,3]; >> v=[2,3]; >> R(u,v) 0.8913 0.8214 0.4565 0.6154 2.3.4. Matrislerde Toplama Çıkarma Matlab matrislerin toplanması veya çıkarmanın yapılması ancak aynı boyutlu matrisler için geçerlidir. Bu işlemlerde matris elemanlarını karşılıklı olarak toplanır veya çıkartılır. >> A=[1 2 3 ;4 5 6 ;7 8 9] %ve >> B=[1 4 7;2 5 8;3 6 0] %olsun. >> C=A+B %nin sonucu C=[2 6 10;6 10 14; 10 14 0] %olur; Matlab de matrisler bir skaler ile toplamıp veya çıkartılabilir. Bu durumda skaler değer, matrislerdeki tüm değerler ile ayrı ayrı ve tek tek işleme tabi tutulur. Örnek A=[1 1 1; 1 2 3; 1 3 6] B=A+3 %işleminin sonucu B=[4 4 4; 4 5 6; 4 4 9] %olur; 2.3.5. Matrislerin Çarpılması Matrislerde çarpım * sembolü ile gerçekleştirilir. A*B çarpımının gerçekleştirlimesi için A nın sütun sayısı ile B nin satır sayısının eşit olması gerekir. Bu iki matrisin çarpımı sonucunda elde edilecek C matrisinin C(i,j) değeri A nın i. satırı ile B nin j. sütunun nokta çarpımıdır. 11
,,, >> A=[1 2; 3 4]; B=[5 6; 7 8] >> C=A*B C= 19 22 43 50 2.3.6. Matrisin Transpozesi Bir matrisin transpozu satırlarla sütunların yer değitirdiği başka bir matristir. Genelde transpoz üst indis olarak T ile gösterilir. A=[1 2 3;4 5 6; 6 7 8] ise transpozu A T =[1 4 7; 2 5 8; 3 6 9] şeklindedir. Burada yapılan işlem (i,j) konumundaki bir değerin (j,i) konumuna aktarılmasıdır. Matlab de bir matrisin transpozu ( ) üstten virgül karakteri ile ifade edilir. Yani bir matriisn transpozu gösterilirken A şeklinde yazılır. >> A= [6 0-3; 2 0-1;8 0-4] >> B=A B= 6 2 8 0 0 0 8 0-4 Eğer A matrisi karmaşık sayılardan oluşuyorsa A karmaşık eşlenik transpozedir. Eşlenik olmayan bir transpose elde etmek için ya A. ya da conj(a ) komutları kullanılır. Örnek; >> Z=[1+2i 3+4i] Z = 1-2i 3-4i Z. = 1+2i 3+4i 2.3.7. Matrisin Köşegen Elemanları 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) 12
1 5 9 diag komutu bir vektör ile kullanılırsa köşegenin elemanları vektöre elemanları olan diğer elemanları 0 olan yeni bir matris oluşturulur. >> diag([1 5 9]) 1 0 0 0 5 0 0 0 9 >> diag(1:5) 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 2.3.8. Matrisin Determinantı det komutu bir matrisin determinantını hesaplar. A=[ 2 3 2; 5 4 1; 2 6 8] >> det(a) -18 2.3.9. Matrisin Tersi Tanıma göre bir kare matris olan A nın tersi A -1 olup A*A -1 ve A -1* A çarpımlarının her ikisinin de birim matrise eşit olması gerekir. Yani A*A -1 =A -1 *A=I Matlab bir matrisin tersi inv komutu ile gerçekleştirilir. >> A=[2 3; 4 1] A= 2 3 4 1 >> B=inv(A) B= -0.1000 0.3000 13
0.4000-0.2000 >> A*B ans= 1.0000-0.0000 0.0000 1.0000 >> B*A ans= 1.0000-0.0000 0.0000 1.0000 >> A = [0 1 0;0 0 1;-6-11 -6]; >> inv(a) -1.8333-1.0000-0.1667 1.0000 0 0 0 1.0000 0 2.3.10. Matrislerin Bölünmesi Matlab te ik farklı (/ ve \) bölme işlemcisi vardır. Eğer A değeri, tekil olmayan bir kare matris ise A\B ifadesi; A matrisnin tersinin B matrisi ile soldan çarpımı (inv(a)*b) ve B\A ifadesi ise A matrisinin tersinin B matrisi ile sağdan çarpılmasını (B*inv(A)) temsil eder. X=A\B ; AX=B denklem sistemindeki X in çözümünü bulur. X=B/A; XA=B denklem sistemindeki X in çözümünü bulur. 2.3.11. Matrislerin Kuvvetini Alma Bir A matrisnin kuvvetini almak için A^p deyimini kullanmak yeterlidir. Burada A matrisi bir kare matris ve p ise bir skaler sayıdır. Bir A kare matrisi için A^4 işlemi A*A*A*A işlemine denktir. 2.3.12. Matrislerde Nokta (.) Operatör İşlemleri Vektörlerde tanımlandığı gibi noktalı çarpma operatörü aynı sayıda bileşene sahip olan iki matrisin karşılıklı elemanlarının çarpılmasıyla yeni bir matris oluşturur. Normal çarpma işlemindeki birinci matrisin sütun sayısı ile ikinci matrisin satır sayısının eşit olma zorunluluğu burada ortadan kalkacaktır. Bunun yerine iki matrisin satır sayılarının ve sütun sayılarının eşit olması zorunluluğu vardır. >> x = [1 2 3], y = [4 5 6] >> z = [x.*y] z = 4 10 18 Benzer biçimde noktalı bölme x./y ile x matrsininin her bir bileşeninin y matrisinde karşılık gelen bileşenine bölünmesi suretiyle yeni bir matris oluşturur. Burada ise normalde ikinci matrisin 14
tersinin alınabilir olması zorunluğu ortadan kalkacaktır. Yine iki matrisin satır sayılarının ve sütun sayılarının eşit olması zorunluluğu vardır. >> u = x./y u = 0.2500 0.4000 0.4000 0.1429 1.5000 1.6000 x.^p şeklinde tanımlanan noktalı üs işlemi sonucunda ise x in her bir bileşeninin p. kuvveti alınarak yeni bir matris oluşturur. >> A = [1 2 ; 3 4]; >> A.^2 ans= 1 4 9 16 2.3.13. Matrisin Özdeğer ve Özvektörleri Bir matrisin öz değerlerini bulmak için eig(a) komutu kullanılır: >> A = [0 1 ; -1 0] >> eig(a) 0+1.0000i 0-1.0000i Öz vektörleri bulmak da tek satirlik bir işlem gerektirmektedir. Aslında öz değerleri bulmak için verilen [X,D] = eig(a) komutu ayni zamanda öz vektörleri de bulduğu için her iki bilgiye aynı anda ulaşma imkânı 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 vektörünü göstermektedir. D sonuç matrisinin diyagonalindeki (köşegenindeki) elemanların her biri de verilen A matrisinin öz değerlerini göstermektedir. 15
2.3.14. Diğer Fonksiyonlar: trace() : Bir matrisin izini hesaplar rank() : Bir matrisin rankını hesaplar. expm() : e tabanına göre bir matrisin üssünü hesaplar. e A Matris üssü ( expm(a) ) nxn matrise uygulanır. Matematiksel tanımı ise şu şekildedir: expm(a) = I + A + A 2 /2! + A 3 /3! +... logm() : bir matrisin doğal logaritmasını hesaplar. expm fonksiyonunun tersidir. sqrtm() : bir matrisin karekökünü hesaplar sum( ) : Bir matrisin sütun değerlerinin toplamını içeren bir vektör üretir. min( ) : Bir matrisin sütun değerlerinin en küçüğünü içeren bir vektör üretir. max( ) : Bir matrisin sütun değerlerinin en büyüğünü içeren bir vektör üretir. mean( ) : Bir matrisin sütun değerlerinin ortalamasını içeren bir vektör üretir. pinv() : Bir matrisin yalancı tersini alır. 2.3.15. Alıştırmalar cevaplandırınız. matrisi verilmiş olsun. Aşağıda verilen soruları bu matrisi kullanarak 1. A matrisinin aşağıda belirtilen fonksiyonlarını hesaplayarak sonuçları lineer cebir bilgilerinizle yorumlayınız. det(a) det(a ) det(4a) 2. Bir matrisinin herhangi bir veya birden fazla satır veya sütunu alınarak başka bir matris veya vektör oluşturulabilir. Aşağıdaki işlemleri MATLAB komut penceresinde gerçekleştirerek A matrisinden vektör veya alt matrislerin nasıl elde edildiğini inceleyiniz: B=A(:,1) B=A(1,:) B=A(1:2,:) B=A([1 3], [2 3]) 3. A matrisine sırasıyla bir ve iki kez uygulanan diag fonksiyonunun işlevini aşağıdaki komutlar yardımıyla inceleyiniz. B=diag(A) B=diag(diag(A)) 16
4. A matrisine sırasıyla bir ve iki kez uygulanan min ve max fonksiyonlarının işlevlerini aşağıdaki komutlar yardımıyla inceleyiniz. B=min(A) B=min(min(A)) B=max(A) B=max(max(A)) 5. A matrisinin öz değer ve öz vektörlerini ([V,D]=eig(A)) bularak aşağıdaki özdeşliklerin sağlandığını kontrol ediniz. Bu özdeşliklere göre hangi öz vektör hangi öz değere aittir? A*V(:,1)=D(1,1)*V(:,1) A* V(:,2)=D(2,2)*V(:,2) A* V(:,3)=D(3,3)*V(:,3) 6. \ ters bölme operatörü Ax=b denklem sisteminin varsa çözümünün belirlenmesi, yoksa eşitliği sağlayan en yakın(iyi) çözümün belirlenmesini sağlar. Buna göre aşağıdaki matris ve sağ yan vektörleri için ilgili denklem sistemlerin çözümünü belirleyerek, elde ettiğiniz sonuçları lineer cebir bilgilerinizle karşılaştırınız: A=[1,2;2, 1]; b=[3,1]' A=[1,2;2,4]; b=[3,6]' A=[1,2;2,4]; b=[3,7]' A=[1,2;2, 1;1,3]]; b=[1, 1,2]' 7. Rasgele değerlerden oluşan 3x4 boyutunda bir matris (R) oluşturun ve bu matrisi aşağıdaki işlemleri yapmak için kullanın. - R matrisindeki değerlerin 100 katını tutan ve değerleri tamsayı olan bir R2 matrisi oluşturun - R2 matrisine yeni bir satır ekleyerek 4x4 lük R3 matrisi oluşturun. Yeni satır R2 matrisinin her sütununun ortalamasını içerecektir. - R3 matrisinin ana köşegen değerlerinin en büyüğünü bulunuz - R3 matrisinin köşegenleri değerleri 0 olan R4 matrisni üretiniz. 17