次のような3つの方程式があります。
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?
}
考えられる解決策やその他の一般的なフレームワークはありますか?
行列式を使用して、x yおよびzの値を計算できます。ロジックはここにあります http://www.intmath.com/Matrices-determinants/1_Determinants.php
そして、それをJava 3次元配列を使用して実装する必要があります。
Javaを作成しているので、 [〜#〜] jama [〜#〜] パッケージを使用してこれを解決できます。良いLU分解方法をお勧めします。
これは単純な線形代数問題です。あなたはそれを手作業で、またはExcelのようなものを使ってかなり簡単に解決できるはずです。それができたら、ソリューションを使用してプログラムをテストできます。
もちろん、解決策があるという保証はありません。行列が特異な場合、それは3D空間でこれらの3つの線の交差がないことを意味します。
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>
Commons Math を使用することもできます。 serguide (3.4を参照)にこのセクションがあります
[〜#〜] antlr [〜#〜] を使用してパーサーを作成します。次に [〜#〜] ast [〜#〜] を ガウスの消去法 を使用して評価します。
Gaussian_elimination を使用してください。非常に簡単ですが、 いくつかの値 があります。計算が困難な場合があります。