Bir ortogonal matris sütunlar ve satırlar ortogonal birim vektörleri (yani, ortonormal vektörler) olan gerçek girişlerle bir kare bir matristir.
Bu, M ^ TM = I, burada kimlik matrisi ve ^ T'nin matris transpozisyonunu ifade ettiği anlamına gelir.
Bunun dikgen "özel dik" olmadığını unutmayın, bu nedenle M'nin belirleyicisi 1 veya -1 olabilir.
Bu zorluğun amacı makine hassasiyeti değildir, bu yüzden eğer M ^ TM = I iyi olacak 4 ondalık basamağa çıkarsa.
Görev, pozitif bir tamsayı alan n > 1
ve rastgele bir ortogonal n x n matrisi çıkaran kod yazmaktır . Matris, n'den n ortogonal tüm matrislerden rastgele ve düzgün bir şekilde seçilmelidir . Bu bağlamda, "tekdüze", esasen serbestçe seçilen herhangi bir dikey matrisle çarpıldığında dağılımın değişmemesini gerektiren Haar ölçüsü açısından tanımlanır. Bu, matris değerlerinin -1 ila 1 aralığında kayan nokta değerleri olacağı anlamına gelir.
Giriş ve çıkış uygun bulduğunuz herhangi bir form olabilir.
Lütfen kodunuzun açık bir örneğini gösterin.
Dikey matrisler oluşturan varolan bir kütüphane işlevini kullanamazsınız. Bu kural biraz incedir, bu yüzden daha fazla açıklayacağım. Bu kural, bazı girişleri alan (veya hiç) alan ve en az n x n büyüklüğünde bir ortogonal olması garanti edilen bir matris çıktılayan mevcut fonksiyonların kullanımını yasaklar. Aşırı bir örnek olarak, n x n kimlik matrisini istiyorsanız, bunu kendiniz oluşturmanız gerekir.
Seçtiğiniz rastgele sayıları seçmek için herhangi bir standart rastgele sayı üreteci kitaplığını kullanabilirsiniz.
Kodunuzun en fazla birkaç saniye içinde tamamlanması gerekir n < 50
.
diag
? Gerçekten dik fakat her zaman dikey olmayan bir köşegen matris oluşturur.
diag
olmalıdır.