• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            天之道

            享受編程的樂趣。
            posts - 118, comments - 7, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            二分法求方程的近似解(C++實現(xiàn))

            Posted on 2011-11-25 20:54 hoshelly 閱讀(2179) 評論(0)  編輯 收藏 引用 所屬分類: C++
            二分法思想:假定f(x)在區(qū)間(x,y)上連續(xù)   
            先找到a、b屬于區(qū)間(x,y),使f(a),f(b)異號,
            說明在區(qū)間(a,b)內(nèi)一定有零點,然后求f[(a+b)/2],   
            現(xiàn)在假設(shè)f(a)<0,f(b)>0,a<b    
            ①如果f[(a+b)/2]=0,該點就是零點,   如果f[(a+b)/2]<0,則在區(qū)間((a+b)/2,b)內(nèi)有零點,(a+b)/2=>a,從①開始繼續(xù)使用   中點函數(shù)值判斷。   如果f[(a+b)/2]>0,則在區(qū)間(a,(a+b)/2)內(nèi)有零點,(a+b)/2<=b,從①開始繼續(xù)使用   中點函數(shù)值判斷。   這樣就可以不斷接近零點。   通過每次把f(x)的零點所在小區(qū)間收縮一半的方法,使區(qū)間的兩個端點逐步迫近函數(shù)的零點,以求得零點的近似值,這種方法叫做二分法。

            頭文件定義
            class CEquation
            {
            private:
             double solution;            //方程的近似解
             double a, b;                //近似解的區(qū)間
             double (*p_fx)(double x);   //p_fx是一個指向函數(shù)的指針,指向方程式求值函數(shù)
             double (*p_solution)(double x, double y); //指向由近似解區(qū)間求近似解的函數(shù)的指針
             double delta;               //求解精度
            public:
             CEquation(double av, double bv, double (*p1)(double), double (*p2)(double,double), double dv);
             double biSection();        //二分法求方程近似解
             void printSolution() const;
            };

            類的實現(xiàn)及主函數(shù)實現(xiàn):
            CEquation::CEquation(double a_val, double b_val, double (*p1)(double), double (*p2)(doubledouble), double delta_val)
            {
                a 
            = a_val;
                b 
            = b_val;
                p_fx 
            = p1;
                p_solution 
            = p2;
                solution 
            = p_solution(a, b);
                delta 
            = delta_val;
            }


            double fx(double x)  //方程為: e^x+4^x3-6^x2+3x-2=0
            {
                
            return exp(x)+4.0*x*x*x-6.0*x*x+3.0*x-2.0;
            }


            double middle(double x, double y)  //中值
            {
                
            return 0.5*(x+y);
            }


            double CEquation::biSection()
            {
            double h;

                
            while (fabs(a-b) > delta)
                
            {
                    h 
            = p_solution(a, b);
                    
            if (p_fx(a)*p_fx(h) > 0)
                        a 
            = h;
                    
            else
                        b 
            = h;
                }

                solution 
            = p_solution(a, b);
                
            return solution;
            }


            void CEquation::printSolution() const
            {
                cout 
            << "Solution is: " << solution << endl;
            }


            void main ()
            {
            CEquation a(
            0.01.0, fx, middle, 1e-6);

                a.biSection();
                a.printSolution();
            }




            久久人人爽人人爽人人片AV不| 国产精品久久国产精麻豆99网站| 久久久久99精品成人片直播| 久久久精品国产sm调教网站| 久久丝袜精品中文字幕| 久久精品成人免费国产片小草| 久久99热这里只有精品66| 久久久亚洲精品蜜桃臀| 国产精品久久久久久久久| 久久久久亚洲精品无码蜜桃| 久久国产精品偷99| 99国产欧美久久久精品蜜芽| 久久久久人妻一区精品| 少妇高潮惨叫久久久久久| 亚洲精品乱码久久久久久蜜桃图片| 久久99精品久久久久久久不卡| 99久久亚洲综合精品成人| 国产精品青草久久久久福利99| 久久综合给合久久狠狠狠97色 | 久久精品国产亚洲AV香蕉| 久久久精品国产亚洲成人满18免费网站 | 久久久中文字幕日本| AV无码久久久久不卡蜜桃| 天天躁日日躁狠狠久久| 久久五月精品中文字幕| 久久免费的精品国产V∧| 思思久久99热免费精品6| 色狠狠久久综合网| 性做久久久久久免费观看| 国产毛片欧美毛片久久久| 欧美伊人久久大香线蕉综合69| 久久99精品久久久久婷婷| 久久天天躁狠狠躁夜夜2020| 欧美激情精品久久久久久| 久久久久亚洲AV成人网人人软件 | 亚洲国产婷婷香蕉久久久久久| 国产精品久久久久久久久| 蜜桃麻豆www久久国产精品| 久久亚洲精品人成综合网| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 日韩久久久久中文字幕人妻|