题目
题目描述
8.30(代数:解答线性方程)编写一个方法,解答下面的22线性方程组系统:
a00 * x + a01 * y = b0
a10 * x + a11 * y = b1
则:
x = (b0 * a11 - b1 * a01) / (a00 * a11 - a01 * a10)
y = (b1 * a00 - b0 * a10) / (a00 * a11 - a01 * a10)
方法头为:
public static double[] linearEquation(double[][] a, double[]b)
如果a00 * a11 - a01 * a10为0,则方法返回null
编写一个测试程序,提示用户输入a00 a01 a10 a11以及b0 b1,并且显示结果
如果a00 * a11 - a01 * a10为0则报告“方程无解”
运行示例与编程练习题3.3类似
代码
(只需要改写3.3即可)
import java.util.Scanner;
public class Test8_30 {
public static void main(String[] args) {
double[][] a = new double[2][2];
double[] b = new double[2];
Scanner input = new Scanner(System.in);
System.out.println("Enter a00 a01 a10 a11 b0 b1: ");
for (int i = 0 ; i < a.length ; i++){
for (int j = 0 ; j < a[i].length ; j++){
a[i][j] = input.nextDouble();
}
}
for (int i = 0 ; i < b.length ; i++){
b[i] = input.nextDouble();
}
if (a[0][0] * a[1][1] - a[0][1] * a[1][0] == 0){
System.out.println("方程无解");
System.exit(1);
}
double[] result = new double[2];
result = linearEquation(a, b);
if (result[0] == result[1]){
System.out.println("两个解相同:" + result[0]);
} else
System.out.println("两个解分别是:" + result[0] + "和" + result[1]);
}
public static double[] linearEquation(double[][] a, double[] b){
double[] result = new double[2];
result[0] = (b[0] * a[1][1] - b[1] * a[0][1]) / (a[0][0] * a[1][1] - a[0][1] * a[1][0]);
result[1] = (b[1] * a[0][0] - b[0] * a[1][0]) / (a[0][0] * a[1][1] - a[0][1] * a[1][0]);
return result;
}
}
Enter a00 a01 a10 a11 b0 b1:
9.0 4.0 3.0 -5.0 -6.0 -21.0
两个解分别是:-2.0和3.0
Enter a00 a01 a10 a11 b0 b1:
1.0 2.0 2.0 4.0 4.0 5.0
方程无解