2017-02-16 29 views
0

はあなたがJavaでx and yをうまくする方法を2変数線形連立方程式を解く方法は? Javaの

3x + 2y = 11 
2x - 3y = 16 

を持って言いますか?私はx = de-bf/ad-bcy = af-ce/ad-bc

これらの文字は a + b = ec + d = f

私はそれは常に私に間違った答えを与えるコードを書くたびに、私はわからないが何であるかを示していることを考え出したいくつかの代数を行った後

もしそれが倍精度の代わりにintを使うことによるならば。また、

input: 5x - 3y = 5 
parased as: a = 5, b = -3 and e = 5 

方程式などからの手紙を解析することが可能であろう。ここ行列を使用して

public static void solveSimultaneousEquations(double a, double b, double c, double d, double e, double f) { 
    double det = 1/ ((a) * (d) - (b) * (c)); 
    double x = ((d) * (e) - (b) * (f))/det; 
    double y = ((a) * (f) - (c) * (e))/det; 
    System.out.print("x=" + x + " y=" + y); 
} 
+0

あなたのコードがある場合は?あなたの具体的な質問は何ですか? *デバッグのヘルプを求める質問(「なぜこのコードは動作しないのですか?」)には、目的の動作、特定の問題またはエラー、および質問自体にそれを再現するのに必要な最短コードが含まれていなければなりません。明確な問題文がない質問は、他の読者にとって有用ではありません。参照してください:[最小、完全、および検証可能な例の作成方法](http://stackoverflow.com/help/mcve)。* – tnw

+0

コードをashowしてください。もちろん、intの代わりにdoubleを使うべきです。 –

+0

doubleの代わりにintを使用すると問題が発生する可能性があります。私はあなたがここに尋ねるよりもそれを確認する時間が少なくなると確信しています。答えを待つよりもはるかに早く解決策を知ることができます。 BTW。 xとyを解くには、方程式にかっこを使用する必要があります。 – Artur

答えて

3

問題は、行列式を2回に分けることです。

あなたの式は

ので
x = de-bf/ad-bc 
y = af-ce/ad-bc 

det = ad-bc 

です:

x = de-bf/det 
y = af-ce/det 

しかし、あなたは計算:あなたのプログラムでとても

double det = 1/ ((a) * (d) - (b) * (c)); 

det式からdetではありませんが、1/det

だからどちらかあなたが訂正:

ダブルDET =((A)*(D) - (B)*(c)参照)。

又は

ダブルX =((D)*(E) - (B)*(F))* DET。 double y =((a)*(f) - (c)*(e))* det;

私は最初のものを好む:

public static void solveSimultaneousEquations(double a, double b, double c, double d, double e, double f) { 
    double det = ((a) * (d) - (b) * (c)); //instead of 1/ 
    double x = ((d) * (e) - (b) * (f))/det; 
    double y = ((a) * (f) - (c) * (e))/det; 
    System.out.print("x=" + x + " y=" + y); 
} 
-1

を解析せずに、コードは、方程式ので

のシステムを解決するための最も簡単な方法ですあなたの例から:

3x + 7y = 41
5x - 3y = 25

あなたがで両側を掛けた場合

あなたは実際、今の行列

[[3 7]
[5 -3]]

[41 25]

を作成することができます左側の行列の逆数は、あなたが持っています

[[1 0]
[0 1]]

左側

、右側のxとyの両方のためのソリューション

は、NASAが開発し、行列を作成し、逆数を行うことができます利用可能な場合作った行列のパッケージがあるように使用します。それか類似のものを探す

+0

これは私が達成しようとしていたものです。数字の代わりに文字を使って作業した後、私はそれらをテストしたので私が仕事を知っている方程式に来ました。 NASAの提案に感謝します。 – ThorinDev

+0

あなたはNASAを見る必要はありません。 Apache Commons Mathを含むこれを行うためのJavaライブラリがあります。 http://commons.apache.org/proper/commons-math/ – duffymo

関連する問題