二分法求近似方程的解的原理我就不講了,就是類似於零點存在定理之類的東西。
所以直接以例項來講述:
例1:用二分法求方程x^3+4x-10=0在區間[1,2]內的根(精確到0.00001)
首先我們要判斷一下能不能用二分法來求解,把首末兩端代入式子中去計算可以得出,代入1得-6,代入2得6,滿足二分求方程的解;
#include #include double f(double x)
int main()
printf("%.5f\n%.5f",a,b);
} return 0;
}
如果mid*右邊小於0,那麼則說明零點肯定是在右半部分,所以mid移到右邊去。
如果mid*左邊小於0,那麼則說明零點肯定是在左半部分,所以mid移到左邊去。
至於上面那個函式呼叫是直接返回了方程,這樣就會比較簡便了。
例二:c語言在區間[0,1]內用二分法求方程e^x+10x-2=0的近似根,誤差不超過0.5*10^(-3)。
#include #include #include #define e 2.7182828//定義自然對數底數的值
float getvalue(float x)
int main()
printf("%0.3f\n",c);
return 0;
}
同上面相似,大致就是這麼做的。
例三:貼一道我們學校oj上的題
對於給定的y,求8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == y這個方程,在0<=x<=100中的實數解。
input
第一行包含乙個正整數t(1<=t<=100),代表有多少組測試樣例。
接下來t行,每行乙個實數y(fabs(y)<=1e10)。
output
對於每乙個測試樣例,輸出乙個實數(小數點後保留4位),代表該方程的解。如果該方程在0~100沒有解,則輸出"no solution!"
sample input
2sample output100-4
1.6152no solution!
#include#includedouble func(double x,double y)
int judge(double y)
int main()
left=0; right=100; dis=1e-8;
while(right-left>dis)
printf("%.4lf\n",mid);
} return 0;
}
*注意精度的判斷就好了10的-8次。
最後注意二分法可以使用的條件,對於區間上連續不斷的函式且f(a)*f(b)<0的函式f(x),通過不斷地把函式f(x)的零點所在區間一分為二,使區間的兩個端點逐漸逼近零點,近而得到零點近似值的方法為二分法。
二分法求方程解
一 此法要求函式連續,在給定區間內僅有乙個根,通過迴圈十幾次即可獲得精度要求較高的根 0.00001 精度可自己設定 理論依據為函式連續性,在根附近有 f start f end 0 include include include define e 2.718 float f float int m...
求方程根 (二分法)
二分法求方程的根 求下面方程的乙個根 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...