Ma trận vuông là gì?

Vậy bức hình dưới đây:

Nếu giá trị ở các ô màu đỏ bằng nhau thì đó là ma trận đối xứng ạ ?

Tại em đang học mảng 2 chiều (ma trận) nên tìm hiểu :smiley:

ko phải ~.~

aij = aji tức là từng cặp ô đối xứng nhau qua đường màu đỏ bằng nhau hết thì mới là đối xứng.

ma trận nxn A giả sử n = 5 thì các giá trị aij
a11 a12 a13 a14 a15
a21 a22 a23 a24 a25
a31 a32 a33 a34 a35
a41 a42 a43 a44 a45
a51 a52 a53 a54 a55
(trong toán học và đời sống từ ngàn năm nay con người toàn bắt đầu đếm từ số 1, chỉ có máy tính mới đếm từ số 0)

aij = aji với mọi 1 ≤ i ≤ 5 và 1 ≤ j ≤ 5,
tức là
i = 1, j = 2: a12 phải bằng a21
a11 a12 a13 a14 a15
a21 a22 a23 a24 a25
a31 a32 a33 a34 a35
a41 a42 a43 a44 a45
a51 a52 a53 a54 a55

i = 1, j = 3: a13 phải bằng a31
a11 a12 a13 a14 a15
a21 a22 a23 a24 a25
a31 a32 a33 a34 a35
a41 a42 a43 a44 a45
a51 a52 a53 a54 a55

i = 1, j = 4: a14 phải bằng a41
a11 a12 a13 a14 a15
a21 a22 a23 a24 a25
a31 a32 a33 a34 a35
a41 a42 a43 a44 a45
a51 a52 a53 a54 a55

i = 1, j = 5: a15 phải bằng a51
a11 a12 a13 a14 a15
a21 a22 a23 a24 a25
a31 a32 a33 a34 a35
a41 a42 a43 a44 a45
a51 a52 a53 a54 a55

rồi tiếp tục với i = 2, j = 3, v.v… Nghĩa là ở đây ma trận 5x5 phải có 4+3+2+1 = 10 cặp aij = aji thì mới gọi là đối xứng

ví dụ
1 2 5 4 7
2 2 2 6 5
5 2 3 7 3
4 6 7 4 2
7 5 3 2 5
là ma trận đối xứng


mà học mảng 2 chiều cần biết gì tới ma trận vuông hay đối xứng??
1 Like

:sweat_smile: Bạn tưởng tượng đường chéo chính là 1 cái gương ấy

@tntxtnt@thanhmssl10

À, mình hiểu rồi. Tức là trong bức hình trên, các ô nào cùng màu mà bằng nhau thì đó là ma trận đối xứng đúng không ?

Khà khà, tại học mảng 2 chiều có nhiều bài tập nói về ma trận vuông, đối xứng, … này nọ nên tìm hiểu luôn.
Em nghe nhiều người nói mảng 2 chiều có lợi trong làm game console là sao nhỉ ? Có phải mảng 2 chiều giúp game maker tạo được khung chơi không ?

P/S: Cho em hỏi ma trận là lớp mấy học nhỉ ? Em lớp 10 chưa đụng tới ?

Cho em hỏi thêm là đoạn code kiểm tra ma trận đối xứng của em dưới đây có đúng chưa ạ ?
Code:

bool KiemTraMaTran(int a[5][5], int hang, int cot)
{
	for (int i = 0; i < hang; i++)
	{
		for (int j = 1; j < cot; j++)
		{
			if (a[i][j] != a[j][i])
				return false;
		}
	}
	return true;
}

đúng rồi nhưng mà vòng lặp j ở trong nên bắt đầu từ j = i + 1, để khỏi mất công kiểm tra lại. Ví dụ a[2][1] !=a[1][2] (i=2, j=1) thì đã kiểm tra với a[1][2] != a[2][1] (i=1, j=2) trước rồi. Vì vậy có thể tiết kiệm số lần so sánh bằng cách mặc định cho là j > i, hay j bắt đầu từ i+1

Điều kiện quan trọng là ma trận vuông

Hình như matrix ở đại học mới có nhỉ :smiley:

có nhưng cũng hạn chế lắm, như cưỡi ngựa xem hoa thôi, học trước quên sau :joy: Chừng nào chọn lớp computer graphichs hoặc numerical analysis thì mới có cái để đụng tới để viết shaders hoặc tính toán gì đó, còn ko thì học 1 lớp rồi vứt.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?