Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

โปรแกรม Java หา Trace และ Normal ของเมทริกซ์


ในบทความนี้ เราจะเรียนรู้วิธีการหา 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