Open In App

Finding the Frobenius Norm of a given matrix

Last Updated : 24 Jun, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

Given an M * N matrix, the task is to find the Frobenius Norm of the matrix. The Frobenius Norm of a matrix is defined as the square root of the sum of the squares of the elements of the matrix.
Example: 
 

Input: mat[][] = {{1, 2}, {3, 4}} 
Output: 5.47723 
sqrt(12 + 22 + 32 + 42) = sqrt(30) = 5.47723
Input: mat[][] = {{1, 4, 6}, {7, 9, 10}} 
Output: 16.8226 
 

Approach: Find the sum of squares of the elements of the matrix and then print the square root of the calculated value.
Below is the implementation of the above approach: 
 

CPP




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
const int row = 2, col = 2;
 
// Function to return the Frobenius
// Norm of the given matrix
float frobeniusNorm(int mat[row][col])
{
 
    // To store the sum of squares of the
    // elements of the given matrix
    int sumSq = 0;
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            sumSq += pow(mat[i][j], 2);
        }
    }
 
    // Return the square root of
    // the sum of squares
    float res = sqrt(sumSq);
    return res;
}
 
// Driver code
int main()
{
    int mat[row][col] = { { 1, 2 }, { 3, 4 } };
 
    cout << frobeniusNorm(mat);
 
    return 0;
}


Java




// Java implementation of the approach
class GFG
{
     
    final static int row = 2, col = 2;
     
    // Function to return the Frobenius
    // Norm of the given matrix
    static float frobeniusNorm(int mat[][])
    {
     
        // To store the sum of squares of the
        // elements of the given matrix
        int sumSq = 0;
        for (int i = 0; i < row; i++)
        {
            for (int j = 0; j < col; j++)
            {
                sumSq += (int)Math.pow(mat[i][j], 2);
            }
        }
     
        // Return the square root of
        // the sum of squares
        float res = (float)Math.sqrt(sumSq);
        return res;
    }
     
    // Driver code
    public static void main (String[] args)
    {
        int mat[][] = { { 1, 2 }, { 3, 4 } };
     
        System.out.println(frobeniusNorm(mat));
     
    }
}
 
// This code is contributed by AnkitRai01


Python3




# Python3 implementation of the approach
from math import sqrt
row = 2
col = 2
 
# Function to return the Frobenius
# Norm of the given matrix
def frobeniusNorm(mat):
 
    # To store the sum of squares of the
    # elements of the given matrix
    sumSq = 0
    for i in range(row):
        for j in range(col):
            sumSq += pow(mat[i][j], 2)
 
    # Return the square root of
    # the sum of squares
    res = sqrt(sumSq)
    return round(res, 5)
 
# Driver code
 
mat = [ [ 1, 2 ], [ 3, 4 ] ]
 
print(frobeniusNorm(mat))
 
# This code is contributed by mohit kumar 29


C#




// C# implementation of the approach
using System;
 
class GFG
{
     
    static int row = 2, col = 2;
     
    // Function to return the Frobenius
    // Norm of the given matrix
    static float frobeniusNorm(int [,]mat)
    {
     
        // To store the sum of squares of the
        // elements of the given matrix
        int sumSq = 0;
        for (int i = 0; i < row; i++)
        {
            for (int j = 0; j < col; j++)
            {
                sumSq += (int)Math.Pow(mat[i, j], 2);
            }
        }
     
        // Return the square root of
        // the sum of squares
        float res = (float)Math.Sqrt(sumSq);
        return res;
    }
     
    // Driver code
    public static void Main ()
    {
        int [,]mat = { { 1, 2 }, { 3, 4 } };
     
        Console.WriteLine(frobeniusNorm(mat));
    }
}
 
// This code is contributed by AnkitRai01


Javascript




<script>
 
// JavaScript implementation of the approach
 
    let row = 2, col = 2;
     
    // Function to return the Frobenius
    // Norm of the given matrix
    function frobeniusNorm(mat)
    {
     
        // To store the sum of squares of the
        // elements of the given matrix
        let sumSq = 0;
        for (let i = 0; i < row; i++)
        {
            for (let j = 0; j < col; j++)
            {
                sumSq += parseInt(Math.pow(mat[i][j], 2));
            }
        }
     
        // Return the square root of
        // the sum of squares
        let res = parseFloat(Math.sqrt(sumSq));
        return res;
    }
     
    // Driver code
     
        let mat = [[ 1, 2 ], [ 3, 4 ]];
     
        document.write(frobeniusNorm(mat).toFixed(5));
     
// This code is contributed by sravan kumar
 
</script>


Output: 

5.47723

 

Time Complexity: O(M*N)

Auxiliary Space: O(1)



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads