Monday, 29 August 2016

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

8.30 (Algebra: solve linear equations) Write a method that solves the following
2 * 2 system of linear equations:
a 00 x + a 01 y = b 0
a 10 x + a 11 y = b 1
x =
b 0 a 11 - b 1 a 01
a 00 a 11 - a 01 a 10
y =
b 1 a 00 - b 0 a 10
a 00 a 11 - a 01 a 10
public static double[] linearEquation(double[][] a, double[] b)

The method returns null if a 00 a 11 - a 01 a 10 is 0 . Write a test program that
prompts the user to enter a 00 , a 01 , a 10 , a 11 , b 0 , and b 1 , and displays the result. If
a 00 a 11 - a 01 a 10 is 0 , report that “The equation has no solution.” A sample run is
similar to Programming Exercise 3.3.

package Chapter_08;

import java.util.Scanner;

public class Exercise_30 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);
System.out.println("Enter a, b, c, d, e, f below:");
double[][] a = new double[2][2];
double[] b = new double[2];
for (int i = 0; i < a.length; i++)
for (int j = 0; j < a[i].length; i++)
a[i][j] = input.nextDouble();

double[] point = linearEquation(a, b);
if (linearEquation(a, b) == null) {
System.out.println("No solution.");
} else {
System.out.println("x = " + point[0] + " and y = " + point[1]);
}

}

public static double[] linearEquation(double[][] a, double[] b) {

// equation:
// ab_Minus_bc = a * d - b * c
double ab_Minus_bc = a[0][0] * a[1][1] - a[0][1] * a[1][0];

if (ab_Minus_bc == 0.0) return null;

// equation:
// x = (e * d - b * f) / ab_Minus_bc;
// y = (a * f - e * c) / ab_Minus_bc;
double[] point = new double[2];
point[0] = (b[0] * a[1][1] - b[1] * a[0][1]) / ab_Minus_bc;
point[1] = (b[1] * a[0][0] - b[0] * a[1][0]) / ab_Minus_bc;

return point;
}

}