我想在java中實現一個函數來查找竇功能的零點。我知道該怎麼做,但我並不真正瞭解該問題的以下定義:找到竇功能的零點
實現在a和b之間的間隔中搜索正弦函數中的零點的函數。搜索間隔[下限,上限]應該減半,直到下限和上限小於0.0001。
爲什麼減半的間隔?有任何想法嗎?
我想在java中實現一個函數來查找竇功能的零點。我知道該怎麼做,但我並不真正瞭解該問題的以下定義:找到竇功能的零點
實現在a和b之間的間隔中搜索正弦函數中的零點的函數。搜索間隔[下限,上限]應該減半,直到下限和上限小於0.0001。
爲什麼減半的間隔?有任何想法嗎?
聽起來像您被要求實施binary search,您可能需要|b-a| < pi
,因此在區間中有一個唯一的根。順便說一下,這些在英語中被稱爲「正弦」和「根」(或「零」)。
這個想法是,在你的間隔的終點評估的函數(正弦)將給出一個肯定答案和一個否定答案(如果兩者都是正數或兩者均爲負數,則失敗)。因爲正弦是連續的,所以必須有一箇中間值爲零的點(中間值定理)。檢查你的間隔的中點。如果是肯定的,則從您的時間間隔倒塌到負值終點與中點之間的時間間隔。否則,倒塌到另一半。重複此操作直到您處於所需的零點附近。
你是什麼意思與黑白?什麼是w? – 2010-11-03 10:41:20
抱歉,這意味着「之間」 – Jonathan 2010-11-03 21:20:03
提示:你可以期望至少有一個根在區間如果
(A) sgn(f(lower_limit) != sgn(f(upper_limit))
如果條件A爲真:減半的時間間隔,IAW:
{[min,max]} -> {[min, (max-min)/2] , ](max-min)/2,max]}
,並檢查兩個子間隔。
試試看在紙上(使用情節,減半interfals和揣摩,這間隔是「根容器」候選人)
竇是指由它的頻率。在竇週期0.5和1處發現過零點。即sin * pi和* 2pi用於普通的正弦碼功能。因此,在A和B之間,過零點都是小於B的點大於A,這等於期間== 1和0.1,使用模數來忽略像2,2.5等值。
你的意思是空點與x的sin線的交點? – 2010-11-03 08:08:50
作業?軟件項目的功能要求?如果功課,請添加'家庭作業'標籤。 – 2010-11-03 08:10:48
@ org.life.java - 尋找根源是他在尋找的。 「零點」是德語術語「Nullstelle」(英語:root)的逐詞翻譯的結果。 – 2010-11-03 08:15:17