二分法求方程的根 二分法開根號和牛頓迭代法

2021-10-11 23:23:42 字數 914 閱讀 1314

在刷水題的時候看到乙個要開根號的, 雖然可以math.sqrt()解決這個問題

problem - 2009​acm.hdu.edu.cn

抱著好玩的心態, 找到了關於開根號的兩種演算法, 二分法開根號和牛頓迭代法。

第一種是二分法開根號, 當start<=end的時候, 先計算mid, 然後比較mid的平方是不是

=x, 如果相等直接返回x就行了, x比較大的話就在mid+1到end進行二分查詢, 同時還要對ans進行更新, x較小的話就在start到mid+1進行二分查詢。

static int squareroot(int x)

int start = 1,end = x, ans = 0;

while (start <= end)

//xif (mid*mid < x)

else

}return ans;

}

時間複雜度是o(log x), math.sqrt()的好像是o(1) - -

(更具體的)

牛頓迭代法用求方程近似根的方法, 先估計出乙個和方程的根比較接近的值, 再用

公式推算出下乙個更接近的值, 不斷的重複這個過程就可以得到滿意的精度, 所以

比較關鍵的地方在於選第乙個近似根, 還有起始值上面。

static int sqrtnewton(int num, int e)

while (e0 > e);

return guess;

}

求方程根 (二分法)

二分法求方程的根 求下面方程的乙個根 f x x3 5x2 10x 80 0 若求出的根是a,則要求 f a 10 6 解法 對f x 求導,得f x 3x2 10x 10。由一元二次方程求根公式知方呈f x 0 無解,因此f x 恆大於0。故f x 是單調遞增的。易知f 0 0且f 100 0,所...

二分法求方程根

二分法是計算機上的一種常用演算法,下面列出計算步驟 step1 計算 step2 計算 step3 若 0,則若若 如下 erfen.m 有根區間 a,b 函式 y x 2 2 呼叫了erfenhanshu a 1 b 6 e 10 cnt 0 while e 0.1 cnt cnt 1 fa er...

二分法 牛頓法開根號

牛頓法 public static double sqrtn1 double value,double accurary double init 1.0 while math.abs init init value accurary return init 二分法和牛頓法的時間複雜度都是o logn...