Frage

Ich habe drei Gleichungen wie die folgenden:

  • x + y + z = 100;
  • x + y - z = 50;
  • x - y - z = 10;

Wie kann ich die Werte von x, y und z mit Java finden?

String equation1="x+y+z=100;";
String equation2="x+y-z=50;";
String equation3="x-y-z=10;";

int[] SolveEquations(equation1,equation2,equation3) {
   // to do
   // how to do?    
} 

Haben Sie mögliche Lösungen oder andere gemeinsame Rahmenbedingungen?

War es hilfreich?

Lösung

Sie können mit Determinante Werte von x y und z berechnen. Logic finden Sie hier werden http://www.intmath.com/Matrices-determinants/1_Determinants .php

Verwendung von 3-dimensionalen Arrays

Und dann müssen Sie es in Java implementieren.

Andere Tipps

Da Sie Java schreiben, können Sie die JAMA Paket löse das. Ich würde ein gutes LU Zersetzungsverfahren empfehlen.

Es ist ein einfaches lineare Algebra Problem. Sie sollten es lösen können von Hand oder so etwas wie Excel ziemlich leicht. Sobald Sie, dass Sie die Lösung Ihr Programm testen können.

Es gibt keine Garantie, natürlich, dass es eine Lösung gibt. Wenn Ihre Matrix singulär ist, das heißt, es gibt keinen Schnittpunkt dieser drei Linien im 3D-Raum.

Sie können das Java-Matrix-Paket JAMA . Die gesamte Seite dieses Beispiel unter hier  

/*
 *Solving three variable linear equation system
 * 3x + 2y -  z =  1 ---> Eqn(1)
 * 2x - 2y + 4z = -2 ---> Eqn(2)
 * -x + y/2-  z =  0 ---> Eqn(3)
 */
import Jama.Matrix;
import java.lang.Math.*;
public class Main {
    public Main() {
        //Creating  Arrays Representing Equations
        double[][] lhsArray = {{3, 2, -1}, {2, -2, 4}, {-1, 0.5, -1}};
        double[] rhsArray = {1, -2, 0};
        //Creating Matrix Objects with arrays
        Matrix lhs = new Matrix(lhsArray);
        Matrix rhs = new Matrix(rhsArray, 3);
        //Calculate Solved Matrix
        Matrix ans = lhs.solve(rhs);
        //Printing Answers
        System.out.println("x = " + Math.round(ans.get(0, 0)));
        System.out.println("y = " + Math.round(ans.get(1, 0)));
        System.out.println("z = " + Math.round(ans.get(2, 0)));
    }

    public static void main(String[] args) {
        new Main();
    }
}

können Sie auch Commons Math . Sie haben einen Abschnitt von diesem in ihrem -Nutzerhandbuch (siehe 3.4)

Erstellen Sie einen Parser ANTLR . Dann bewerten Sie die AST mit Gaußsche Eliminations .

Verwenden Sie Gaussian_elimination ist es unglaublich einfach, aber es gibt Codebeispiel

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top