我需要为我的应用使用一个公式:here
部分Sqrt(5-25),可以是正面的,也可以是负面的,当然,当我们得到一个java无法处理的虚构部分时,我们就可以了。
我已经四处寻找一个复杂的类来处理它,但只找到了基本的操作(+ - * /)。
我怎么能在java中解决这个问题我知道我只需要得到真实的部分?(想象中没有重要性)
我确切地说我是在Android平台上开发的
(我在堆栈上发帖,因为它涉及java中的应用程序,但如果它属于math.se,请告诉我)
答案 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编写一个很容易。