How to find Orthogonal Matrix || Matrix is Orthogonal or Not || C++
In this we are going to see a basic program based on How to find Orthogonal Matrix in C++ Programming Language.
 
 


The Code given below can be used in TURBO C++ Compilers: -

#include <iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>

class Matrix
{
public:
    int arr[10][10], transpose[10][10], prod[10][10];

    void input(int i, int j)
    {
        cout << "Enter number: ";
        cin >> arr[i][j];
    }

    void display(int Array[][10], int sz)
    {
        for (int i = 0; i < sz; i++)
        {
            for (int j = 0; j < sz; j++)
            {
                cout << Array[i][j] << "  ";
            }
            cout << endl;
        }
    }

    void getTranspose(int sz)
    {
        for (int i = 0; i < sz; i++)
        {
            for (int j = 0; j < sz; j++)
            {
                transpose[j][i] = arr[i][j];
            }
        }
    }

    void product(int sz)
    {
        int sum = 0;
        for (int i = 0; i < sz; i++)
        {
            for (int j = 0; j < sz; j++)
            {
                // sum=0;
                for (int k = 0; k < sz; k++)
                {
                    sum += (arr[i][k] * transpose[k][j]);
                }
                prod[i][j] = sum;
                sum = 0;
            }
        }
    }
    /*
    1 - true
    0 - false
    */
    int checkOrthogonal(int sz)
    {
        for (int i = 0; i < sz; i++)
        {
            for (int j = 0; j < sz; j++)
            {
                if (i != j)
                {
                    if (prod[i][j] != 0)
                        return 0;
                }
                else
                {
                    if (prod[i][j] != 1)
                        return 0;
                }
                return 1;
            }
        }
    }
};

int main()
{
    clrscr();
    Matrix M;
    int sz;
    cout << "Enter array size: ";
    cin >> sz;
    for (int i = 0; i < sz; i++)
    {
        for (int j = 0; j < sz; j++)
        {
            M.input(i, j);
        }
    }
    cout << "\n Entered matrix:\n";
    M.display(M.arr, sz);
    M.getTranspose(sz);
    cout << "\n Transpose:\n";
    M.display(M.transpose, sz);
    cout << "\n Product:\n";
    M.product(sz);
    M.display(M.prod, sz);
    int check = M.checkOrthogonal(sz);
    if (check == 1)
    {
        cout << "\nMatrix is orthogonal!";
    }
    else
    {
        cout << "\nMatrix is NOT orthogonal!";
    }
    getch();
    return 0;
}

The Code given below can be used in gcc/g++ Compilers: -

#include <iostream>
using namespace std;

class Matrix
{
public:
    int arr[10][10], transpose[10][10], prod[10][10];

    void input(int i, int j)
    {
        cout << "Enter number: ";
        cin >> arr[i][j];
    }

    void display(int Array[][10], int sz)
    {
        for (int i = 0; i < sz; i++)
        {
            for (int j = 0; j < sz; j++)
            {
                cout << Array[i][j] << "  ";
            }
            cout << endl;
        }
    }

    void getTranspose(int sz)
    {
        for (int i = 0; i < sz; i++)
        {
            for (int j = 0; j < sz; j++)
            {
                transpose[j][i] = arr[i][j];
            }
        }
    }

    void product(int sz)
    {
        int sum = 0;
        for (int i = 0; i < sz; i++)
        {
            for (int j = 0; j < sz; j++)
            {
                // sum=0;
                for (int k = 0; k < sz; k++)
                {
                    sum += (arr[i][k] * transpose[k][j]);
                }
                prod[i][j] = sum;
                sum = 0;
            }
        }
    }

    bool checkOrthogonal(int sz)
    {
        for (int i = 0; i < sz; i++)
        {
            for (int j = 0; j < sz; j++)
            {
                if (i != j)
                {
                    if (prod[i][j] != 0)
                    {
                        return false;
                    }
                }
                else
                {
                    if (prod[i][j] != 1)
                    {
                        return false;
                    }
                }
                return true;
            }
        }
    }
};

int main()
{
    Matrix M;
    int sz;
    cout << "Enter array size: ";
    cin >> sz;
    for (int i = 0; i < sz; i++)
    {
        for (int j = 0; j < sz; j++)
        {
            M.input(i, j);
        }
    }
    cout << "\n Entered matrix:\n";
    M.display(M.arr, sz);
    M.getTranspose(sz);
    cout << "\n Transpose:\n";
    M.display(M.transpose, sz);
    cout << "\n Product:\n";
    M.product(sz);
    M.display(M.prod, sz);
    bool check = M.checkOrthogonal(sz);
    if (check == true)
    {
        cout << "\nMatrix is orthogonal!";
    }
    else
    {
        cout << "\nMatrix is NOT orthogonal!";
    }
    return 0;
}

#ENJOY CODING

Post a Comment

FOR ANY DOUBTS AND ERRORS FEEL FREE TO ASK. YOUR DOUBTS WILL BE ADDRESSED ASAP

Previous Post Next Post