How to Solve Equations with java?

前端 未结 8 673
花落未央
花落未央 2020-12-03 05:45

I have three equations like the following ones:

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

How can I find the values of

相关标签:
8条回答
  • 2020-12-03 06:08

    try this, please:

    import org.apache.commons.math3.linear.*;
    import org.junit.Assert;
    import org.junit.Test;
    
    /**
     * Author: Andrea Ciccotta
     */
    public class LinearSystemTest extends Assert {
    
        /**
         * Ax = B
         * 2x + 3y - 2z = 1
         * -x + 7y + 6x = -2
         * 4x - 3y - 5z = 1
         * <p>
         * it will use the LUDecomposition:
         * LU decomposition:
         * 1. find A = LU where LUx = B
         * 2. solve Ly = B
         * 4. solve Ux = y
         */
        @Test
        public void linearSystem3x3Test() {
            final RealMatrix coefficients = new Array2DRowRealMatrix(new double[][]{{2, 3, -2}, {-1, 7, 6}, {4, -3, -5}});
            final DecompositionSolver solver = new LUDecomposition(coefficients).getSolver();
    
            final RealVector constants = new ArrayRealVector(new double[]{1, -2, 1}, false);
            final RealVector solution = solver.solve(constants);
            final double[] arraySolution = solution.toArray();
    
            assertEquals(arraySolution[0], -0.36986301369863006, 0);
            assertEquals(arraySolution[1], 0.1780821917808219, 0);
            assertEquals(arraySolution[2], -0.6027397260273972, 0);
        }
    
    }
    
    0 讨论(0)
  • 2020-12-03 06:10

    Since you're writing Java, you can use the JAMA package to solve this. I'd recommend a good LU decomposition method.

    It's a simple linear algebra problem. You should be able to solve it by hand or using something like Excel pretty easily. Once you have that you can use the solution to test your program.

    There's no guarantee, of course, that there is a solution. If your matrix is singular, that means there is no intersection of those three lines in 3D space.

    0 讨论(0)
  • 2020-12-03 06:10

    Use Gaussian_elimination it's incredibly easy, but there are some values you may have hard life calculating.

    Code example

    0 讨论(0)
  • 2020-12-03 06:12

    There are many ways to solve linear system equations. There is a simplest way to perform this. In the example the java code solve for two variables USING Matrix method but you can modify to perform 3 variables calculations.

    import java.util.Scanner; //OBJETO SCANNER
    
    public class SYS2 {
    
        public static void main (String args[]) {
    
            //VARIABLE DECLARATION SPACE
            int i=0,j = 0;
            float x,y;
             Scanner S = new Scanner (System.in);
    
             int EC3[][]= new int [2][3]; //ARRAY TO STORE EQUATION 2X3
    
             float DET1=0;
            float DET2 =0;
    
    
            float DETA=0;
             float DETB=0;
    
            //END VARIABLE DECLARATIONS
           System.out.println("Enter Equation System : ");
    
    for (i=0; i< 2; i++) {
                    for (j=0; j< 3; j++) 
                            EC3[i][j] = S.nextInt();
                    }    
    
                    System.out.println("SISTEMA DE ECUACION LINEAL: "); //THIS SENTENCE ONLY PRINT THE CATCHED VALUES OF EQUATION
    
                    for (i=0; i< 2; i++) {
                            for (j=0; j< 3; j++) 
    
                                  System.out.print(EC3[i][j] + "  ");
    
                                System.out.println();
    
    
                    }    
    
    
    
    
               //    System.out.print("Determinante A de la Matriz: ");
    
                 //    System.out.print((EC3[0][2] * EC3[1][1]) - (EC3[0][1]*EC3[1][2]) );
    
                    for (i=0;i<2;i++) {
                            for (j=0; j<2;j++)
                                    DET1=  ((EC3[0][2] * EC3[1][1]) -( EC3[0][1]*EC3[1][2]));
                    }
    
                               //    System.out.print(DET1 );
                                //       System.out.println();
    
                                     for (i=0;i<2;i++) {
                                            for (j=0; j<2;j++)
                                             DET2=  ((EC3[0][0] * EC3[1][1]) - (EC3[0][1]*EC3[1][0]));
                    }
    
                                   // System.out.print("Determinante B de la Matriz: ");
                                   //  System.out.println(DET2 ); 
    
        x = (DET1 / DET2);
    
        System.out.println();
        System.out.println("X = " + x);
        System.out.print("=======================");
        //FIN PARA VALOR DE X
    
    
    
        //COMIENZO DE VALOR DE Y
    
      //  System.out.print("Determinante A de la Matriz Y: ");
    
                                        for (i=0;i<2;i++) {
                                                for (j=0; j<2;j++)
                                             DETA=  EC3[0][0] * EC3[1][2] - EC3[0][2]*EC3[1][0];
    
    
                                            //    System.out.print(DETA );
                                              //  System.out.println();
                    }
    
    
                                         for (i=0;i<2;i++) {
                                                for (j=0; j<2;j++)
                                             DETB=  EC3[0][0] * EC3[1][1] - EC3[0][1]*EC3[1][0];
    
                    }
    
                                       // System.out.print("Determinante B de la Matriz Y: ");
                                       //  System.out.println(DETB );                  
                                        y = DETA / DETB;
    
                                        System.out.print("=======================");
                                        System.out.println();
    
                                        System.out.println("Y = " + y);
                                        System.out.print("=======================");
        }
    }
    
    
    
    
    
    0 讨论(0)
  • 2020-12-03 06:22

    You can use determinant to calculate values of x y and z. Logic can be found out here http://www.intmath.com/Matrices-determinants/1_Determinants.php

    And then you need to implement it in java using 3 dimensional arrays.

    0 讨论(0)
  • 2020-12-03 06:25

    Create a parser using ANTLR. Then evaluate the AST using Gaussian elimination.

    0 讨论(0)
提交回复
热议问题