二分法求函式零點
阿新 • • 發佈:2018-11-07
/* 二分法求函式的零點 */ #include <bits/stdc++.h> using namespace std; double f(double x) { return pow(x, 2) + 3*x + 2; // f = x^2+3x+2 } // 指定根區間範圍為[a, b],根誤差為eps double root(double a, double b, double eps) { double mid = (a+b)/2.0; //註釋掉的部分是以值誤差為小於eps情況下的求解 // while( 1 ) // { // if(abs(f(mid)) < eps) // break; // else if(f(a)*f(mid) < 0) // b = mid; // else a = mid; // mid = (a+b)/2.0; // } while(b-a>eps) { if(f(mid)==0) break; else if(f(a)*f(mid) < 0) b = mid; else a = mid; mid = (a+b)/2.0; } return mid; } int main() { double res = root(-1.5, 0, 0.001); cout << res << endl; return 0; }