问题描述:
一个 nn 的矩阵被称为一个正马尔科夫矩阵,当且仅当每个元素都是正数,并且每列的元素的和为 1。编写下面的方法来检测一个矩阵是否是一个马尔科夫矩阵。
public static boolean isMarkovMatrix(double[][] m)
编写一个测试程序,提示用户输入一个 33 的 double 值的矩阵,测试它是否是一个马尔科夫矩阵。下面是运行示例:
代码
import java.util.Scanner;
public class Test32 {
static Scanner in = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("Enter a 3-by-3 matrix row bay row:");
double[][] m =new double[3][3];
for(int i = 0; i < m.length; i++)
for(int j = 0; j < m[i].length; j++)
m[i][j] = in.nextDouble();
if(isMarkovMatrix(m))
System.out.println("It is a Markov matrix");
else
System.out.println("It is not a Markov matrix");
in.close();
}
public static boolean isMarkovMatrix(double[][] m)
{
for(int i = 0; i < m.length; i++)
{
double sum = 0;
for(int j = 0; j < m[i].length; j++)
{
if(m[j][i] < 0)
return false;
sum += m[j][i];
}
if(sum != 1)
return false;
}
return true;
}
}