ในบทความนี้ เราจะเรียนรู้วิธีการหา Trace และ Normal ของเมทริกซ์ที่กำหนด Normal ของเมทริกซ์คือ รากที่สองของผลรวมกำลังสองขององค์ประกอบทั้งหมดในเมทริกซ์ Trace ของเมทริกซ์คือ ผลรวมขององค์ประกอบทั้งหมดที่อยู่บนเส้นทแยงมุมหลัก (principal diagonal) จากมุมซ้ายบนไปมุมขวาล่าง
ตัวอย่างการทำงาน
สมมติข้อมูลนำเข้า (Input) คือ:
The matrix is defined as: 2 3 4 5 2 3 4 6 9
ผลลัพธ์ที่ต้องการ (Output) คือ:
Trace value: 13.0 Normal value: 14.142135623730951
อัลกอริทึม
ขั้นตอนที่ 1 - เริ่มต้น ขั้นตอนที่ 2 - ประกาศเมทริกซ์จำนวนเต็ม input_matrix ขั้นตอนที่ 3 - กำหนดค่าให้กับเมทริกซ์ ขั้นตอนที่ 4 - คำนวณ Trace: วนลูปผ่านแต่ละองค์ประกอบด้วย for-loop 2 ชั้น บวกองค์ประกอบที่อยู่บนเส้นทแยงมุม (i == j) เก็บค่าไว้ ขั้นตอนที่ 5 - คำนวณ Normal: วนลูปผ่านแต่ละองค์ประกอบ คำนวณผลรวมกำลังสองของแต่ละองค์ประกอบ แล้วหารากที่สอง เก็บค่าไว้ ขั้นตอนที่ 6 - แสดงผลลัพธ์ ขั้นตอนที่ 7 - จบการทำงาน
ตัวอย่างที่ 1: เขียนโค้ดทั้งหมดในฟังก์ชัน main
public class NormalAndTrace {
public static void main(String args[]) {
int[][] input_matrix = {
{2, 3, 4},
{5, 2, 3},
{4, 6, 9}
};
int i, j, matrix_size = 3;
double trace = 0, square = 0, normal = 0;
System.out.println("The matrix is defined as: ");
for(i = 0; i < matrix_size; i++) {
for(j = 0; j < matrix_size; j++)
System.out.print(input_matrix[i][j]+" ");
System.out.println(" ");
}
System.out.println("\nThe Trace value of the matrix is ");
for(i = 0; i < matrix_size; i++) {
for(j = 0; j < matrix_size; j++) {
if(i == j) {
trace = trace + (input_matrix[i][j]);
}
}
}
System.out.println(trace);
System.out.println("\nThe Normal value of the matrix is ");
for(i = 0; i < matrix_size; i++) {
for(j = 0; j < matrix_size; j++) {
square = square + (input_matrix[i][j])*(input_matrix[i][j]);
}
}
normal = Math.sqrt(square);
System.out.println(normal);
}
}
ผลลัพธ์
The matrix is defined as: 2 3 4 5 2 3 4 6 9 The Trace value of the matrix is 13.0 The Normal value of the matrix is 14.142135623730951
ตัวอย่างที่ 2: ใช้ฟังก์ชันแยก (Object-Oriented Style)
public class NormalAndTrace {
static int matrix_size = 3;
static void normal_trace(int input_matrix[][]){
int i, j;
double trace = 0, square = 0, normal = 0;
System.out.println("\nThe Trace value of the matrix is ");
for(i = 0; i < matrix_size; i++) {
for(j = 0; j < matrix_size; j++) {
if(i == j) {
trace = trace + (input_matrix[i][j]);
}
}
}
System.out.println(trace);
System.out.println("\nThe Normal value of the matrix is ");
for(i = 0; i < matrix_size; i++) {
for(j = 0; j < matrix_size; j++) {
square = square + (input_matrix[i][j])*(input_matrix[i][j]);
}
}
normal = Math.sqrt(square);
System.out.println(normal);
}
public static void main(String args[]) {
int i, j;
int[][] input_matrix = { {2, 3, 4},
{5, 2, 3},
{4, 6, 9}
};
System.out.println("The matrix is defined as: ");
for(i = 0; i < matrix_size; i++) {
for(j = 0; j < matrix_size; j++)
System.out.print(input_matrix[i][j]+" ");
System.out.println(" ");
}
normal_trace(input_matrix);
}
}
ผลลัพธ์
The matrix is defined as: 2 3 4 5 2 3 4 6 9 The Trace value of the matrix is 13.0 The Normal value of the matrix is 14.142135623730951