gpt4 book ai didi

java - 如何求解二变量线性联立方程? java

转载 作者:行者123 更新时间:2023-12-01 20:56:32 24 4
gpt4 key购买 nike

假设你有

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

如何在 Java 中计算出 x 和 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!

所以要么你纠正:

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

double x = ((d) * (e) - (b) * (f)) * det; 双 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 - 如何求解二变量线性联立方程? java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42279579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com