二分法 求近似方程的解

2021-06-28 13:30:29 字數 1535 閱讀 4024

二分法求近似方程的解的原理我就不講了,就是類似於零點存在定理之類的東西。

所以直接以例項來講述:

例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

2

100-4

sample output

1.6152

no 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...