C++ Program to Find the Normal and Trace of Matrix

17/06/2024 0 By indiafreenotes

To find the normal and trace of a matrix, we need to understand the definitions of these terms:

  1. Trace of a Matrix: The trace of a square matrix is the sum of the elements on its main diagonal (from the upper left to the lower right).
  2. Normal of a Matrix: The normal (or Frobenius norm) of a matrix is the square root of the sum of the squares of all its elements.

Problem Statement

Given a square matrix, compute its trace and normal.

Approach

  1. Trace Calculation: Sum the diagonal elements of the matrix.
  2. Normal Calculation: Compute the sum of the squares of all elements in the matrix, then take the square root of this sum.

Example

For a 3×3 matrix:

Matrix:

1 2 3

4 5 6

7 8 9

  • Trace: 1+5+9=15
  • Normal: √{1^2 + 2^2 + 3^2 + 4^2 + 5^2 + 6^2 + 7^2 + 8^2 + 9^2} = √285​ ≈ 16.88

C++ Code Implementation

Here is a C++ program to compute the trace and normal of a matrix:

#include <iostream>

#include <vector>

#include <cmath>

using namespace std;

// Function to compute the trace of a matrix

int traceOfMatrix(const vector<vector<int>>& matrix) {

    int trace = 0;

    for (size_t i = 0; i < matrix.size(); ++i) {

        trace += matrix[i][i];

    }

    return trace;

}

// Function to compute the normal (Frobenius norm) of a matrix

double normalOfMatrix(const vector<vector<int>>& matrix) {

    double sumOfSquares = 0.0;

    for (const auto& row : matrix) {

        for (const auto& elem : row) {

            sumOfSquares += elem * elem;

        }

    }

    return sqrt(sumOfSquares);

}

// Function to print a matrix

void printMatrix(const vector<vector<int>>& matrix) {

    for (const auto& row : matrix) {

        for (const auto& elem : row) {

            cout << elem << ” “;

        }

        cout << endl;

    }

}

int main() {

    // Initializing a 3×3 matrix

    vector<vector<int>> matrix = {

        {1, 2, 3},

        {4, 5, 6},

        {7, 8, 9}

    };

    cout << “Matrix:” << endl;

    printMatrix(matrix);

    // Computing the trace of the matrix

    int trace = traceOfMatrix(matrix);

    cout << “Trace of the matrix: ” << trace << endl;

    // Computing the normal of the matrix

    double normal = normalOfMatrix(matrix);

    cout << “Normal (Frobenius norm) of the matrix: ” << normal << endl;

    return 0;

}

Explanation

  1. Function traceOfMatrix:
  • Parameters: Takes a 2D vector (matrix).
  • Trace Calculation: Iterates through the diagonal elements (where row index equals column index) and sums them.
  • Return Value: Returns the computed trace.
  1. Function normalOfMatrix:
  • Parameters: Takes a 2D vector (matrix).
  • Normal Calculation: Iterates through all elements of the matrix, calculates the sum of their squares, and returns the square root of this sum.
  • Return Value: Returns the computed normal.
  1. Function printMatrix:

Prints the matrix in a formatted way for better visualization.

  1. Main Function:

  • Initializes a sample 3×3 matrix.
  • Prints the matrix.
  • Calls the traceOfMatrix function to compute the trace and prints it.
  • Calls the normalOfMatrix function to compute the normal and prints it.