我需要为我的应用程序使用一个公式:这里
Sqrt(5-25) 部分可以是正数或负数,当然当为负数时,我们得到了一个 java 无法处理的虚构部分。
我四处寻找一个复杂的类来处理它,但只找到了基本操作(+-*/)。
我怎么能在java中解决这个问题,知道我只需要得到真实的部分?(想象的并不重要)
我确切地说我在android平台上开发
(我在堆栈上发帖是因为它与 java 中的应用程序有关,但如果它属于 math.se ,请告诉我)
我需要为我的应用程序使用一个公式:这里
Sqrt(5-25) 部分可以是正数或负数,当然当为负数时,我们得到了一个 java 无法处理的虚构部分。
我四处寻找一个复杂的类来处理它,但只找到了基本操作(+-*/)。
我怎么能在java中解决这个问题,知道我只需要得到真实的部分?(想象的并不重要)
我确切地说我在android平台上开发
(我在堆栈上发帖是因为它与 java 中的应用程序有关,但如果它属于 math.se ,请告诉我)
您可以简单地计算之前的内容:
从 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 (我有一些错误的因素,但你明白了)
只需将基本数学应用于常数并在应用第二个二元公式后删除中间(虚部)。
与复数无关。
一般复数的平方根可以通过实数的基本算术运算(加上实数的平方根)来完成: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θ)
整数的平方根将是整数或实部为零的复数。负整数平方根的实部为零。总是。
所以 ...
public double realPartOfSquareRoot(int i) {
return (i > 0) Math.sqrt(i) : 0;
}
但是我如何解决这个问题?如果我用 0 替换平方根,我不会得到好的结果。我是否认为虚部在公式的其余部分对实数做了一些事情。
我希望是这样的!(丢弃虚部的想法对我来说没有多大意义......但我认为你有充分的理由这样做。)
真正的答案是找到一个可以执行复杂算术的 Java 库。我从来不需要使用它,但第一个要检查的应该是Apache Commons Maths库。
说“Java 不能处理”是不对的。没有从平方根返回双精度的语言可以处理它,但如果你有一个Complex
类,这不是问题。Python内置了一个;用Java写一个很容易。
你对数学感到困惑。-25 的平方根是 25*(-1) 的平方根,即 25 的平方根 * -1 的平方根,即 5i。该数字的实部为 0。
如果你想要 5,只需检查数字的符号是否“有根”,如果它是负数则更改它。