二分法求根基於二分查詢的思想。
比如求根號2的近似值,猜測它在1到2之間,則將1作為left,2作為right,反覆二分比較f(mid)的平方與2的大小,直到(right-left)的精度eps控制在一定範圍以內。
**:
#include using namespace std;
const double eps = 1e-5;
double f(double x)
double calsqrt()
return mid;
}int main()
例如求f(x)=0,畫圖如下,求方程根即求f(x)與x軸交點的值。假設這個點叫xn好了。
牛頓迭代法的思想是,首先取乙個與xn相近的點,假定為x0。
作x0在f(x)上的切線,切線與x軸相交於x1。注意此時x1比x0更接近我們最終要找的xn。
按同樣的方式,繼續作x1對應的f(x)的切線,與x軸相交於x2。反覆這樣做,x軸交點就會越來越逼近xn。這就是迭代的過程,預設的精度就是迴圈終止的條件。
既然是迭代,自然有迭代公式,我們要尋找xn與xn-1之間的關係。比如說就找x1與x0,其實就是x0對應的切線方程,令y=0。
切線方程
y = f(x0)+f'(x0)(x-x0)
令y = 0,得 x1 = x0-f(x0)/f'(x0)
所以也有
xn = xn-1-f(xn-1)/f'(xn-1)
舉個例子,求根號6的近似值。
**:
#include using namespace std;
const double eps = 1e-5;
double f(double x)
double calsqrt()
return x_1;
}int main()
輸出
2.44949
牛頓迭代法和二分法求方程根
0x03直接給出公式x x0 f x0 f x0 設迭代到 x x0 1e 5例子 2x 3 4 x 3x 6 0 include include int main while fabs x x0 1e 5 return x 0x04簡單說一下 f就是式子,fd為f x 然後套用公式就好了最後判斷是...
牛頓迭代法和二分法求方程的根
使用牛頓迭代法 在1.5附近 和二分法 在 10,10 區間內 求2 x x x 4 x x 3 x 6 0的根 牛頓迭代法 演算法分析 假設方程f x 0,在x0附近有乙個根,那麼用xn 1 xn f xn f xn 依次計算x1,x2,x3,那麼這個序列無限逼近方程的根。原理是根據f x 在x0...
用牛頓迭代法和二分法求方程的根
題目 1 請設計程式,用牛頓迭代法求f x cos x x的近似根,要求精確到10 6。1 用函式float newtoon float x 求方程在x附近的根 2 用函式float f float x 求x處的函式值,用函式float f1 float x 求f x 在x處的導數 3 在主函式中輸...