2010-11-03 34 views
0

我想在java中實現一個函數來查找竇功能的零點。我知道該怎麼做,但我並不真正瞭解該問題的以下定義:找到竇功能的零點

實現在a和b之間的間隔中搜索正弦函數中的零點的函數。搜索間隔[下限,上限]應該減半,直到下限和上限小於0.0001。

alt text

爲什麼減半的間隔?有任何想法嗎?

+0

你的意思是空點與x的sin線的交點? – 2010-11-03 08:08:50

+0

作業?軟件項目的功能要求?如果功課,請添加'家庭作業'標籤。 – 2010-11-03 08:10:48

+4

@ org.life.java - 尋找根源是他在尋找的。 「零點」是德語術語「Nullstelle」(英語:root)的逐詞翻譯的結果。 – 2010-11-03 08:15:17

回答

5

聽起來像您被要求實施binary search,您可能需要|b-a| < pi,因此在區間中有一個唯一的根。順便說一下,這些在英語中被稱爲「正弦」和「根」(或「零」)。

這個想法是,在你的間隔的終點評估的函數(正弦)將給出一個肯定答案和一個否定答案(如果兩者都是正數或兩者均爲負數,則失敗)。因爲正弦是連續的,所以必須有一箇中間值爲零的點(中間值定理)。檢查你的間隔的中點。如果是肯定的,則從您的時間間隔倒塌到負值終點與中點之間的時間間隔。否則,倒塌到另一半。重複此操作直到您處於所需的零點附近。

+0

你是什麼意思與黑白?什麼是w? – 2010-11-03 10:41:20

+0

抱歉,這意味着「之間」 – Jonathan 2010-11-03 21:20:03

1

提示:你可以期望至少有一個根在區間如果

(A) sgn(f(lower_limit) != sgn(f(upper_limit)) 

如果條件A爲真:減半的時間間隔,IAW:

{[min,max]} -> {[min, (max-min)/2] , ](max-min)/2,max]} 

,並檢查兩個子間隔。

試試看在紙上(使用情節,減半interfals和揣摩,這間隔是「根容器」候選人)

0

竇是指由它的頻率。在竇週期0.5和1處發現過零點。即sin * pi和* 2pi用於普通的正弦碼功能。因此,在A和B之間,過零點都是小於B的點大於A,這等於期間== 1和0.1,使用模數來忽略像2,2.5等值。