Uygulama Notları: 8

FİZ220 - Bilgisayar Programlama II | 14/05/2020

Lineer Cebir

Dr. Emre S. Taşcı, emre.tasci@hacettepe.edu.tr
Fizik Mühendisliği Bölümü
Hacettepe Üniversitesi

Giriş

6. dersimizin olan "Matris Uygulamaları"nda lineer cebiri n bilinmeyenli n denklemi çözmek için kullanmıştık, bu ders bu konuyu biraz daha geliştirip, bir matris işleminin sonuçlarını ve özelliklerini görüp, yorumlayacağız.

Hafıza-i beşer, nisyan ile mâlûldür... (feilün mefaülü mefalülü... 8P) ya da "...previously on FİZ220..."

Birbirimizi kandırmadan, kısa bir hatırlatma yapalım (ne de olsa araya matrissiz, for'lu, if'li, while'lı döngülü kararlı bir ders girdi): $n\times n$'lik matrisle, n bilinmeyenli n denklem arasındaki yakın ve samimi bağ hakkında. Örneğin, iki bilinmeyenli iki denklemimiz olsun:

$$3x+2y = 7\\x-y=-1$$

Bunu matris çarpımı şeklinde yazabiliriz, yazalım hatta:

$$\begin{bmatrix}3&2\\1&-1\end{bmatrix}_{(2\times 2)}\cdot\left( \begin{matrix}x\\y\end{matrix} \right)_{(2\times 1)}= \left(\begin{matrix}7\\-1\end{matrix}\right)_{(2\times 1)}$$

Yani aslında yaptığımız şey, şu çarpma işlemindeki $x$'i çözmekten ibaret:

$$A\cdot\vec{x} = \vec{b}$$

Skaler çarpım olsa, $b$'yi $A$'ya böler, muradımıza ererdik ama matrislerde bildiğimiz anlamda bir bölme yok. Biraz felsefi takılırsak, aslında $b$'yi $A$'ya bölmüyoruz, eşitliğin iki yanını da $A$nın çarpma işlemine göre ters elemanı ile çarpıyoruz -- skaler çarpımda bu işlemin tersi bölmeye denk geliyor, matrislerin çarpımında ise matrisin tersi ile çarpmaya, özetle, şöyle bir şey yaptığımız:

$$A^{-1}\cdot A\cdot\vec{x} = A^{-1}\cdot \vec{b}$$

Yönler önemli, işlem sırası değil. $A^{-1}\cdot A$ işlemini sıralamada öne alıp yaptığımızda, birim elemana dönüşüp eşitliğin sol yanında $\vec{x}$'i yalnız bırakıyoruz, sağ taraf da bildiğimiz bir matris çarpımı, gayet kolay.

Örneğimize dönersek, bu örneği iki farklı şekilde çözmüştük (biri diğerinin kestirmesiydi aslında). İlk olarak sağ tarafı, yukarı yazdığımız şekilde yazıp, $A$'nın tersi ile $b$'yi çarpımıştık:

(eşitliğin sol tarafında $\vec{x}$, yani $\left( \begin{matrix}x\\y\end{matrix} \right)$ olduğundan, birebir eşleşmeyle, $x$'in 1, $y$'nin 2 olduğunu hemen anlıyoruz.

Diğer yöntem ise olayın arka planını, formülasyonu vs. atlayıp, sonuca odaklanmamızı sağlıyordu. Basitçe "çöz" (solve) deyip, keyfimize bakıyorduk:

Aynı 6. dersin sonrasında, bu sefer dönüş operatörünü gördük, nasıl bir şeydi? Şu şekil bir şeydi ($\theta$ pozitif yönde, yani saat-yönünün tersine dönüşü işaret ediyor, aman dikkat!):

$$R_{\theta}=\begin{bmatrix}\cos{\theta}&-\sin{\theta}\\\sin{\theta}&\cos{\theta}\end{bmatrix}$$

Bu dönüş matrisini kullanarak, iki boyutta istediğimiz herhangi bir $\left( \begin{matrix}x_0\\y_0\end{matrix} \right)$ noktasını istediğimiz $\theta$ açısıyla çevirebiliyorduk, örneğin:

Bakalım gerçekten 30 derece (nam-ı diğer: $\pi/6$) döndürmüş mü? Nasıl anlarız?.. önce bir çizdirip bakalım (biraz yeni bir şeyler, çokça da kafamızı kullanıyoruz), sonra daha güzel bir şey yapalım:

Gayet 30 derece gibi görünüyor, ama siz bilirsiniz. (İşte tam da aynı nedenden dolayı, bilimde genel olarak çizimleri değil de, sayısal değerleri baz alıyoruz). Sayısal değerlerin uğrak mekanı da lineer cebir. Örneğin $\vec{a}$ ile $\vec{b}$ vektörleri arasındaki açıyı hesaplamanızı istesem, aklınıza hemen skaler çarpımın formülü gelir (geliyor, değil mi?), ne de olsa:

$$\vec{a}\cdot\vec{b} = |\vec{a}|\,|\vec{b}|\,\cos(\theta)$$

buradan $\theta$'yı çekersek:

$$\theta = \arccos\left(\frac{\vec{a}\cdot\vec{b}}{|\vec{a}|\,|\vec{b}|}\right)$$

hemen örneğimizde uygulayalım bunu:

Matematik de bir yere kadar

Peki sizce niye durup dururken bunları ("n bilinmeyenli n denklemin çözümü" ile "bir noktayı döndürmek") tekrardan hatırladık? İkisi de kendince güzel konular ama sonuçta tekrar ediyorsak bir sebebi olmalı. Soruya soruyla karşılık verirsek:

Denklemleri çözmek için katsayılar matrisinin tersi ile sonuç vektörünü çarpmakla, dönüş matrisini döndürmek istediğimiz noktaya vurdurmak arasında matematiksel olarak bir fark var mı?

(burada "matematiksel olarak" deyimini "bilgisayar açısından" diye okuyun)

mindblown.jpg Mindblown!

Bizim matrisleri ne amaçla çarptırdığımızın önemi bizde saklı - bilgisayara göre hepsi aynı - bir matrisle, bir vektörü çarptırmak. Şu halde, en karmaşık denklemi bile bir noktayı döndürmek olarak düşünebilir, yorumlayabiliriz (birazdan bu tanıma bir küçük ekleme daha yapacağım), nasıl yaklaşırsak yaklaşalım, hepsi aynı kapıya çıkıyor zira.

Peki hazır döndürmeyle ilgilenmekteyken, bir de boy değiştirmece özelliğini eklemeye çalışalım. Mesela, (1,1) noktasında bir noktamız olsun: bunun merkeze uzaklığının $\sqrt{1^2 + 1^2} = \sqrt{2}$ olduğunu, x-ekseni ile yaptığı açının da $45^o$ olduğunu hemen söyleyebiliriz. Bu noktanın yerini $\vec{d}$ pozisyon vektörü ile gösterecek olursak kolayca: $\vec{d} = \hat{\imath} + \hat{\jmath}$ olduğunu da biliriz. Vektörümüzü lineer cebir notasyonunda yazalım:

$$\vec{d} = \left( \begin{matrix}1\\1\end{matrix} \right)$$

Bileşenlerin boyunu iki katına çıkartırsak, o zaman da şöyle bir şey olur:

$$\vec{d'} = \left( \begin{matrix}2\\2\end{matrix} \right)$$

$(2\times1)$lik $\vec{d}$ vektörünü neyle çarpabiliriz ki bize $\vec{d'}$yi versin? Sonucun da $(2\times1)$ boyunda bir vektör olduğunu bildiğimize göre, çarpan şeyin boyutunun $(2\times2)$lik bir matris olması şart. Hazırsanız cevabı yazıyorum:

$$\begin{bmatrix}2&0\\0&2\end{bmatrix}_{(2\times 2)}\cdot\left( \begin{matrix}1\\1\end{matrix} \right)_{(2\times 1)}= \left(\begin{matrix}2\\2\end{matrix}\right)_{(2\times 1)}$$

Rica ediyorum, şöyle bir arkanıza yaslanın, kafanızdan yukarıdaki çarpma işlemini yapın, çalıştığından emin olun. (1,1) noktası belki de çok basitti, hem simetrik, tam anlaşılmıyor. O yüzden gelin bir de (7,11) noktasına uygulayalım:

$$\begin{bmatrix}2&0\\0&2\end{bmatrix}_{(2\times 2)}\cdot\left( \begin{matrix}7\\11\end{matrix} \right)_{(2\times 1)}= \left(\begin{matrix}14\\22\end{matrix}\right)_{(2\times 1)}$$

siz işlemi yine kafanızdan teyit ededurun, biz de kompütere soralım arada:

spak_zzt.jpg Mr. Spak Kabakulak! / Turist Ömer Uzay Yolunda (1973 -- Star Trek'in ilk filminin 1979 yılında çekildiğine dikkatinizi çekerim! 8) [dizi: 1966-1969]

Doğru yani sonuçta, boy uzatma/kısaltma operatörü birim matrisinin istenen oranla çarpılması sonucunda oranın köşegenlere yerleştiği şekil.

Peki o halde şuna da cevap verelim bakalım: önce $\theta$ kadar döndürüp, sonra boyunu $k$ katına nasıl çıkarırız?

Cevap zaten soruda saklı: önce $\theta$ kadar döndürün, sonra boyunu $k$ katına çıkarın ;)

$$\left( \begin{matrix}x_0'\\y_0'\end{matrix} \right)=\begin{bmatrix}k&0\\0&k\end{bmatrix}\begin{bmatrix}\cos{\theta}&-\sin{\theta}\\\sin{\theta}&\cos{\theta}\end{bmatrix}\left( \begin{matrix}x_0\\y_0\end{matrix} \right)$$

Yukarıda da bahsettiğimiz üzere, yönler/yerler önemli, işlem sırası değil, o zaman yerleri değiştirmeden iki matrisi çarpalım:

$$\left( \begin{matrix}x_0'\\y_0'\end{matrix} \right)=\begin{bmatrix}k\cos\theta &-k\sin\theta\\k\sin\theta&k\cos\theta\end{bmatrix}\left( \begin{matrix}x_0\\y_0\end{matrix} \right)$$

Bir vektörü döndürdüğünüzde, boyu değişmez, bunu da dönüş operatörünün determinantının 1 olmasından anlıyoruz: $\cos^2\theta - (-sin^2\theta) = \cos^2\theta+\sin^2\theta = 1$.

O zaman elimizde bir başlangıç vektörü, bir de bitiş vektörü varsa, bu iki vektörü kullanarak, vektörün ne kadar döndürüldüğünü de, boyunun ne kadar değiştiğini de anlayabiliriz. Çünkü, iki boyut özelinde konuşursak, bileşke operatörümüzün $(2\times2)$'lik bir matris olduğunu biliyoruz, dahası köşegendeki değerleri birbirine, köşegen dışı değerler de birbirinin eksilisine eşit. Örnek üzerinden gidelim:

Ayşe'nin merkezden (2,3) noktasına uzanan bir vektörü var, bir gün ona şaka yapmak isteyen Betül, Ayşe dışarıdayken, Ayşe'nin vektörünü $\theta$ kadar döndürüp, $k$ kadar da boyunu değiştiriyor. Ayşe eve geldiğinde vektörünün bu yeni durumda merkezden (-2.69856,0.17404) noktasına uzandığını görüyorsa, Betül vektörü kaç derecelik açıyla döndürüp, boyunu ne kadar değiştirmiştir?

Önce ölçeklendirme katsayısı $k$'yı hesaplayalım: Bir vektörü ne kadar döndürürseniz döndürün, boyu değişmez. O halde başlangıçtaki ve sondaki vektörlerin boyunun oranı bize doğrudan $k$'yı verecek:

Gördük ki, %75 oranında bir kısalma söz konusu, yani ölçek operatörü:

$$\begin{bmatrix}0.75&0\\0&0.75\end{bmatrix}$$

şeklinde, işlem zincirimiz ise an itibarı ile:

$$\left( \begin{matrix}-2.69856\\0.17404\end{matrix} \right)=\begin{bmatrix}0.75&0\\0&0.75\end{bmatrix}\begin{bmatrix}\cos\theta &-\sin\theta\\\sin\theta&\cos\theta\end{bmatrix}\left( \begin{matrix}2\\3\end{matrix} \right)$$

durumunda.

Şimdi sıra, kaç derecelik açıyla döndürdüğüne geldi. Bunun için eşitliğin iki yanını soldan, ölçek operatörümüzün tersi ile çarpacağız. Bu durumda sol taraf:

$$\begin{bmatrix}0.75&0\\0&0.75\end{bmatrix}^{-1}\,\left( \begin{matrix}-2.69856\\0.17404\end{matrix} \right)$$

sağ taraf ise: $$\underbrace{\begin{bmatrix}0.75&0\\0&0.75\end{bmatrix}^{-1}\,\begin{bmatrix}0.75&0\\0&0.75\end{bmatrix}}_{\mathbb{1}}\begin{bmatrix}\cos\theta &-\sin\theta\\\sin\theta&\cos\theta\end{bmatrix}\left( \begin{matrix}2\\3\end{matrix} \right)=\begin{bmatrix}\cos\theta &-\sin\theta\\\sin\theta&\cos\theta\end{bmatrix}\left( \begin{matrix}2\\3\end{matrix} \right)$$

olacak.

Sol tarafı hesaplattıralım bakalım:

Sağ tarafın çarpma işlemini yaparsak:

$$\begin{bmatrix}\cos\theta &-\sin\theta\\\sin\theta&\cos\theta\end{bmatrix}\left( \begin{matrix}2\\3\end{matrix} \right) = \left( \begin{matrix}2\cos\theta-3\sin\theta\\2\sin\theta+3\cos\theta\end{matrix} \right)$$

bunu da $\cos\theta$ ve $\sin\theta$ terimleri cinsinden yazarsak:

$$\left( \begin{matrix}2\cos\theta-3\sin\theta\\2\sin\theta+3\cos\theta\end{matrix} \right)=\begin{bmatrix}2&-3\\3&2\end{bmatrix}\left( \begin{matrix}\cos\theta\\\sin\theta\end{matrix} \right) $$

(herkes görebildi mi?)

İki tarafı birbirine eşitlediğimizde ise:

$$\left( \begin{matrix}-3.59808 \\0.23205333 \end{matrix} \right) =\begin{bmatrix}2&-3\\3&2\end{bmatrix}\left( \begin{matrix}\cos\theta\\\sin\theta\end{matrix} \right)$$

e kaldı ki, bu tam da en başta yaptığımız iki bilinmeyenli iki denklemin çözümü. Hemen çözelim o zaman (buradaki bilinmeyenlerimiz $\cos\theta$ ve $\sin\theta$):

Kosinüsü $-1/2$, sinüsü ise $\frac{\sqrt{3}}{2} = 0.86603$ olan bir açı arıyoruz. İlkini 120 ile 210 dereceler, ikincisini ise 60 ile 120 dereceler karşılıyor. Kosinüsün negatif, sinüsün pozitif olduğu bölge II. bölge olduğundan, cevabımız: 120 derece olarak bulunuyor. Demek ki Betül, Ayşe'nin vektörünü 120 derece çevirip, boyunu da %75 oranında kısaltmış.

Bu işi yaparken kullandığı birleşik, ikisi bir arada, yıkıyorum-çıkıyorum operatörünün matris temsili şu şekilde oluyor haliyle:

$$\begin{bmatrix}0.75&0\\0&0.75\end{bmatrix}\begin{bmatrix}\cos{120^o} &-\sin{120^o}\\\sin{120^o}&\cos{120^o}\end{bmatrix}=\begin{bmatrix}-0.37500&-0.64952\\0.64952&-0.37500\end{bmatrix}$$

Sağlamamızı yapalım:

Ödev: KR operatörünün rastgele ürettiğiniz 10 vektörün hepsini de $120^o$ döndürüp, boyunu da %75 kısalttığını teyit edin.

(300 puanlık) Bonus: KR operatörün verilen her vektörü $120^o$ döndürüp, boyunu da %75 kısalttığını ispatlayın.

Sorunlar, sorunsallar...

Tabii ki her matris işlemi bu şekilde düzgün davranmaz. Örnek olarak şuna bir bakalım:

$$\begin{bmatrix}2&3\\4&5\end{bmatrix}$$

-Hızlıca- yukarıdaki örnekte takip ettiğimiz akıl yolunu izleyelim: $\vec{p}=\left( \begin{matrix}1\\0\end{matrix} \right)$ vektörüne vurdurduğumuzda:

$$\vec{p}' = \begin{bmatrix}2&3\\4&5\end{bmatrix}\left( \begin{matrix}1\\0\end{matrix} \right) = \left( \begin{matrix}2\\4\end{matrix} \right)$$

Yeni vektörün uzama oranı: $\sqrt{2^2+4^2}=2\sqrt5 = 4.47213595499958$

Dönüş operatörü:

Siz sinüsü -0.671 ve 0.894; kosinüsü de aynı anda hem 0.447, hem de 1.118(!!!) olan bir açı biliyor musunuz? Ben bilemiyorum.

İşin kötüsü, gariplikler burada da bitmiyor. Dönüşüm matrisimizi $\vec{p}=\left( \begin{matrix}1\\0\end{matrix} \right)$ vektörü yerine, bu sefer $\vec{q}=\left( \begin{matrix}1\\1\end{matrix} \right)$ vektörüne vurdurup, yeni vektörün boyunun ölçüsünü alalım:

Yeni vektörün uzama oranı: 7.28. Yani bir nevi nabza göre şerbet veriyor. Vektörümüz (1,0)sa 4.47 oranında uzatıyor, yok (1,1) ise 7.28.. Bunları sineye çekip, vektör başına ne kadar döndürdüğünü sorsak, o da muamma...

Baştaki örneğe dönelim: (1,0)'ı (2,4)'e taşımıştı, büyütme oranını 4.47 hesaplayıp, açıyı sayısal olarak bulmaya kalktığımızda garip şeylerle karşılaşmıştık. Halbuki kafamızı kullanarak o vektör için uygulanan dönüş açısını bulabiliriz:

Vektörler bariz, aradaki açıyı yine eski usül, skaler çarpımdan hesaplayalım:

(isteyince oluyormuş demek ki 8).

(1,1)i (5,9)a götürdüğünde ne kadar çeviriyormuş, ona da bakalım:

Buradan şunu görüyoruz: (1,1)'i, (1,0)'dan çok daha az çeviriyor.

Şöyle bir oyun oynayalım o halde: (1,0)'dan başlayalım, x-ekseniyle yaptığı açıyı hesaplayalım ($0^o$), sonra operatörü vurduralım, türettiğimiz vektörün x-ekseniyle yaptığı açıyı hesaplayalım, sonra bir daha vurduralım, bu şekilde n kere tekrar edelim, bakalım nereye varacağız:

ilginç... türetilen vektörler belli bir açıya ($60.372^o$) yakınsıyor. Başka bir başlangıç noktasından (örneğin (1,1)'den) başlayalım:

!!!

Aynı yere ulaştık! İyice kafadan uydurup, oradan başlayalım:

Hepsinde de aynı yere varıyoruz!

Akla çok doğal bir soru geliyor: ilk vektörümüzü doğrudan bu açılı çizginin üzerinde bir vektör versem, onu dönüştürmeye kalktığımda ne elde ederim? Hemen bakalım:

Bu doğrultuda verdiğimizde vektörümüzün yönü değişmedi, sadece boyu değişti, değişim oranını da hesaplayalım:

$x$ bileşeni de, $y$ bileşeni de 7.275 katına çıkmış. Bu süreci şu şekilde yazabiliriz demek oluyor bu:

$$\vec{p}' = A\cdot\vec{p}= \begin{bmatrix}2&3\\4&5\end{bmatrix}\left( \begin{matrix}1\\1.7583\end{matrix} \right) = \left( \begin{matrix}7.275\\12.792\end{matrix} \right)=7.275\left( \begin{matrix}1\\1.7583\end{matrix} \right)$$

Yani, bu özel yöndeki vektöre, dönüşüm operatörünü vurdurduğumuzda, vektörün yönü değişmeyip, sadece boyu değişiyor. Bir operatör için böyle bir vektör bulursak, o vektöre, o operatörün özvektörü (eigenvector); boydaki değişim oranına da o operatörün özdeğeri (eigenvalue) deriz.

Bariz bilgi: Eğer $\left( \begin{matrix}x_1\\y_1\end{matrix} \right)$, bir $A$ operatörünün $\lambda$ özdeğerli özvektörü ise, $r\in\mathbb{C}$ olmak üzere, $\left( \begin{matrix}r.x_1\\r.y_1\end{matrix} \right)$ da aynı operatörün aynı özdeğerli özvektörüdür:

$$A\left( \begin{matrix}x_1\\y_1\end{matrix} \right)=\lambda \left( \begin{matrix}x_1\\y_1\end{matrix} \right)\\ A\left( \begin{matrix}r.x_1\\r.y_1\end{matrix} \right)=\lambda \left( \begin{matrix}r.x_1\\r.y_1\end{matrix} \right)$$

Ödev: $A=\begin{bmatrix}2&3\\4&5\end{bmatrix}$ operatörü için:

vektörlerini inceleyin. Bunlar özvektör ise, özdeğerlerini hesaplayıp, yukarıda bulduğumuz $\left( \begin{matrix}1\\1.7583\end{matrix} \right)$ özvektörü ile karşılaştırın.

Ödev: $90^0$ dönüş operatörünün özvektörünü ve özdeğerini bulun (bulamazsanız da yorumlayın (50 puan); bulursanız da (100 puan!))

Özdeğer ve özvektörlerin kısa yoldan bulunması

Özdeğer ve özvektörler başta klasik mekanik ve kuantum mekaniği olmak üzere fizikte çok önemlidirler çünkü her şeyi dönüştüren bir işlemi "ehlileştiren" bir özel durumu işaret ederler. Bu özel durum, karmaşık (dolaşık, iç içe geçmiş) bir denklem sistemini, birbirinden bağımsız denklemler cinsinden ayırıp, ifade etmemizi, tek tek basitçe çözmemizi sağlarlar (ek olarak uygulamaların olduğu bir notu ekleyeceğim). Matris işlemlerini verilen girdiye bağlı parametreleri olan bir dönüş ve boyut değiştiriş olarak düşünürsek, aslında yaptığımız iş yukarıda da anlatmaya çalıştığımız üzere, bu işlemden yönel olarak etkilenmeyen özel vektörler (yönler) bulmaktan ibaret.

Gerek fizikte, gerekse matematikte özdeğer ve özvektörlerin bulunması çoğu zaman epey kritik olduğundan, bu işi bizler için yapan fonksiyonların olması da kaçınılmazdır:

Tavsiyeler: