2016-04-28 85 views
-1

Ich habe diesen Code, der Lösung zu 4 x 4 linearen Gleichungen geben. Wie kann ich ausdrucken, wenn eine lineare Gleichung keine Lösung hat oder multiple Einsen hat. anstelle von Ausdrucken Fehler?Ausdrucken: keine Lösung, mehrere Lösung mit Apache in Java

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(); 

    } 
} 

Wenn ich in diesen Code schreiben eine Matrix wie folgt aus:

1,1,1,1=14 
2,2,2,2=22 
3,3,3,3=38 
4,4,4,4=44 

dieser Code druckt:

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) 

, weil die obige Matrix oder mehrere Lösungen haben oder nicht haben Lösung

+0

Also, Ihren Code ändern, das zu tun BTW:.. Haben Sie bemerkt, dass Sie geklickt haben, eine Schaltfläche namens "** Ask Question **", wenn Sie Ihren Text hier geschrieben haben? Ich sehe keine Frage in Ihrem Text. – Andreas

+1

@Andreas Ich frage Frage, wie auszudrucken, wenn eine lineare Gleichung in meinem Code implementiert habe keine soution oder habe mehrere one.cuz bis jetzt, mein code nur ausdrucken, wenn nur eine lösung haben – Volazh

+2

Bitte können sie beschreiben sie den fehler, den sie bekommen, da es schwer zu helfen, ihre frage zu beantworten sonst. – jr593

Antwort

0

Sie können nach der Determinante https://en.wikipedia.org/wiki/Determinant

fragen

"Ein lineares Gleichungssystem hat genau dann eine eindeutige nicht-triviale Lösung, wenn seine Determinante nicht Null ist. Wenn diese Determinante gleich Null ist, dann hat das System entweder keine nicht-triviale Lösungen oder eine unendliche Anzahl von Lösungen „

http://math.oregonstate.edu/home/programs/undergrad/CalculusQuestStudyGuides/vcalc/system/system.html

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))); 
} 
+1

sehr nützlich Ihre Antwort, aber kann ich eine separate bekommen ?. Ich meine, es ist anders, wenn ich keine Lösung bekomme, als wenn ich mehrere Lösungen bekomme. (wenn ich eine 0,0,0, x = x) bekomme, bedeutet das, dass es eine multiple Lösung gibt, als wenn ich eine (0,0,0,0 = 0) bekomme, bedeutet das, dass die Matrix überhaupt keine Lösung hat – Volazh

+0

Sie können die Matrix auf die "row echelon" -Form reduzieren, wenn eine Reihe nur Nullen hat, dann gibt es unendlich viele Lösungen – Troncador

+0

Wie sieht die "row echelon" -Form in meinem Code aus? – Volazh