说你有

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


您将如何用Java计算x and y

完成一些代数运算后,我发现了x = de-bf / ad-bcy = af-ce / ad-bc

这些显示字母是什么
a + b = ec + d = f

每当我编写代码时,它总是给我错误的答案,我不确定这是由于使用int而不是double还是其他原因造成的。也可以解析等式中的字母

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);
}

最佳答案

问题是您将行列式两次划分!

你的公式是

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

因此,您可以更正:

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

要么

double 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);
}

关于java - 如何求解2变量线性联立方程? java ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42279579/

10-15 10:44