const double eps = 1e-5; double func(double x) { return x*x; } double s_qrt(double low,double high,double obj) { double mid; while(high-low>eps) { mid=low+(high-low)/2; if(func(mid)>obj) { high=mid; } else { low=mid; } } return low; }
這是求根號下obj的值,單調區間,這里是單調遞增區間,low和high需要包含所求值
求根號2的值,設其為x
即 x=根號2
x*x=2
x*x-2=0 方程構造出來了
到這兒就要用函數的思想了,方程的解即為函數的零點,利用二分法,不斷縮小區間范圍
當區間足夠小的時候,處於誤差范圍內即可
比如求根號2
調用 cout<<s_qrt(0,10,2);
二分法實際上就是零點定理