AHUOJ 二分法求方程的根

2021-09-18 05:06:35 字數 1194 閱讀 2885

問題描述

用二分法求方程f(x)=ax4+bx3+cx2+dx+e=0 在 (x1,x2) 之內的根 本題保證f(x1)*f(x2)<=0且(x1,x2)內只有乙個根。

輸出描述:

乙個浮點數,代表根,精確到小數點後10位。

解題思路:

過程沒什麼好說的的,主要是這個浮點數精度問題。

浮點數的比較:

等於運算子 (==)

取乙個極小值eps,使得滿足一定精度的兩個浮點數可以認為相等。用科學計數法表示1e-n

const double eps = 1e-11

#define equ(a, b) ((fabs((a) - (b))) < (eps))

大於運算子

#define more(a, b) ((a) - (b)) > (eps)
小於運算子

#define less(a, b) ((a) - (b)) < (-eps)
大於等於運算子 (>=)

#define moreequ(a, b) ((a) - (b)) > (-eps)
小於等於運算子 (<=)

#define lessequ(a, b) ((a) - (b)) < (pes)
圓周率

const double pi = acos(-1.0);
**如下:

#include #include /*

兩個測試點沒有通過

abs()返回值是int

fabs()才是double

指數可以用科學計數法表示,1e-x

*/double func(double x);

int a,b,c,d,e;

int main()

else if(func(x1) * f <= 0)

else

}while(1);

printf("%.10f\n",mid);

return 0;

}double func(double x)

求方程根 (二分法)

二分法求方程的根 求下面方程的乙個根 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...

二分法求方程的根

求下面乙個方程的根 f x x 3 5x 2 10x 80f x x3 5x2 10x 80如果a是方程的根,則要求f a 1e 6f a 1e 6 通過對公式的求導可以發現,導函式開口向上,與x軸沒有交點,那麼導函式的值就是始終大於0的,所以原函式單調遞增 而且已知f 0 0 f 0 0,f 10...