Matris çarpımını açıklamanın birçok farklı yolu vardır. Buradaki çoğu insanın buna aşina olduğuna inandığım için tek bir figüre bağlı kalacağım (ve bu rakam çok açıklayıcı). Daha ayrıntılı bilgi edinmek için Wikipedia makalesini veya WolframMathWorld hakkındaki açıklamayı ziyaret etmenizi öneririm .
Basit açıklama:
Diyelim ki iki matrisiniz var, A ve B , A 3'e 2 ve B 2'ye 3. Bunlara matris çarpımı yaparsanız, AB veya BA matrislere atarsanız aşağıdaki sonuçları alırsınız:
Meydan okuma:
Uygulamak sembolik size dilinde matris çarpımı. Matrislerdeki her elemanın boşluksuz bir ASCII karakteri ile temsil edildiği girdi olarak iki matris alacaksınız (kod noktaları 33-126). Bu matrislerin ürününü çıkarmalısınız.
Çıktı ile ilgili kurallar:
İki girişli bir ürün arasında hiçbir sembol bulunmamalıdır. O var ab
değil, a*b
, a·b
, times(a,b)
benzer ya da bir şey. Bu aa
değil a^2
.
Terimlerin toplamı arasında bir boşluk (ASCII kod noktası 32) bulunmalıdır. O var a b
değil, a+b
, plus(a,b)
benzer ya da bir şey.
Bu iki kuralın gerekçesi şudur: Beyaz boşluk olmayan tüm karakterlerin matrislerde semboller olarak kullanılmasına izin verilir, böylece onları matematiksel semboller olarak kullanmak dağınık olur. Normalde olduğu gibi yazabildiğiniz a*b+c*d
şey ab cd
.
Terimlerin sırasını seçebilirsiniz. ab cd
, dc ab
ve cd ba
matematiksel olarak da aynı şekilde konuşuyorsunuz, bu yüzden burada emri de seçebilirsiniz. Siparişin matematiksel olarak doğru olduğu sürece tutarlı olması gerekmez.
Matris biçimlendirme ile ilgili kurallar:
Satırlar arasında sınırlayıcı olmayan tek bir dize dışında, istediğiniz formatta bir matris girilebilir (bunun nedeni çıktının tamamen karışmasıdır). Her iki matris de aynı formatta girilmelidir. Aşağıdaki tüm örnekler, bir matrise girmenin ve çıktının geçerli yollarıdır.
"ab;cd" <- This will look awful, but it's still accepted.
"a,b\nc,d"
[[a,b],[c,d]]
[a, b]
[c, d]
Bunun karmaşık görünecek bir çok formata izin verdiğinin farkındayım, ancak zorluk, matrislerin çarpımıyla değil, çıktıyı biçimlendirmeyle ilgili.
Genel kurallar:
- Geçerli bir girdi kabul edebilirsiniz. Matris çarpımı, verilen boyutlarla her zaman mümkün olacaktır.
- Sadece iki matris olacak.
- Matrislerin boş olmadığını kabul edebilirsiniz.
- Yerleşik işlevler kabul edilir (ancak biçimlendirme gereksinimlerinden dolayı muhtemelen biraz hantal).
- Elbette eğer gerekliyse girişte kaçış karakterlerini kullanabilirsiniz (
\'
yerine'
). - Herhangi bir standart giriş ve çıkış yöntemi tamamdır .
Test durumları:
İki giriş matrisi, aralarında boş bir satırla gösterilir. Çıkış sonra gösterilir Output:
. İki çıktı matrisi olduğunda, sadece kabul edilecek diğer çıktıları göstermek mümkündür.
Test durumu # 1
Inputs:
[a]
[b]
Output:
[ab]
[ba] <- Also OK
Sınama durumu # 2
Inputs:
[a, b]
[1, 4]
[y, {]
[%, 4, 1]
[a, b, c]
Output:
[a% ba, a4 bb, a1 bc]
[1% 4a, 14 4b, 11 4c]
[y% {a, y4 {b, y1 {c]
Test durumu # 3:
Inputs:
[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 1, 2, 3]
[4, 5, 6, 7]
[a]
[b]
[c]
[d]
Output:
[1a 2b 3c 4d]
[5a 6b 7c 8d]
[9a 1b 2c 3d]
[4a 5b 6c 7d]
[d4 c3 b2 a1] <-- Also OK
[d8 c7 b6 a5]
[1b 9a c2 3d]
[a4 b5 d7 6c]
Yerine koymak ab cd
yerine kurallara cevabınız a*b+c*d
: eğer hantal giriş / çıkış biçimlerinden kaçınmalısınız , o zaman giriş ve çıkış biçimlerinin çok esnek olduğunu unutmayın. Gerçek şu ki kullanamazsınız *
ve +
ürün ve toplamlar için zor yerleşik bir basit kullanmayı hale getirebileceğini, ancak bunun olumsuz bir şey düşünmüyoruz.