google it!

16.02.2010

Kompleks Sayılar ve Matlab

     Herkese Merhabalar,

  Şimdi diyeceksiniz ki ne gerek var böyle şeylere, ancak demeyin öyle! İlerleyen zamanlarda göreceğimiz teorileri anlayabilmek ve simule edebilmek için kompleks sayılar ve matrisleri kısaca hatırlayacağız. Bu yazımda kompleks sayılar ve Matlab da ilgili fonksiyonlar üzerinde duracağım. Matrisler ise bir sonraki konu...

   Hepimizin bildiği gibi matematikte i karakteri kök içinde -1 e eşittir.(blog olduğu için denklem yazmakta sorun yaşıyorum.kusura bakmayın). Ancak biz elektronik mühendisleri i yerine daha çok j yi kullanıyoruz. Aslında bu j başka bir değerle çarpıldığında (vektörle çarpıldığında) saat yönünün tersinde 90 derece dönmesine sebep olur. Aşağıdaki şekil üzerinden anlamaya çalışalım.


   Şekilde görüldüğü gibi A vektörü x ekseninin pozitif kısmında bulunmaktadır. A vektörünü her j ile çarpışımızda saat yönünün tersinde 90 derece dönmektedir. Hatırlayacağınız gibi x eksenine reel kısım, y eksenine ise imajiner kısım diyoruz. Bu durumda eğer A=a+jb şeklinde bir vektörümüz olursa a=Re{A} ve b=Im{A} olacaktır. Kompleks sayılar üzerinde toplama ve çıkarma yaparken reel kısımlar ve imajiner kısımlar birbirleriyle toplanır veya çıkarılır, yani reel kısımlarla imajiner kısımlar arasında işlem yapılmaz. Aşağıdaki şekilde bu durum gösterilmiştir.


     Kompleks sayılar çarpılırken ise dağılma özelliği esas alınır.


    Bir kompleks sayının hatırlayacağınız üzere birde eşleniği bulunmaktadır. a+jb şeklinde bir kompleks sayının eşleniği
a-jb şeklindedir. Matlabda eşlenik almak için conj() fonksiyonunu kullanırız.

    Eşleniği alınan bir kompleks sayının reel kısmının yönü sabit kalıp, imajiner kısmı 180 derece ters döner. Kompleks sayılar için bölme işleminde ise paydada ki kompleks değerin eşleniği alınır ve hem pay hemde payda bu değer ile çarpılır. A=a+jb kompleks sayısını, B=c+jd sayısına bölme işlemi aşağıda ki gibidir.


   Şimdi gelelim kompleks sayıların üstsel(eksponansiyel) ve polar formda gösterimlerine. Aşağıdaki şekilde ki gösterime hatırlayacağınız gibi Euler açılımı diyoruz.

   Eğer bu kompleks sayıları C ile gösterdiğimiz bir sabitle çarparsak şu şekli alır;

   Yukarıda ki eşitlik bir kompleks sayıyı temsil etsin ve bu sayıya a+jb diyelim. Bu durumda
                                                                             
şeklinde olacaktır. Bu durumda a = Ccosθ ve b = Csinθ olacaktır. Reel ve imajiner kısımdaki sayıların karelerini alır ve toplarsak
                                                      
bu kompleks sayının genliğini bulmuş oluruz. b yi a ya oranladığımızda ise
                                                                             
kompleks sayımızın açısını elde ederiz. Sonuç olarak diktörtgensel formdan üstsel forma geçiş için;
                                                                
üstsel formdan dikdörtgensel forma geçmek için;
 

eşitliklerini kullanırız. Polar formda gösterim biçimi ise;

                                                                               
 şeklindedir. Ayrıca unutulmaması gereken bir nokta ise açıyı hesaplarken her zaman pozitif x eksenini referans olarak alırız. 
    Şimdi bir örnekle bu öğrendiklerimizi Matlab da nasıl uygulayabiliriz onu anlamaya çalışalım. y=-1+j2 kompleks sayısını reel ve imajiner eksende ifade edersek aşağıdaki şekilde ki gibi bir sonuç elde ederiz.
 
Burada kök 5 değeri y vektörünün genlik değerini gösterirken 116.6 derece ise x ekseninin pozitif kısmı referans alınması durumunda açısını gösterir.  Matlab da bir komplek sayının genliğini bulmak için abs() açısını bulmak için angle() fonksiyonunu kullanırız. Burada unutulmaması gereken Matlab ın angle() fonksiyonu ile hesapladığı değer derece değil radyan cinsindendir. Dolayısıyla sonucu derece cinsinden görmek için angle(y)*180/pi şeklinde kullanmalıdır. Aşağıda Matlab örneği gösterilmiştir.
                                                                             
 
     Bir sonraki yazımda matrisleri hatırlayacağız, görüşmek üzere....

 Kaynak:Signals and Systems with Matlab Applications Steven T. Karris





15.02.2010

Matlab ı tanıyalım 2

     Sevgili Arkadaşlar,

    Matlab gerçektende çok basit. Önemli olan teorileri anlamak ve öğrenmek. Neyse devam edelim.

    Matlab da dizi oluşturmak için köşeli pazantezleri kullanırız. Örneğin;


   şeklinde oluşturabiliriz. Ancak dizimiz gene ardışık ancak uzun bir dizi olabilir. bu durumda dizi uzunluğuna 1000 dersek,
N=1000;
a=1:N;
   şeklinde 1000 uzunluklu bir dizi oluşturabiliriz. Bu dizi içeriği 1 den başlayarak 1 er 1 er artar ve 1000 de sonlanır. Görüldüğü üzere köşeli parantez kullanmadan da istediğimiz uzunlukta dizi oluşturabiliriz. Ancak köşeli parantez kullanmanın avantajı dizi elemanlarını istediğimiz doğrultuda atayabilmemizdir. Aşağıda ki kodda köşeli parantez kullanılmadan dizi oluşturulmuştur.

Peki diziler üzerinde nasıl işlem yaparız. Öncelikle toplama işlemine bakalım. "+" karakteri iki dizinin n. elemanlarını toplayarak yeni toplam dizisinin n. elemanına atar. Dolayısıyla toplanacak iki dizinin boyutları eşit olmak zorundadır.
   Yukarıda ki şekilde dizi toplamı gösterilmiştir. Aynı şekilde çıkarma işlemi içinde dizi boyutları eşit olmalıdır.
                                                                          
    Şimdi gelelim çarpma ve bölme işlemlerine! Dizileri çarpım ve bölmesindede gene dizi uzunlukları birbirine eşit olmalıdır. Aksi takdirde
                                                             
şeklinde bir hata ile karşı karşıya gelirsiniz. Bunun için dizi uzunluklarına ve birde çarpma ve bölme karakterlerinin önlerine "." nokta karakteri koymayı unutmayınız. Yani çarpma için ".*" ve bölme için "./" karakterlerini kullanmak zorundayız. Örneklerle görelim!
                                                                            
   Yukarıda iki dizinin çarpını görüyoruz. Dikkat edileceği gibi iki dizinin de n. elemanları çarpılarak yeni dizinin n. elemanı na atanıyorlar. Ve çarpımdan oluşan dizi gene aynı boyutta oluyor. Bir de bölme işlemini görelim.
                                                                          
    Bölme işlemide çarpma işlemiyle aynı özelliklere sahip olup, "./" operatörüne dikkat edilmelidir. Bildiğimiz gibi diziler tek boyutludur. Yani 1 satırdan ve N (pozitif bir tamsayı) sütündan oluşurlar. Ancak MxN yani M satır ve N sütundan oluşan bir dizi yani matrisi nasıl oluşturabiliriz. Örneğin 2 satır ve 2 sütundan oluşan (2x2) bir matris oluşturalım.
                                                                              
   Yukarıda ki örnekte 3. satıra geçmek isteseydik bir noktalı virgül açıp 3. satırın elemanlarını girecektik. Yani açtığımız her noktalı virgül bir satırı gösterecek. Boyut sorunu matris çarpımındada karşımıza çıkar. İki matrisi çarpabilmemiz için şu şekilde bir şartı sağlamalıdır;
                                                                                         
 

    Yukarıda ki şekilden de görüldüğü gibi bu 2 matris 3 satırdan oluşmaktadır. Dolayısıyla çarpılabilirler ve bu çarpımın sonucuda her iki matrisin sütün sayıları ile (2x1) şeklinde olacaktır. Unutmamalıki 2 matrisi çarpabilmek için her ikisininde satır sayıları eşit olmalıdır. Matris çarpımına bir örnek verelim;
           
                                                                                
    Son olarak 2 fonksiyonu daha tanıtacağım. Bunlardan birisi ones(), diğeri ise zeros() fonksiyonudur. ones() fonksiyonu ile 1 lerden oluşan diziler ya da matrisler aynı şekilde zeros() fonksiyonu ile de 0 lardan oluşan diziler ya da matrisler oluşturabiliriz. Birkaç örnek;
                                                                          
            

Şimdilik bu kadar arkadaşlar. Ancak Matlab üzerine yazılarım devam edecek. Görüşmek üzere!
  

Blogu faydali buldunuz mu?

İzleyiciler