Question

J'ai trois équations comme les suivantes:

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

Comment trouver les valeurs de x, y et z avec Java?

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?    
} 

Avez-vous des solutions possibles ou d’autres cadres communs?

Était-ce utile?

La solution

Vous pouvez utiliser déterminant pour calculer les valeurs de x y et z. La logique peut être trouvée ici http://www.intmath.com/Matrices-determinants/1_Determinants .php

Ensuite, vous devez l'implémenter en Java à l'aide de tableaux en 3 dimensions.

Autres conseils

Puisque vous écrivez en Java, vous pouvez utiliser le package JAMA pour résoudre ceci. Je recommanderais une bonne méthode de décomposition en LU.

C'est un simple problème d'algèbre linéaire. Vous devriez être capable de le résoudre à la main ou d'utiliser quelque chose comme Excel assez facilement. Une fois que vous avez cela, vous pouvez utiliser la solution pour tester votre programme.

Bien entendu, rien ne garantit qu’il existe une solution. Si votre matrice est singulière, cela signifie qu'il n'y a pas d'intersection de ces trois lignes dans l'espace 3D.

vous pouvez utiliser le package de matrice java JAMA . Voir la page complète de cet exemple ci-dessous ici  

/*
 *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();
    }
}

Vous pouvez également utiliser Commons Math . Ils en ont une section dans leur guide d'utilisation (voir 3.4)

Créez un analyseur syntaxique à l'aide de ANTLR . Ensuite, évaluez le AST en utilisant élimination de Gaussian .

Utilisez Gaussian_elimination , c'est incroyablement facile, mais il y a certaines valeurs , vous aurez peut-être du mal à calculer.

Exemple de code

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top