Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

In C++ language: An n x n matrix is called a positive Markov matrix, if each ele

ID: 3686678 • Letter: I

Question

In C++ language:

An n x n matrix is called a positive Markov matrix, if each element is positive and the sum of the elements in each column is 1. Write the following function to check whether a matrix is a Markov matrix:

Const int size = 3; Bool isMarkovMatrix(const double m[][size]);

Write a test program that prompts the user to enter a 3 x 3 matrix of double values and tests whether it is a Markov matrix.

Here is the sample runs:

Enter a 3 by 3 matrix row by row:

0.15 0.875 0.375

0.55 0.005 0.225

0.30 0.12 0.4

It is a Markov matrix

Press any key to continue . . .

Explanation / Answer

#include<iostream>

using namespace std;

#define size 3

//function prototype
bool isMarkovMatrix(const double m[][size]);

int main()
{
   double arr[size][size];
  
   for(int i=0; i<size; i++){
       cout<<"Enter 3 elements for row "<<(i+1)<<": ";
       for(int j=0; j<size; j++)
           cin>>arr[i][j];
   }
  
   bool status = isMarkovMatrix(arr);
   if(status)
       cout<<"This is MarkovMatrix"<<endl;
   else
       cout<<"This is not MarkovMatrix"<<endl;
  
   return 0;
}

// function definations
bool isMarkovMatrix(const double m[][size]){
  
   double colSum = 0;
   for(int i=0; i<size; i++){
       colSum = 0;
       for(int j=0; j<size; j++){
          
           if(m[j][i] < 0)
               return false;
           colSum += m[j][i];
       }
       if(colSum != 1.0)
           return false;
   }
  
   return true;
}


/*

Sample run:

Enter 3 elements for row 1: 0.15 0.875 0.375
Enter 3 elements for row 2: 0.55 0.005 0.225
Enter 3 elements for row 3: 0.30 0.12 0.4
This is MarkovMatrix

*/