Pregunta

Tengo tres ecuaciones como las siguientes:

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

¿Cómo puedo encontrar los valores de x, y y z con 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?    
} 

¿Tiene alguna solución posible u otros marcos comunes?

¿Fue útil?

Solución

Puede usar determinante para calcular valores de x y y z. La lógica se puede encontrar aquí http://www.intmath.com/Matrices-determinants/1_Determinants .php

Y luego necesita implementarlo en Java utilizando matrices tridimensionales.

Otros consejos

Como está escribiendo Java, puede usar el paquete JAMA para resuelve esto. Recomiendo un buen método de descomposición LU.

Es un simple problema de álgebra lineal. Debería poder resolverlo a mano o usando algo como Excel con bastante facilidad. Una vez que tenga eso, puede usar la solución para probar su programa.

No hay garantía, por supuesto, de que haya una solución. Si su matriz es singular, eso significa que no hay intersección de esas tres líneas en el espacio 3D.

puede usar el paquete de matriz de Java JAMA . Vea la página completa de este ejemplo a continuación aquí  

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

También puede usar Commons Math . Tienen una sección de esto en su userguide (ver 3.4)

Cree un analizador utilizando ANTLR . Luego evalúe el AST utilizando Eliminación gaussiana .

Use Gaussian_elimination es increíblemente fácil, pero hay algunos valores puede tener un cálculo difícil de la vida.

Ejemplo de código

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top