Ödev: 2

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

Matrisler, Operatörler

Son gönderim tarihi: 20 Mayıs Perşembe, 23:59
Gönderim şekli: FIZ220_Odev_02Grup#.ipynb isimli jupyter ipynb formatında dosyayı ödev sayfasından göndermek suretiyle
Gönderecek kişi: Grup temsilcisi

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

Matrisler, operatörler

1. Soru: Dönüş operatörü

  1. x-ekseninde, x=1, y=0 noktasında başlıyoruz. (1000x2)'lik bir noktalar matrisi tanımlıyoruz.
  2. $\theta \in [0,360)$ aralığında rasgele bir $\theta$ değeri seçip ($\theta$'nın tam sayı olması gerekmiyor), noktamızı o kadar döndürüyoruz.
  3. Geldiği noktanın x ve y değerlerini noktalar matrisinde kaydediyoruz: matrisin her bir satırı, o elde gelinen koordinatı gösteriyor.
  4. 2-3 adımlarını 1000 kere tekrarlıyoruz (noktanın bir önceki elde geldiği noktadan devam ederek)
  5. noktalar matrisinin x ve y değerlerini tuttuğumuz 0 ve 1 sütunlarının ortalamalarını ekrana yazdırıyoruz
  6. 1-5 adımlarını 30 kere tekrarlıyoruz.

2. Soru: 65.419 (veya -114.581) özdeğerse, 145.544 ne? Üveydeğer mi? 8~(

$$A=\begin{pmatrix}1&2\\3&4\end{pmatrix}$$

matrisini ele alalım: bu matrisin iki tane özdeğeri, onlara karşılık gelen de iki tane özvektörü var. Derste öğrendiğimiz eig() fonksiyonu ile bunları bulalım:

yani:

$$\lambda_1 = -0.372\leftrightarrow u_1 = \begin{bmatrix}-0.825\\0.566\end{bmatrix}$$$$\lambda_2 = 5.372\leftrightarrow u_2 = \begin{bmatrix}-0.416\\-0.909\end{bmatrix}$$
  1. Her bir özvektörün x-ekseni ile yaptığı açıyı hesaplayın. (145.544 ve -114.581 derece bulacaksınız - buraya kadar bir sıkıntı yok 8)

Özvektörleri yine derste öğrendiğimiz "vura vura buldurma" metoduyla bulmaya çalışalım:

  1. Bileşenleri ${x,y}\in [-1,1]$ aralığında olan iki boyutlu rasgele bir k vektörü oluşturun (bileşenler tamsayı olmak zorunda değil)
  2. Bu vektörün yatayla yaptığı açıyı hesaplayın
  3. Vektörün üzerine A matrisini etki ettirin, ortaya çıkan vektörün yatayla yaptığı açıyı hesaplayın -- bu açıyla, bir önceki hesapladığınız açı arasındaki fark 0.0001 dereceden küçük olana kadar bu adımı tekrarlayın (kaç adımda bu küçük farka ulaştığınızı ekrana yazdırın). Yani k vektörüne matrisimizi etki ettirdik, diyelim ki k' vektörünü elde ettik, aralarındaki açı 0.0001 dereceden büyükse, matrisi k' vektörüne vurdurup, bu sefer k'' vektörünü bulduk. Şimdi açı kontrolünü k' ile k'' arasında yapıyoruz: yani hep şimdi hesapladığımız açı ile bir önceki hesapladığımız açı arasında oluyor bu kontrol.
  4. En son elde ettiğiniz vektörün boyunu 1 olacak şekilde ayarlayın, yönü aynı kalsın (anahtar terim: "normalize etmek" 8) Açıyı ve vektörü yazdırın.
  5. 1-4 arasını 20 kere tekrarlayın. Bulduğunuz açı 145.544 veya -114.581'den biri mi? Değilse niye değil, durumu kurtarabiliyor musunuz? ;)

Ultra Bonus Soru: 1-4 adımlarını 1000 kere tekrarlayın -- her seferinde aynı özvektöre mi gitti? Eğer öyle ise bu metotla diğerine nasıl ulaşırız?