Вопрос

У меня есть три уравнения, подобные следующим:

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

Как я могу найти значения x, y и z с помощью 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?    
} 

Есть ли у вас какие-либо возможные решения или другие общие фреймворки?

Это было полезно?

Решение

Вы можете использовать определитель для вычисления значений x, y и z .Логику можно найти здесь http://www.intmath.com/Matrices-determinants/1_Determinants.php

И затем вам нужно реализовать это на java, используя трехмерные массивы.

Другие советы

Поскольку вы пишете Java, вы можете использовать ДЖАМА пакет для решения этой проблемы.Я бы порекомендовал хороший метод декомпозиции LU.

Это простая задача линейной алгебры.Вы должны быть в состоянии решить эту проблему вручную или с помощью чего-то вроде Excel довольно легко.Получив это, вы можете использовать решение для тестирования своей программы.

Конечно, нет никакой гарантии, что есть решение.Если ваша матрица сингулярна, это означает, что в трехмерном пространстве нет пересечения этих трех линий.

вы можете использовать пакет java matrix ДЖАМА.Смотрите полную страницу этого примера ниже здесь

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

Вы также можете использовать Общая математика.У них есть раздел об этом в их руководство пользователя (см. 3.4)

Создайте анализатор, используя ANTLR ( АНТЛР ).Затем оцените АСТ используя Исключение по Гауссу.

Использование Gaussian_элиминирование это невероятно просто, но есть некоторые значения возможно, вам в жизни трудно рассчитывать.

Пример кода

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top