我有以下挑戰:查找零點的算法
實現一個函數,在a和b之間的間隔中搜索正弦函數的零點。搜索間隔[下限,上限]應該減半,直到下限和上限小於0.0001。
找到一個條件來決定搜索必須繼續進行的時間。所以在將時間間隔分成兩個時間間隔後,我們必須選擇一個以進行搜索。
我們假設在a和b之間的間隔中只有一個零點。
我用點1掙扎我已經對話題,幫了我很多的一些問題,但現在我要實現它在Java中,但還沒有成型。
這是到目前爲止我的代碼:
private static double nullstelle(double a, double b){
double middle = (a + b)/2;
double result = middle;
if(Math.abs(a-b) > 0.0001){
double sin = Math.sin(middle);
if(sin > 0){
result = nullstelle(a, middle);
}else{
result = nullstelle(middle, b);
}
}
return result;
}
我試着用遞歸來實現,但也許一個其他的方式會更好,我不知道。 任何想法?
這不是你張貼在這裏完全一樣的問題:http://stackoverflow.com/questions/4086385/find-zero-points-with -recursion – Grodriguez 2010-11-03 18:27:58
哦,還在這裏:http://stackoverflow.com/questions/4085115/find-null-points-of-sinus-function – Grodriguez 2010-11-03 18:31:03
如果圖上的x1和x2是你用於'a '和'b',你的測試數據違反了2)中的假設。 – Simon 2010-11-03 18:36:20