Matris nedir?
m
Sütunlar içeren bir matris ven
satırlar öğelerle (veya koordinatlarla) bir vektör * tüketen ve m
öğelerle bir vektör üreten bir işlevi temsil eder n
.
Bundan, ancak bir matris kare ise ve vektörün boyutluluğunun değişmeyeceğini gözlemleyebilirsiniz. Örneğin. 3B vektörü, 3B vektörü 2B'den dönüştürerek bir 3B vektör elde edersiniz.
* : Fizikte, vektörler genellikle hız veya ivme gibi şeyleri "hareket ettiren" güçleri veya diğer "etkileri" belirtmek için kullanılır. Ancak bir noktayı veya herhangi bir rasgele sayı dizisini temsil etmek için bir vektör kullanmanıza engel olan hiçbir şey yoktur (bazı kütüphaneler ve programlama dilleri "1D dizisi" anlamına gelmek için "vector" bile kullanır). Matrislerle kullanım için, matrisinizin öğeleri ne olursa olsun onları toplama, çıkarma ve çarpma yönteminiz olduğu sürece, herhangi bir şey vektörünüzün öğeleri (hatta dizeler veya renkler) olabilir. Bu nedenle "taşıyıcı" anlamına gelen isim vektörü - sizin için değerleri taşır veya tutar .
Bir matrisle çarpmak ne anlama geliyor?
Eğer bir matris bir fonksiyonsa, ne tür bir fonksiyon ? İşlev ne yapar? Bunun tarifi matrisin elemanları tarafından tanımlanır. Let çağrı giriş u
, çıkış v
, matris M
(çarpma M*u=v
sonra aynıdır f(u)=v
) ve u(i)
verir i
inci elemanı u
(2 eleman, örneğin, Y koordinat). Matris için M(i,j)
satır anlamına geliri
, sütunj
.
v(1)
Sonuçta ilk olan elemanın yapısı , matrisin ilk satırı ile açıklanır. u(1)
kez M(1,1)
, artı u(2)
kez M(1,2)
, ... artı u(i)
kez M(1,i)
. Bir matris biraz basit bir programlama diline benzer, sadece girişlerin etrafında karışarak, bunları kendilerine ekleyerek vb. Çalışarak programlama işlevleri için iyidir. **
Her seferinde bir çıktı öğesi üzerinde çalıştığınızı hayal etmek yararlıdır, bu nedenle, aynı anda matrisin yalnızca bir satırını kullandığınızı düşünün. Sen yazmak u
yatay. M
Altındaki i. Satırı yazıyorsunuz . Yukarıdaki / aşağıdaki çiftlerin her birini çarpar ve aşağıdaki ürünleri yazarsınız, sonra ürünleri toplarsınız. Öğesinin her öğesini almak için her satır için tekrarlayın v
. (Şimdi bir m
by n
matrisinin neden bir m
vektör üzerinde çalışması ve bir vektör üretmesi gerektiğini görüyorsunuz n
.)
Bunu düşünmenin başka bir yolu - diyelim ki bir 3B'den 3B'ye dönüşüm yapıyoruz, bu yüzden 3x3 matrisi (veya sık sık çağrıldıkları gibi 3B dönüşümü , çünkü bu "fonksiyonun" 3B noktaları " sadece sayıları değiştirerek). Diyelim ki ilk satır[1 2 0]
. Bu, x sonucunu elde etmek için, x girişinden 1, y girişinden 2 ve z girişinden 0 elde edeceğiniz anlamına gelir. Yani bu gerçekten bir tarif.
** : Bir matris bir programlama diliyse, Turing bile tamamlanmamıştır.
İki matrisin çarpılması ne anlama geliyor?
Her ikisi de uygun büyüklükte matrisler ise, A*B
"önce B
o zaman geçerli olan bir işlev" anlamına gelir A
. Boyut, girdi ve çıktı boyutunu belirlediğinden ve bir matris diğerinin çıktısını kullandığından, çarpma için boyut kısıtlamalarının neden var olduğunu görebilirsiniz. Çarpma neden fonksiyonları birleştirir? Olması gerektiğini fark etmek daha kolay. Eğer A*u
aynıdır f(u)
ve B*u
olduğu gibi aynı g(u)
sonra f(g(u))
aynıdır f(B*u)
ile aynı olan A*(B*u)
.
Benzer şekilde, aynı işlevin tekrarlanan uygulamaları güç olarak gösterilebilir, çünkü üç kez temsil eden A*A*A
işlevi uygulamak anlamına gelir A
.
Matrisler nasıl faydalıdır?
new_x = 1*x+2*y+0*z
(İlk satır [1 2 0] ise) dönüşümü ne işe yarar? Bu çok açık değil, ama bunu açıklamak için başka bir 2D matris alalım. Matris:
[ 0 1
1 0 ]
Veya [0 1; 1 0]
uygun Matlab gösterimini kullanarak. Bu matris ne yapıyor? Bir 2D vektörü şu şekilde dönüştürür: Sonuç x için girişin y'sinden 1'ini alın. Sonucun y değeri için, girişin x değerinden 1'ini alın. Girişin x ve y koordinatlarını değiştirdik - bu matris x = y çizgisi ile ilgili noktaları yansıtıyor . Bu biraz faydalı! Ek olarak, SW - NE çizgisi boyunca 1s olan tüm matrislerin yansıttığını göreceksiniz . Kimlik matrislerinin size neden girişi geri verdiğini de görebilirsiniz (çıktının x'i için, girdinin xini alın; çıkışın y'si için y'yi alın ...).
Şimdi sembollerin neden olduğunu görüyorsunuz. Xx
, Yx
- bunların nasıl girdi şey ifade X
, Y
çıkış girer vbx
.
Matrisler başka nasıl faydalıdır?
Başka hangi dönüşümleri yapabilirsiniz? Bir kimlik matrisi alarak, ancak diyagonal boyunca 1'den farklı bir sayı ile yeniden boyutlandırabilirsiniz. Örneğin [2.5 0; 0 22.5]
, girişin her koordinatını 2,5 ile çarpar ve bu matrisi bir resimdeki her noktaya uygularsanız, resim 2,5 kadar büyük olacaktır. Bir satıra yalnızca bir 2,5 ( [2.5 0; 0 1]
) koyarsanız, yalnızca x koordinatı çarpılır, böylece yalnızca x boyunca uzanırsınız.
Diğer matrisler, değişkenlik derecelerine sahip "eğriltme" gibi başka dönüşümler de verebilir. Şahsen, çarpıklık benim en sevdiğim şey çünkü matris çok basit görünüyor, ancak dönüşümün kendisi nadiren bir resmi değiştirmekten başka bir şey yapmıyor. Yararlı olan "döndürme" dir - bir noktayı nasıl döndürürsünüz? Başlangıç noktasında saat yönünün tersine derece (x, y)
döndürdükten sonra noktanın konumunu denemeyi deneyin theta
. Yeni x ve y koordinatlarının her ikisinin de eski x ve y'nin tetanın bazı sinüsleri ve kosinüsleri ile çarpılmasından kaynaklandığını göreceksiniz. Bu işleve karşılık gelen sinüsleri ve kosinüsleri kullanarak kolayca bir döndürme matrisi yazabilmelisiniz.
Kare olmayan matrislerle, bir girdinin boyutunu da değiştirebilirsiniz. Bir 2D girişin 3D'ye dönüştürülmesi çok yararlı değildir, çünkü yeni koordinat içine koymak için bir şey "üretmek" zordur, ancak 3D 2B'ye çok faydalıdır. Diğer şeylerin yanı sıra, bu bilgisayarınızın proje bilir nasıl *** monitörünüzde çizmek için 2B görüntü içine 3D sahne.
Vektörler farklı şeyleri tutabildiğinden, bir karakter n karakterlerini bir seferde karıştırarak veya onları "çarparak" şifreleyen bir matrisi bile tanımlayabilirsiniz (çarpma / toplama işlevi bulmanız gerekir).
*** : Ne zaman proje , sen bir heykel gibi bir 3D nesne almak üzerine ışık tutmak ve nazik 2D gölge duvara düşer görmek.
Matrislerin sınırlamaları nelerdir?
Her fonksiyonu matrislerle yapabilir misiniz? Hayır. Grafiksel olarak düşünmek, bir matrisin yapamayacağı bir şey hayal etmek zordur (ancak var: örneğin bir "girdap" etkisi yapılamaz). Bununla birlikte, burada kolay bir örnek: Diyelim ki fonksiyon f
, her bir kare ilef(u)
size geri dönecek u
şekildedir . Bunun için bir matris yazamayacağınızı göreceksiniz: Matrislerde, yalnızca koordinatları sabit bir sayı ile çarpan tarifleri tanımlamak için bir olanak vardır, güç gibi başka fantezi işlevler ifade edilemez.
**** : Bu yüzden doğrusal cebir olarak adlandırılır - güç fonksiyonu doğrusal değildir, çizildiğinde düz bir çizgi yapmaz.
4D matrislerde garip ekstra satırda
Şimdi, örnek 4'teki matris neden 4'e 4? Bu 4 boyutlu alan anlamına gelmiyor mu? 4D bilgisayarımız yok, neden? Bu aslında lineer operasyonlar hakkında önceki noktaya ilişkin matrislerle ilginç bir numara.
Matrislerle hangi fonksiyonların yapılamayacağına ilişkin olarak: Bir 2D noktasını 2 birim sağa hareket ettirmek için matris nedir (bu noktayı üretir (x+2, y)
mi? Yine takılıp kalırız. 2B çalışma için, püf noktası aslında 2B alanda değil, 3B alanda, her şeyin yüksekliği (z koordinatı veya 3. eleman) her zaman 1'dir (2B evrenin nasıl olduğu gibi) 3B evrenin tabanı boyunca düz duran bir "plaka" - bu durumda üçüncü koordinat her zaman 0 olur) Sonra bu sihirli son koordinatı sabit olarak kullanabilirsiniz, çünkü her girdi için her zaman 1 olduğunu bilirsiniz.
Benzer şekilde, 3B noktaları taşımak için 4D koordinatlarına ihtiyacınız vardır. Bu yüzden gördüğünüz tüm 3B dönüşüm matrisleri [0 0 0 1]
son satırda olacak - asla 4. boyutu değiştirmemelisiniz, yoksa sonuç 3B'de temsil etmek için çok karmaşık olacaktır!