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
*/