二分演算法1(單值)

2021-05-22 05:24:40 字數 1001 閱讀 1697

二分演算法求非線性方程的根(單根)

#include

using namespace std;

#include

double bisection(double x0, double x1, double eps1, double eps2, int* pbis, double (*funcptr)(double));

//二分法,x0和x1是區間端點,

//eps1是自變數誤差界,eps2是函式誤差界,funcptr指向函式,(*pbis)記錄對分次數

//f(x),返回值是方程的解,如果邊值選取不當,返回0; 

double func(double x)//所求方程f(x) = 0中的f(x)函式

int main()

{int n = 0;      //記錄對分次數

double x = 0;   //記錄解

x = bisection  (1, 2, 0.0001, 0.0001, &n, func);   //func前加取位址號&也可以

printf("經過%d次對分,得到解為%lf/n", n, x);

cout<<"經過"<

double bisection  (double x0, double x1, double eps1, double eps2, int* pbis, double (*funcptr)(double))

{double f0, f1;    //儲存f(x0)和f(1)的返回值

double f, x;      //儲存函式和自變數的運算中間值

f0 = (*funcptr)(x0);

f1 = (*funcptr)(x1);

//檢查f(x0)和f(1)是否同號

if(f0 * f1 > 0)

{cout <<"邊界選取不當,x0和x1的函式值同號!"<

/*本程式的優缺點:

優點:簡單,收斂性好

缺點:無法重根,無法求復根;收斂數度不快

*/

二分查詢演算法1

include 二分查詢法一 using namespace std int binary search int b,int value,int n 9 int hight 9,low 0,mid while hight low 注意兩者相等的情況 mid hight low 2 if value ...

分治演算法 1 二分查詢

分 把問題劃分成子問題 治 遞迴的求解子問題 合 把子問題的解合併成問題的解 在電腦科學中,二分查詢又稱為折半搜尋,二分搜尋,是一種在有序陣列中查詢某一特定元素的演算法。搜素過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜素過程結束 如果某一特定元素大於或者小於中間元素,則在陣列大於或...

插值演算法(二分查詢兄弟演算法)

設想一下這個情景 有這樣乙個陣列arr 如果要查詢邊界值1的話,利用二分查詢的效率,似乎不是那麼的高,原因在於,二分查詢每次定位都是在陣列中間,不夠靈活,如果有一種演算法,可以根據要查詢的值,自適應定位,那麼效率顯然就快很多,因而就有了插值演算法,它的公式為 location left k l 其中...