Как решить уравнения с Java? - PullRequest
12 голосов
/ 16 сентября 2009

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

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

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

Ответы [ 6 ]

11 голосов
/ 16 сентября 2009

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

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

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

9 голосов
/ 16 сентября 2009

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

А затем вам нужно реализовать это в Java, используя 3-х мерные массивы.

8 голосов
/ 12 февраля 2016

вы можете использовать пакет java matrix JAMA . Смотрите полную страницу этого примера ниже здесь </p> <pre><code>/* *Solving three variable linear equation system * 3x + 2y - z = 1 ---&gt; Eqn(1) * 2x - 2y + 4z = -2 ---&gt; Eqn(2) * -x + y/2- z = 0 ---&gt; 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(); } }

4 голосов
/ 16 сентября 2009

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

4 голосов
/ 16 сентября 2009

Создать парсер, используя ANTLR . Затем оцените AST , используя Гауссово исключение .

2 голосов
/ 16 сентября 2009

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

Пример кода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...