Monday 29 August 2016

Chapter 8 Exercise 25, Introduction to Java Programming, Tenth Edition Y. Daniel LiangY.

*8.25 (Markov matrix) An n * 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 method to check whether a matrix is a Markov matrix.

public static boolean isMarkovMatrix(double[][] m)

Write a test program that prompts the user to enter a 3 * 3 matrix of double values and tests whether it is a Markov matrix. Here are 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
       
  Enter a 3-by-3 matrix row by row:
            0.95 -0.875 0.375
            0.65 0.005 0.225
            0.30 0.22 -0.4
            It is not a Markov matrix
import java.util.Scanner;
 
public class ProgrammingEx5_25 {
 
 public static void main(String[] args) {
  Scanner input = new Scanner(System.in);
  System.out.println("Enter a 3-by-3 matrix row by row:");
  double[][] n = new double[3][3];
 
  for (int i = 0; i < n.length; i++) {
   for (int j = 0; j < n[i].length; j++) {
    n[i][j] = input.nextDouble();
   }
  }
 
  String s = "";
  if (!isMarkovMatrix(n)) {
   s = " not";
  }
  System.out.println("It is" + s + " a Markov matrix");
 }
 
 public static boolean isMarkovMatrix(double[][] m) {
  for (int i = 0; i < m.length; i++) {
   double sum = 0;
   for (int j = 0; j < m.length; j++) {
    if (m[j][i] < 0) {
     return false;
    }
    sum += m[j][i];
   }
   if (sum != 1.0) {
    return false;
   }
  }
 
  return true;
 }
 
}

1 comment :