打印出来:没有解决方案,在 java 中使用 Apache 的多个解决方案
Printing out: no solution, multiple solution with Apache in java
我有这段代码可以给出 4x4 线性方程的解。
当线性方程无解或有倍数时,我如何打印出来。而不是打印错误 ?
public class OvaWork
{
void fourthEquationSolver()
{
//Creating Arrays Representing Equations
double[][] lhsArray = {{8,1,10,1}, {2,1,5,4}, {1,5,3,2}, {9,8,4,6}};
double[] rhsArray = {14,22,38,44};
//Creating Matrix Objects with arrays
Matrix lhs = new Matrix(lhsArray);
Matrix rhs = new Matrix(rhsArray, 4);
//Calculate Solved Matrix
Matrix ans = lhs.solve(rhs);
//Printing Answers
System.out.println("x1 = " + (ans.get(0, 0)));
System.out.println("x2 = " + (ans.get(1, 0)));
System.out.println("X3 = " + (ans.get(2, 0)));
System.out.println("X4 = " + (ans.get(3, 0)));
}
public static void main(String[] args)
{
OvaWork equation = new OvaWork();
}
}
当我将这样的矩阵写入此代码时:
1,1,1,1=14
2,2,2,2=22
3,3,3,3=38
4,4,4,4=44
此代码打印:
Exception in thread "main" java.lang.RuntimeException: Matrix is singular.
at Jama.LUDecomposition.solve(LUDecomposition.java:282)
at Jama.Matrix.solve(Matrix.java:815)
at OvaWork.fourthEquationSolver(OvaWork.java:20)
at OvaWork.main(OvaWork.java:106)
因为上面的矩阵有或有多个解,或无解
你可以求行列式https://en.wikipedia.org/wiki/Determinant
"A system of linear equations has a unique non-trivial solution if and only if its determinant is non-zero. If this determinant is zero, then the system has either no nontrivial solutions or an infinite number of solutions."
if (lhs.det() == 0) {
System.out.println("No solution or infinite number of solutions");
} else {
Matrix ans = lhs.solve(rhs);
//Printing Answers
System.out.println("x1 = " + (ans.get(0, 0)));
System.out.println("x2 = " + (ans.get(1, 0)));
System.out.println("X3 = " + (ans.get(2, 0)));
System.out.println("X4 = " + (ans.get(3, 0)));
}
我有这段代码可以给出 4x4 线性方程的解。 当线性方程无解或有倍数时,我如何打印出来。而不是打印错误 ?
public class OvaWork
{
void fourthEquationSolver()
{
//Creating Arrays Representing Equations
double[][] lhsArray = {{8,1,10,1}, {2,1,5,4}, {1,5,3,2}, {9,8,4,6}};
double[] rhsArray = {14,22,38,44};
//Creating Matrix Objects with arrays
Matrix lhs = new Matrix(lhsArray);
Matrix rhs = new Matrix(rhsArray, 4);
//Calculate Solved Matrix
Matrix ans = lhs.solve(rhs);
//Printing Answers
System.out.println("x1 = " + (ans.get(0, 0)));
System.out.println("x2 = " + (ans.get(1, 0)));
System.out.println("X3 = " + (ans.get(2, 0)));
System.out.println("X4 = " + (ans.get(3, 0)));
}
public static void main(String[] args)
{
OvaWork equation = new OvaWork();
}
}
当我将这样的矩阵写入此代码时:
1,1,1,1=14
2,2,2,2=22
3,3,3,3=38
4,4,4,4=44
此代码打印:
Exception in thread "main" java.lang.RuntimeException: Matrix is singular.
at Jama.LUDecomposition.solve(LUDecomposition.java:282)
at Jama.Matrix.solve(Matrix.java:815)
at OvaWork.fourthEquationSolver(OvaWork.java:20)
at OvaWork.main(OvaWork.java:106)
因为上面的矩阵有或有多个解,或无解
你可以求行列式https://en.wikipedia.org/wiki/Determinant
"A system of linear equations has a unique non-trivial solution if and only if its determinant is non-zero. If this determinant is zero, then the system has either no nontrivial solutions or an infinite number of solutions."
if (lhs.det() == 0) {
System.out.println("No solution or infinite number of solutions");
} else {
Matrix ans = lhs.solve(rhs);
//Printing Answers
System.out.println("x1 = " + (ans.get(0, 0)));
System.out.println("x2 = " + (ans.get(1, 0)));
System.out.println("X3 = " + (ans.get(2, 0)));
System.out.println("X4 = " + (ans.get(3, 0)));
}