在java中隔离复数中的实数

时间:2011-06-08 09:55:24

标签: java android numbers complex-numbers

我需要为我的应用使用一个公式:here

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

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

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

我确切地说我是在Android平台上开发的

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

5 个答案:

答案 0 :(得分: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 θ)最初是由Euler引起的,而De Moivre的定理是

(a + ib)ⁿ = rⁿ(cos nθ + i sin nθ)

答案 1 :(得分:2)

您可以在以前简单地计算:

图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)²从0到38

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

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

与复数无关。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

所以......

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

  

但我怎么解决这个问题?如果我将squareroot替换为0,我得不到好的结果。我是否假设虚构的部分在公式上做了一些事情。

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

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

答案 4 :(得分:0)

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