Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java求解数学菱形_Java_Math - Fatal编程技术网

用Java求解数学菱形

用Java求解数学菱形,java,math,Java,Math,在用java搜索了一个钻石问题解决程序之后,我所能找到的就是OOP钻石问题。那不是我想要的。我要找的是java中的一个简单函数,用于找到钻石问题的解决方案 钻石问题可以这样表述: A=C*D B=C+D 因此,如果: A=10,B=7 C=5,D=2 我试图用java快速有效地解决钻石问题。我尝试过嵌套for循环,但由于程序的性质,它们效率极低 如果有人有什么想法,我很乐意听听 谢谢 我懒得替你做代数题,只需解c和d的a和b 大概是 `C = A + B/A` disclimer,我刚刚创造了

在用java搜索了一个钻石问题解决程序之后,我所能找到的就是OOP钻石问题。那不是我想要的。我要找的是java中的一个简单函数,用于找到钻石问题的解决方案

钻石问题可以这样表述:

A=C*D

B=C+D

因此,如果:

A=10,B=7

C=5,D=2

我试图用java快速有效地解决钻石问题。我尝试过嵌套for循环,但由于程序的性质,它们效率极低

如果有人有什么想法,我很乐意听听


谢谢

我懒得替你做代数题,只需解
c
d
a
b

大概是

`C = A + B/A`
disclimer,我刚刚创造了上面的表达式,但同样的概念也随之而来。你可以自己做代数


也许您可以根据您知道的值来执行某种类型的switch语句。有4个选择2个(就像6个)不同的情况

我懒得为你做代数,但只需根据
a
b
求解
c
d

大概是

`C = A + B/A`
disclimer,我刚刚创造了上面的表达式,但同样的概念也随之而来。你可以自己做代数


也许您可以根据您知道的值来执行某种类型的switch语句。有4个选择2个(类似于6个)不同的情况

这只是一对联立方程组,可以通过分析来解决,而无需借助数字运算

重新排列第二行,得到
C=B-D
,并替换为第一行。这在
D
中给出了一个二次函数:

A = D * (B - D)
D = (B +/- sqrt(B^2 - 4*A)) / 2
到目前为止,我们为
D
提供了一对解决方案:

A = D * (B - D)
D = (B +/- sqrt(B^2 - 4*A)) / 2

现在将这些解替换回第2行,以求解
C

这只是一对联立方程组,可以通过解析法求解,而无需借助数字运算

重新排列第二行,得到
C=B-D
,并替换为第一行。这在
D
中给出了一个二次函数:

A = D * (B - D)
D = (B +/- sqrt(B^2 - 4*A)) / 2
到目前为止,我们为
D
提供了一对解决方案:

A = D * (B - D)
D = (B +/- sqrt(B^2 - 4*A)) / 2

现在将这些解替换回第2行,以解
C

如果我们观察以下代数:

B^2-4A=(C^2+2CD+C^2)-4CD=(C^2-2CD+D^2)=(C-D)^2

然后我们可以快速轻松地实现此功能:

public static double[] diamondSolve(double a, double b) {
    double temp = b * b - 4 * a;
    double difference = Math.sqrt(temp); // difference = C - D

    double[] retArray = new double[2];

    // (b + difference) / 2 = (C + D + C - D) / 2 = 2C / 2 = C
    retArray[0] = (b + difference) / 2;

    // B - C = C + D - C  = D
    retArray[1] = b - retArray[0];

    return retArray;
}

顺便说一下,如果
4A
大于
B^2
,这将产生问题。。。在这种情况下,答案无论如何都是虚构的。

如果我们观察以下代数:

B^2-4A=(C^2+2CD+C^2)-4CD=(C^2-2CD+D^2)=(C-D)^2

然后我们可以快速轻松地实现此功能:

public static double[] diamondSolve(double a, double b) {
    double temp = b * b - 4 * a;
    double difference = Math.sqrt(temp); // difference = C - D

    double[] retArray = new double[2];

    // (b + difference) / 2 = (C + D + C - D) / 2 = 2C / 2 = C
    retArray[0] = (b + difference) / 2;

    // B - C = C + D - C  = D
    retArray[1] = b - retArray[0];

    return retArray;
}


顺便说一下,如果
4A
大于
B^2
,这将产生问题。。。在这种情况下,答案无论如何都是虚构的。

谁说解必须是整数?:)素数A=7,B=8,C=1,D=7如果A为非零,B为0,那么它是不可解的。如果A=1300837,B=0,C=isqrt(1300837),D=-isqrt(1300837)你在想象事物,@durron597。谁说解必须是整数?:)素数A=7,B=8,C=1,如果A=1300837,B=0,C=isqrt(1300837),D=-isqrt(1300837)你在想象事情,@durron597。这不是问题,但通常的约束条件是找到一个整数答案。你会得到这样的结果:
A/(B-C)=C
,这是不可解的。这个答案行不通。@PicklishDoorknow我在回答中确实说过,我制定了具体的公式,特别告诉op“你可以自己做代数”我刚才正在写如何将你的数学解转换成java解……虽然从数学上讲,在这种情况下,要推导出一个C或D的公式是不可能的。@PicklishDoorKnow:实际上有一个公式。看我的答案这不是问题,但通常约束条件是找到一个整数答案。你最终会得到这样的结果:
A/(B-C)=C
,这是无法解决的。这个答案行不通。@PicklishDoorknow我在回答中确实说过,我制定了具体的公式,特别告诉op“你可以自己做代数”我刚才正在写如何将你的数学解转换成java解……虽然从数学上讲,在这种情况下,要推导出一个C或D的公式是不可能的。@PicklishDoorKnow:实际上有一个公式。看到我的答案了吗?你的意思是C=B-D吗?是的,这个答案有很多mistakes@splungebob对我的错,C=B/D?你的意思是C=B-D吗?是的,这个答案有很多mistakes@splungebob对我的错误。