首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Java中解决数学菱形问题

在Java中解决数学菱形问题
EN

Stack Overflow用户
提问于 2012-11-09 05:42:43
回答 3查看 456关注 0票数 0

在用java密集地搜索了一个钻石问题解算器之后,我所能找到的就是面向对象的钻石问题。那不是我要找的。我正在寻找的是一个简单的函数在java中找到一个菱形问题的解决方案。

菱形问题可以表示为:

A=C* D,

B=C+D

因此,如果:

A= 10,B=7

C= 5,D=2

我正在尝试做的是快速有效地解决java中的菱形问题。我尝试过嵌套for循环,但由于程序的性质,它们的效率非常低。

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

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-09 06:01:28

如果我们观察下面的代数:

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

然后,我们可以快速而轻松地创建此函数:

代码语言:javascript
运行
复制
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;
}

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

票数 1
EN

Stack Overflow用户

发布于 2012-11-09 05:51:01

这只是一对联立方程,可以解析地求解,而不需要进行数值计算。

重新排列您的第二行以获取C = B - D并替换到第一行。这在D中给出了一个二次型

代码语言:javascript
运行
复制
A = D * (B - D)

通过quadratic formula,我们为D提供了两个解决方案

代码语言:javascript
运行
复制
D = (B +/- sqrt(B^2 - 4*A)) / 2

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

票数 2
EN

Stack Overflow用户

发布于 2012-11-09 05:45:09

我懒得为您做代数运算,但就ab而言,我只能解决cd的问题

所以就像这样

代码语言:javascript
运行
复制
`C = A + B/A`

不攀登者,我只是编造了上面的表达式,但同样的概念也是如此。你可以自己做代数。

也许你可以根据你所知道的值来做一些switch语句。有4个选项2(相当于6个)不同的情况

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13298332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档