二分法求零點,求根號2的近似值


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);

 

二分法實際上就是零點定理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM