web-dev-qa-db-ja.com

Javaで方程式を解く方法は?

次のような3つの方程式があります。

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

考えられる解決策やその他の一般的なフレームワークはありますか?

12
Cong De Peng

行列式を使用して、x yおよびzの値を計算できます。ロジックはここにあります http://www.intmath.com/Matrices-determinants/1_Determinants.php

そして、それをJava 3次元配列を使用して実装する必要があります。

10
Xinus

Javaを作成しているので、 [〜#〜] jama [〜#〜] パッケージを使用してこれを解決できます。良いLU分解方法をお勧めします。

これは単純な線形代数問題です。あなたはそれを手作業で、またはExcelのようなものを使ってかなり簡単に解決できるはずです。それができたら、ソリューションを使用してプログラムをテストできます。

もちろん、解決策があるという保証はありません。行列が特異な場合、それは3D空間でこれらの3つの線の交差がないことを意味します。

11
duffymo

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();
    }
}
</ code>
8
sandi vorace

Commons Math を使用することもできます。 serguide (3.4を参照)にこのセクションがあります

4
Valentin Rocher

[〜#〜] antlr [〜#〜] を使用してパーサーを作成します。次に [〜#〜] ast [〜#〜]ガウスの消去法 を使用して評価します。

4
erikkallen

Gaussian_elimination を使用してください。非常に簡単ですが、 いくつかの値 があります。計算が困難な場合があります。

コード例

2
Liran Orevi