問題描述
用二分法求方程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...