Lineer Cebir

DERS 4 : LİNEER CEBİR
MATLAB’da bu derste Lineer Cebir incelenecek.Bunu incelemek bize MATLAB’in matematiksel özelliklerini kullanmada ve lineer denklemleri çözmede yardım edecektir.


Lineer Denklemlerin Çözülmesi

İlk olarak lineer denklemlerin çözülmesini genel olarak inceleyelim.
                4x1 + 5x2 = 6
            3x1 -2x2 = 14
Buradaki amacımız x1 ve x2 yi bulmak.
>> A = [4 5; 3 -2]     
A matrisi eşitliğin sol taraftaki katsayıların yazılması ile oluşturulmuştur.
>> b = [6; 14]
b matrisi ise,çözümleri ifade ediyor.Ancak,bunun sütun vektörü olduğuna dikkat etmeliyiz.
>> x = A\b
A*x = b olduğundan dolayı, x =A-1 *b sonucunu alırız.Bu işlemi de yukarıdaki ters bölme(back-slash) ile yapıyoruz.
x =
3.5652
-1.6522
**Eğer sonucun doğruluğunu kontrol etmek istiyorsak A*x işlemini yaptığımızda b vektörünü bulmamız gerekiyor.
>> A*x

ans =

6
14

**Başka bir kontrol etme yöntemi de
>> A*x – b
ans =
0
0
*** >> help mldivide ***


ÖRNEK 1 : İki açı birbirinin tümleyenidir. Bir açı diğerinin 2 katından 81 derece eksiktir.Buna göre bu iki açıyı MATLAB ile bulunuz.
Toplamları 90 :  A + B = 90
Bir açı diğerinin 2 katından 81 derece : A = 2B -81
Buradan;
A + B = 90
A – 2B = -81
………………………………..
MATLAB ÇÖZÜMÜ???
………………………………..


Sorun Nerede??

Ama biz her zaman bu yöntemle çözümlerimizi yaparsak hata yapabilir ve uyarı mesajları alabiliriz!
İlk uygulamada A matrisi kare matris olduğundan ve b matrisinin satır sayısı ile A matrisinin satır sayısı aynı olduğundan dolayı işlemlerimizde sorun olmadı.
Lakin,A matrisi her zaman kare olmayabilir.Eğer A matrisi mxn boyutunda olsaydı;
m = n Kare matris(Square system)
m > n Overdetermined system olarak adlandırılır. “least-squares solution” bulmamız gerekli
m < n Underdetermined system olarak adlandırılır.

Kare Matris(Square Matrix)

A*x = b şeklinde ,A matrisi nxn matris

Non-singular(Singular olmayan) Matris ise :
A = pascal(3);
u = [3; 1; 4];
x = A\u

x =
10
-12
5
A*x bize tam olarak u vektörünü verir ve bu yöntemi kullanırız.

Singular ise :
P = pinv(A)*b
Eğer Ax = b ,tam sonuç vermiyorsa ,pinv(A) kullanılabilir.
pinv = = > pseudoinverse (pseudo inverse)
pseude : yalancı,yapay anlamında
inverse : tersi anlamında
Dikdörtgen(rectangular) matrislerin tersi olmadığından dolayı ,pinv  fonksiyonuna ihtiyaç vardır.



Ax = b Least Square?            Exact(Kesin çözüm)?

Ax = b işlemini yapmak için;

1)        
A = [      1 3 7                                                                                                   
-1 4 4
  1 10 18 ]
b =[5;2;12]
pinv(A)*b
ans =
0.3850
-0.1103
0.7066
A*pinv(A)*b
ans =
5.0000
2.0000
12.0000                                exact(kesin çözüm)

 Yukarıda ilk olarak A martinin tersi ile b matrisi çarpılarak, sonuç bulundu. Daha sonra doğru olup olmadığını kontrol etmek için A*pinv(A)*b  işlemi yapıldı.
Ve A*A-1*b işlemi b vektörünü verdi.

2) 
Ax = b ,bu işlemi yapmak için,aşağıdaki çözümü yaptığımızda ve sonucu kontrol etmek için A*pinv(A)*b  işlemi yapıldığında b vektörü ,girilen b vektöründen farklı çıkıyor.

A = [      1 3 7                                                                                                   
-1 4 4
  1 10 18 ]
b = [3;6;0],

A*pinv(A)*b
ans =
-1.0000
4.0000
2.0000                                 


Bu yüzden satırları indirgeme işlemlerini uygulayacağız.
“row reduced echelon form” (rref)

rref([A b])
ans =
1.0000   0             2.2857   0
0             1.0000   1.5714   0
0             0             0             1.0000

Echelon forma bakıldığında, son satır 0 katsayılara karşılık, 1 sonucu olduğundan dolayı bu eşitliğin çözümü yoktur.Bu yüzden pinv(A)  “least-square” sonucunu  döndürdü.

>>help eye        (birim matris)

Eğer  aşağıdaki yöntemler ile ilgileniyorsanız bu fonksiyonları kullanabilirsiniz.
pcg
Preconditioned conjugate gradients method.
bicg
BiConjugate Gradients Method
bicgstab
BiConjugate Gradients Stabilized Method
bicgstabl
BiCGStab(l) Method
cgs
Conjugate Gradients Squared Method
gmres
Generalized Minimum Residual Method
lsqr
LSQR Method
minres
Minimum Residual Method.
qmr
Quasi-Minimal Residual Method
symmlq
Symmetric LQ Method
tfqmr
Transpose-Free QMR Method


Over-determined system :

Over-determined olma durumu, deneysel verilerin,  grafikleri için güzel bir kullanım alanıdır.

A matrisi mxn boyutunda bir matris olsun. m>n durumunda ,over-determined olarak sistem adlandırılır.Yani,satır sayısı sütun sayısından fazla,kare matrisi aşmış(over).
Böyle sistemlerde bütün değerleri aynı anda bulamıyoruz.

Örneğin, iki bilinmeyenli lineer bir denklemi çözmek için,iki tane denklem yeter.

2x1 + 3x2 = -4
3x1 + 7x2 = 2                       ise bu denklemin çözümünden x1 = -6.8 ve x2 = 3.2 bulunur.



Diyelim ki aşağıdaki gibi bir durum yazmak istedik.

3x1 + 4x2 = 1
  x1 + 2x2 = 2
3x1 + 7x2 = 3
4x1 + 3x2 = 4
  x1 + 4x2 = 5       

 
               

 

     




Ax = b denkleminde,x = A\b ile çözmeye çalışırsak,bize bir çözüm döndürür(least-square solution).Ama,bu sonucun yanlış olduğu kolayca anlaşılıyor.Çünkü denklemlerde yerine koyduğumuzda sağlamıyor.
Ya da kontrol etmek için A*x = b yöntemini kullanırsak,b vektöründen farklı bir vektör buluruz.

                         
                        










      
Aslında aynı olması gereken b vektörleri        
aynı değil!!!

  Burada hata payını bulmak için:
    
    error = A*x – b
    norm(error)
 norm(error) ne kadar küçükse,   least-square çözüm için o kadar iyi     sonuç elde edilmiş olur.

ÖRNEK 2 : Yapılan bir deneyde değişik t zamanlarında,y nin değeri aşağıdaki gibidir.Aşağıdaki komutları Command Window’a girerek değerleri görebilirsiniz.

t = [0 .3 .8 1.1 1.6 2.3]';
y = [.82 .72 .63 .60 .55 .50]';
B = table(t,y)

Ve bu deneyde öngörülen denklem
y(t) = c1 + c2e-t             şeklindedir.

\ ters bölme(back slash) kullanarak least square çözümünden c1 ve c2 yi bulunuz.
Bir de T =  0:0.1:2.5 ve Y(T) = c1 + c2e-T             ‘yi hesaplayınız.
plot(T,Y,'-',t,y,'o')     plot’u çizdiriniz.

Under-determined systems :

A matrisi mxn boyutlarında ve m<n boyutunda ise,bu sistemler under-determined ya da undetermined oluyor.Bunun anlamı ;denklemi çözmek için yeterli bilginin olmamasıdır.
Örneğin,iki bilinmeyenli denklemi çözmek için ,iki tane lineer denkleme ihtiyacımız vardır.

4x1 + 5x2 = 6

Burada A matrisi dediğimiz A = [4 5] yani 1x2 boyutunda bir matristir.
Bu eşitliği x2 = -(4x1 - 6) / 5  olarak çözeriz.
x1 ‘in değeri -¥ ile +¥ arasında herhangi bir değer seçilerek x2 değeri bulunabilir.
Eğer biz bu işlemi MATLAB üzerinden yapmak istersek, sonsuz çözümün sadece birini döndürecektir.

 


MATRİSLERİN TERSİ ve DETERMİNANTI :

Eğer bir matris kare ve non-singular(singular olmayan) ise AX = I ve XA = I aynı çözümü verir.Burada X matrisi A-1 ya da A matrisinin tersidir.

>>help det
>>help inv

>>A=pascal(5)                                  5x5 boyutunda pascal üçgeni oluşturan matris. >>help pascal
>>d = det(A)
>>b = inv(A)

 
>>help magic
>>B = magic(4)
>>d = det(B)
>>X =inv(B)

NOT : Eğer A ve B kare matris ve singular olmayan ise,   X = inv(A)*B ile X = A\B;
ve Y = B*inv(A) ile X = A\B teorik olarak aynıdır.
Ama,bölme(slash) ve ters slash(back slash) ile hesaplamak daha hızlı ve bellekte daha az yer kaplıyor.

>>help rank
>>help sqrtm
>>help expm
>>help eig
>>help schur


ÖRNEK 3 : Aşağıda verilen devrede V1 ,V2 ve V3 gerilimlerini bulunuz.


V1 için KCL yazarsak ;


V2 için KCL yazarsak ;


V3 için KCL yazarak ;


Matris forma dönüştürüyoruz:
 

(JOHN O. ATTIA, ELECTRONICS and CIRCUIT ANALYSIS using MATLAB)
% program computes the nodal voltages
% given the admittance matrix Y and current vector I
% Y is the admittance matrix and I is the current vector
% initialize matrix y and vector I using YV=I form
Y = [ 0.15 -0.1 -0.05;
-0.1 0.145 -0.025;
-0.05 -0.025 0.075];
I = [5;0;2];
% solve for the voltage

fprintf('Nodal voltages V1, V2 and V3 are \n')
v = inv(Y)*I

v =
404.2857
350.0000
412.8571

ÖRNEKK 4 : Verilen devrede i1,i2,i3,i4 ve i5 akımlarını çevre akımları metodu (Mesh Current Method) ile bulunuz.( The University of Edinburgh, School of Engineering , 2010-2014, an interactive introduction to MATLAB)

V1 = 20 V V2 = 12 V V3 = 40 V
R1 = 18  R2 = 10  R3 = 16  R4 = 6
R5 = 15  R6 = 8  R7 = 12  R8 = 14



Diğer dersler haricinde ekstra Kaynak :
Introduction to Programming with Matlab,  2000-2011 J. Michael Fitzpatrick and John D. Crocetti,

Vanderbilt University

Hiç yorum yok:

Yorum Gönder