如何用java解决方程?

我有三个方程式,如下所示:

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

如何用Java找到x,y和z的值?

String equation1="x+y+z=100;"; String equation2="x+yz=50;"; String equation3="xyz=10;"; int[] SolveEquations(equation1,equation2,equation3) { // to do // how to do? } 

您有任何可能的解决方案或其他常见框架吗?

您可以使用行列式计算xy和z的值。 逻辑可以在这里找到http://www.intmath.com/Matrices-determinants/1_Determinants.php

然后你需要使用3维数组在java中实现它。

由于您正在编写Java,因此可以使用JAMA包来解决此问题。 我推荐一种很好的LU分解方法。

这是一个简单的线性代数问题。 你应该能够手动解决它或者很容易地使用像Excel这样的东西。 完成后,您可以使用该解决方案来测试您的程序。

当然,并不能保证有一个解决方案。 如果矩阵是单数,则意味着在3D空间中这三条线没有交叉。

你可以使用java矩阵包JAMA 。 请在此处查看此示例的完整页面

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

使用ANTLR创建解析器。 然后使用高斯消元法评估AST 。

您也可以使用Commons Math 。 他们的用户指南中有一部分(见3.4)

使用Gaussian_elimination它非常简单,但有一些值可能会让您的生活难以计算。

代码示例