C program to check if a given matrix is a lower triangular has been shown here. A square matrix is considered a lower triangular matrix if all the elements above the main diagonal are Zero. The elements in the main diagonal may or may not be 0.

Examples:

In the given examples, (i), (ii), (iv) and (v) are lower triangular matrices as every element above the principal diagonal is 0 in each of these matrices. The matrix shown in (iii) is not a lower triangular matrix as one element above the principal diagonal is non-zero. The dotted lines have been drawn over the principal diagonals.

## 1. Algorithm to Check If a Matrix Is a Lower Triangular Matrix

1. Take a matrix $A_{m\times n}$ as input

2. Check if $m=n$

3. If step  is false then display "Input matrix is not a square matrix!" and exit program

4. If step  is true, then

5. Check if $A_{i,j} \neq 0$ for each $i < j$ and $i \in [1, m]$ and $j \in [1, n]$

6. If step  is true for atleast one $A_{i,j}$ then display "The matrix is not a lower triangular matrix" and exit program.

7. If step  is false then display "The matrix is a lower triangular matrix" and exit program.

## 2. Pseudocode to Check If a Matrix Is a Lower Triangular Matrix

Input: A matrix $A_{m\times n}$

Output: A is lower triangular or not

1. Procedure lowerTriangularMatrix($A_{m\times n}$):

2. If $m == n$:

3. Repeat for each $i < j$ where $i \in [1, m]$ and $j \in [1, n]$

4. If $A_{i,j} \neq 0$:

5. Return Not a lower triangular matrix

6. Return A lower triangular matrix

7. Else:

8. Return It should be a square matrix

9. End Procedure

## 3. Time Complexity to Check If a Matrix Is a Lower Triangular Matrix

Time Complexity: O($mn$)

Where $m$ is the number of rows and $n$ is the number of columns in the matrices.

## 4. C++ Program to Check If a Matrix Is a Lower Triangular Matrix

Code has been copied
/**********************************
alphabetacoder.com
C++ Program to check if a matrix
is a lower triangular matrix
***********************************/
#include <iostream>

using namespace std;

int main() {
// declare variables
int m, n, i, j, flag = 0;
int A = {0};

//take input of the order of the matrix
cout << "Enter the number of rows and columns of matrix = ";
cin >> m >> n;

//take input of the first matrix
cout << "Enter the elements of matrix of order " << m << " x " << n << " = " << endl;
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
cin >> A[i][j];

// check if the matrix is a square matrix or not
// if it is square matrix, check if it is lower triangular or not
if (m != n)
cout << "\nInput matrix is not a square matrix!" << endl;
else {
// check if A is lower triangular or not by
// finding an non-zero element above main diagonal
for (i = 0; i < m; i++) {
for (j = i + 1; j < n; j++) {
if (A[i][j] != 0) {
// non-zero element found
flag = 1;
break;
}
}
// break the loop as non-zero element
// above main diagonal has been detected
if (flag == 1)
break;
}

// display the result
if (flag == 0)
cout << "\nIt is a lower triangular matrix!";
else
cout << "\nIt is not a lower triangular matrix!";
}

return 0;
}


Output

Case 1:

Enter the number of rows and columns of matrix = 4 4

Enter the elements of matrix of order 4 x 4 =

4 0 0 0

3 7 0 0

1 0 0 0

6 3 1 1

It is a lower triangular matrix!

Case 2:

Enter the number of rows and columns of matrix = 3 3

Enter the elements of matrix of order 3 x 3 =

0 0 6

8 5 0

2 1 0

It is not a lower triangular matrix!