提高專案18 二分法解方程

2021-07-14 05:21:11 字數 1780 閱讀 3681

任務和**:二分法是在電腦科學中很重要的一種方法,用於查詢產生二分查詢演算法,還可以用在很多場合。

可以用二分法解方程。

對於區間[a,b]上連續不斷且f(a)·f(b)<0的函式y=f(x),通過不斷地把函式f(x)的零點所在的區間一分為二,使區間的兩個端點逐步逼近零點,進而得到零點近似值的方法叫二分法。

假設要求方程f(x)=0的解,給定精確度ξ。其演算法是:

1 確定區間[a,b],驗證f(a)·f(b)<0

2 求區間(a,b)的中點c

3 判斷

(1) 若f(a)·f(c)<0,則令b=c;

(2) 若f(c)·f(b)<0,則令a=c.

4 判斷f(c)是否達到精確度ξ:即若┃f(c)┃

/*

檔名:main.c

完成日期:2016.7.2

問題描述:二分法是在電腦科學中很重要的一種方法,用於查詢產生二分查詢演算法,還可以用在很多場合。

可以用二分法解方程。

對於區間[a,b]上連續不斷且f(a)·f(b)<0的函式y=f(x),通過不斷地把函式f(x)的零點所在的區間一分為二,使區間的兩個端點逐步逼近零點,進而得到零點近似值的方法叫二分法。

假設要求方程f(x)=0的解,給定精確度ξ。其演算法是:

1 確定區間[a,b],驗證f(a)·f(b)<0

2 求區間(a,b)的中點c

3 判斷

(1) 若f(a)·f(c)<0,則令b=c;

(2) 若f(c)·f(b)<0,則令a=c.

4 判斷f(c)是否達到精確度ξ:即若┃f(c)┃

程式輸出:零點的x值

*/#include #include double myfunction(double x);

int testregion(double a,double b);

double analysepoint(double a,double b);

int main()

c = analysepoint(a,b);

printf("當c = %lf,f(%.5f)無限接近零點",c,c);

return 0;}/*

函式功能:求f(x)的值

返回值:返回函式值

*/double myfunction(double x)

/*函式功能:測試零點是否在區間[a,b]上

返回值:返回0表示存在,返回1表示不存在

*/int testregion(double a,double b)

return result;}/*

函式功能:求f(x)接近零點時x的值

返回值:返回f(x)

*/double analysepoint(double a,double b)

if(myfunction(c) * myfunction(b) < 0)

}while(fabs(myfunction(c)) > 1e-5);

return c;

}

程式執行結果:

總結:通過函式呼叫來完成整體的能夠,需要注意函式引數的傳遞以及返回值的含義,利用引數傳遞來完成計算。

解方程 C 二分法

題目詳情 給出n個整數和x,請問這n個整數中是否存在三個數a,b,c使得ax2 bx c 0,數字可以重複使用。第一行兩個整數n,x 第二行n個整數a i 表示可以用的數 1 n 1000,1000 a i x 1000 yes表示可以 no表示不可以 2 1 1 2 yes要使用二分法解答此題,我...

二分法求解方程

二分法是一種求解方程近似根的方法。對於乙個函式 f x f x 使用二分法求 f x f x 近似解的時候,我們先設定乙個迭代區間 在這個題目上,我們之後給出了的兩個初值決定的區間 20,20 20,20 區間兩端自變數 xx 的值對應的 f x f x 值是異號的,之後我們會計算出兩端 xx的中點...

解方程 二分法 HDU

problem description 給定方程 8x4 7x3 2x2 3x 6 y,請計算x在 0,100 範圍內的解。input 輸入資料首先是乙個正整數t 1 t 100 表示有t組測試資料。接下來t行,每行包含乙個實數y fabs y 1e10 output 請計算並輸出方程在範圍 0,1...