如何用java解决方程?

Con*_*eng 12 java math equation

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

  • 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+y-z=50;";
String equation3="x-y-z=10;";

int[] SolveEquations(equation1,equation2,equation3) {
   // to do
   // how to do?    
} 
Run Code Online (Sandbox Code Playgroud)

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

Xin*_*nus 11

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

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

  • 计算行列式是(我认为)O(n!).高斯消元是O(n ^ 2). (6认同)
  • 这个链接已经死了. (3认同)
  • 这在数学上是有效的,但在效率方面不是很好.参见成绩单 - 第20讲来自Gilbert Strang教授的视频讲座,教导18.06"如果你必须 - 而Matlab将永远不会这样做.我的意思是,它会使用消除." http://ocw.mit.edu/OcwWeb/Mathematics/18-06Spring-2005/VideoLectures/detail/lecture20.htm (2认同)
  • NO NO NO***永远不要使用决定因素.前两位评论者所说的话. (2认同)

duf*_*ymo 11

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

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

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


小智 8

你可以使用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();
    }
}
Run Code Online (Sandbox Code Playgroud)


Val*_*her 5

您也可以使用Commons Math.他们在用户指南中有一部分内容(见3.4)