0

我需要为我的应用程序使用一个公式:这里

Sqrt(5-25) 部分可以是正数或负数,当然当为负数时,我们得到了一个 java 无法处理的虚构部分。

我四处寻找一个复杂的类来处理它,但只找到了基本操作(+-*/)。

我怎么能在java中解决这个问题,知道我只需要得到真实的部分?(想象的并不重要)

我确切地说我在android平台上开发

(我在堆栈上发帖是因为它与 java 中的应用程序有关,但如果它属于 math.se ,请告诉我)

4

5 回答 5

2

您可以简单地计算之前的内容:

从 0 到 38 绘制 25-20+((2Pi0.3²)/(Pi10²)Sqrt[2*980(1+(Pi10²)/(Pi10²))]t)²

或者

从 0 到 38 绘制 25-20+((2*0.3²)/(10²)Sqrt[2*980(1+1)]t)²

或者

25 - 20 + 4 * 0.0000081 * 3920*t^2 从 0 到 38 (我有一些错误的因素,但你明白了)

只需将基本数学应用于常数并在应用第二个二元公式后删除中间(虚部)。

与复数无关。

于 2011-06-08T10:16:14.123 回答
2

一般复数的平方根可以通过实数的基本算术运算(加上实数的平方根)来完成:http: //www.mathpropress.com/stan/bibliography/complexSquareRoot.pdf(一种技术是利用 De Moivre 定理:任何复数 a + bi 都可以 r(cos θ + i sin θ)写成

r = sqrt(a^2 + b^2),  cos θ = a/r, sin θ = b/r

更新:公式r(cos θ + i sin θ) 最初是由于欧拉,而德莫弗定理是

(a + ib)ⁿ = rⁿ(cos nθ + i sin nθ)
于 2011-06-08T09:58:53.297 回答
0

整数的平方根将是整数或实部为零的复数。负整数平方根的实部为零。总是。

所以 ...

public double realPartOfSquareRoot(int i) {
    return (i > 0) Math.sqrt(i) : 0;
}

但是我如何解决这个问题?如果我用 0 替换平方根,我不会得到好的结果。我是否认为虚部在公式的其余部分对实数做了一些事情。

我希望是这样的!(丢弃虚部的想法对我来说没有多大意义......但我认为你有充分的理由这样做。)

真正的答案是找到一个可以执行复杂算术的 Java 库。我从来不需要使用它,但第一个要检查的应该是Apache Commons Maths库。

于 2011-06-08T10:01:42.187 回答
0

说“Java 不能处理”是不对的。没有从平方根返回双精度的语言可以处理它,但如果你有一个Complex类,这不是问题。Python内置了一个;用Java写一个很容易。

于 2011-06-08T10:04:55.807 回答
0

你对数学感到困惑。-25 的平方根是 25*(-1) 的平方根,即 25 的平方根 * -1 的平方根,即 5i。该数字的实部为 0。

如果你想要 5,只需检查数字的符号是否“有根”,如果它是负数则更改它。

于 2011-06-08T09:59:23.667 回答