2011-06-08 58 views
0

有一個公式,我需要用我的應用程序:here隔離實數複數在java中

部分SQRT(5-25),可正可負,當然,當負我們得到了java不能處理的虛部。

我四處搜尋找到一個複雜的類來處理,但只發現基本操作(+ - * /)。

我怎樣才能在Java解決這個知道我只需要得到真正的一部分嗎?(虛有沒有意義)

我精確我開發的Android平臺

(一張貼在堆棧,因爲它是關於在java中的應用,但如果它屬於math.se,告訴我)

+0

我認爲它會拋出一些異常,當它遇到一個負面...也可以使用try catch來處理它,只需將它轉換爲+ ve也不常用方式找到它的平方根... – ngesh 2011-06-08 10:00:02

+0

真實部分是真實的想象,如果不是,那麼你將能夠採取兩個並通過郵局發送給我。 – 2011-06-08 10:08:09

回答

2

您可以簡單地計算以前的東西:

plot 25-20 +((2Pi0。3²)/(Pi10²)的Sqrt [2 * 980(1+(Pi10²)/(Pi10²))] T)2 0-38

情節25-20 +((2 *0.3² )/(10 2)的Sqrt [2 * 980(1 + 1)] T)2 0-38

25 - 20 + 4 * 0.0000081 * 3920 * T^2爲0〜38(我有一些因素是錯誤的,但你明白了)

只是應用基本的數學常量,並應用第二個雙目公式後刪除中間(虛部)。

與複數無關。

+0

謝謝,我沒有簡單的實現我可以在pow2的範圍之外得到平方根。 – eephyne 2011-06-08 10:22:48

+0

如果它必須儘快做盡可能少的計算(例如,不要爲2)寫入1+(10²pi/10²pi),則公式越容易成爲優化器。 – rurouni 2011-06-08 10:23:40

+0

爲什麼這是工作在負數的平方根但不積極(即使我不需要這樣做的積極)? – eephyne 2011-06-08 10:35:48

2

取一般複數的平方根可以用實數的基本算術運算(加上實數的平方根): (一種技術是利用De Moivre定理:可以寫出任何複數a + bi 10例爲其中

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

更新:公式是淵源由於歐拉,而棣莫弗定理是

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

你感到困惑的數學。 -25的平方根是25 *( - 1)的平方根,即25 *的平方根的平方根,即5i。該數字的實數部分爲0.

如果您想要5,只需檢查數字的符號是否「紮根」,如果是負數,則更改它。

+0

這是一個負實數而不是一般複數的平方根。 – 2011-06-08 10:02:23

+0

你是對的,但公式說sqrt(5-25),這是我* sqrt(20)。 – duffymo 2011-06-08 10:03:40

0

整數的平方根將成爲整數或實數爲零的複數。負整數的平方根的實部爲零。總是。

所以......

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

但我怎麼解決這個問題?如果我將squareroot替換爲0,我得不到一個好結果。我是否假設虛構部分對公式的其餘部分做了一些真正的事情。

我希望是這樣! (丟棄虛部的想法對我來說沒有多大意義......但我認爲你有充分的理由這樣做。)

真正的答案是找到一個Java庫,它將執行復雜的算術。我從來沒有需要使用它,但第一個要檢查的應該是Apache Commons Maths庫。

+0

但我怎麼解決這個問題,如果我用0代替squareroot,我沒有得到好的結果,所以我想虛部做了一些與真正的公式 – eephyne 2011-06-08 10:09:57

0

說「Java無法處理它」是不正確的。從平方根返回雙精度的語言不能處理它,但如果你有一個Complex類,這不是問題。 Python有一個內置的;使用Java編寫一個很容易。