• <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>

            newplan

            阿基米德在洗澡時(shí)發(fā)現(xiàn)浮力原理,高興得來(lái)不及穿上褲子,跑到街上大喊:Eureka(我找到了)。
            posts - 39, comments - 26, trackbacks - 0, articles - 4
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
            /*
            Romberg Algorithm 
            開(kāi)發(fā)者:newplan
            開(kāi)發(fā)日期:
            08.05.07 
            */


            /*=======================================*/
            /*INCLUDES*/ 
            #include           
            <cstdlib>
            #include           
            <iostream>
            #include           
            <cmath>
            /*=======================================*/
            /*MACROS  USED IN THIS FILE*/
            #define            MAX       
            20   
            #define            PRECISION 
            0.000008
            /*=======================================*/
            /*DECLARE NAMES IN STL NAMESAPCE */
            using  std::cout;
            using  std::endl;

            /*=======================================*/
            /*CLASS FUNC (FUNCTION OBJECT): THE ORIGINAL FUNCTION WE WANT TO INTEGRAL*/
            class  func{
                   
            public:
                          func(
            double x=1.0):exp(x){}
                          
            double operator()(const double& dnum)const{return pow(dnum,exp);}
                   
            private:
                          
            double exp;
                   };
            /*=======================================*/
            /*CLASS ECHELONFUNC (FUNCTION OBJECT)梯形法的遞推公式*/
            class  echelonFunc{
                   
            public:
                          echelonFunc(
            double begining,double ending,func & myfunc);
                          
            double operator()();
                   
            private:
                           
            double    h;
                           
            int       n;
                           
            double    T;
                           func      myfunc;
                           
            double    begining;
                           
            double    ending ;
                 };
            /*=======================================*/
            echelonFunc::echelonFunc(
            double begining,double ending,func & myfunc)
                          {
                           this
            ->begining=begining;
                           this
            ->ending=ending;
                           this
            ->h=ending-begining;
                           this
            ->n=0;
                           this
            ->T=0;
                           this
            ->myfunc=myfunc;//FUCNTION 
                          }
            /*------------------------------*/
            /* INCREASE FUNCTION 遞推函數(shù)*/
            double echelonFunc::operator()()
                          {   
            if(this->n==0)
                              {
                               this
            ->T=h*0.5*(myfunc(this->begining)+myfunc(this->ending));
                               this
            ->n=1;
                               return this
            ->T;
                              }
                              
            double len=0.5*h;
                              
            double sum=0;
                              
            int k=0;
                              
            for(k=0;k<this->n;k++)
                                  {
                                   sum
            +=myfunc(len);
                                   
            len=len+h;
                                  }
                              this
            ->T=0.5*this->T+0.5*h*sum;
                              this
            ->h/=2;
                              this
            ->n*=2;
                              return this
            ->T;
                          }
            /*=======================================*/
            /*THE MAIN CLASS IN THIS PROGRAM*/ 
            class  Romberg{
                   
            public:
                          Romberg(
            double begining,double ending,double exp);
                          ~Romberg();
                   
            private:
                          void RombergCPU();
            /*THE MOST IMPORTANT FUNCTION IN THIS PROGRAM*/
                          echelonFunc 
            *echol; 
                          
            double T[MAX][MAX];/*STO THE ROMBERG TABLE*/       
                   };
            /*------------------------------*/
            Romberg::Romberg(
            double begining ,double ending ,double paraexp)
            {
                func     myfunc(paraexp);
                echol 
            =  new echelonFunc(begining,ending,myfunc);
                RombergCPU();
            }
            /*------------------------------*/
            Romberg::~Romberg()
            {
                 delete echol;
            }
            /*------------------------------*/
            void Romberg::RombergCPU()
            {   clock_t Start; 
            //TIME STARAT
                clock_t 
            End;   //TIME END
                
            double *p[MAX];//WE USE THIS POINTER ARRAY TO ACCELERATE ALGOTITHM
                
            double **q;
                
            int i,j;
                Start 
            = clock();//TIME START FROM HERE
                
            for(i = 0,q = p; q < p+MAX; q++,i++)
                    
            *q= &T[i][0];
                
            double a,b,pows; 
                cout
            <<"-----------------------Romberg Algorithm---------------------"<<endl;
                
            *p[0]=(*echol)();
                cout
            <<"  "<<*p[0]<<endl;
                p[
            0]++;
                
            do{
                   
            *p[0]=(*echol)();
                    cout
            <<"  "<<*p[0];
                    p[
            0]++;
                    
            for(i=1;;i++)
                              {
                                pows
            =pow(4.0,double(i));
                                a
            =pows/(pows-1);
                                b
            =1/(pows-1);
                                
            *p[i]=a*(*(p[i-1]-1))-b*(*(p[i-1]-2));//ROMBERG ALGORITHM
                                cout
            <<"  "<<*p[i];
                                
            if(p[i]==&T[i][0])
                                  {
                                  p[i]
            ++
                                  break;
                                  } 
                                 p[i]
            ++;
                               }
                               cout
            <<endl;//fabs(T[i][0]-T[i-1][0])
                   }
            while(fabs(T[i][0]-T[i-1][0])>PRECISION);
                
                
            End = clock();//TIME END HERE
                
                cout
            <<"-------------------------------------------------------------"<<
                endl
            <<"  TIME SPEND:"<<(double)(End-Start)/CLOCKS_PER_SEC<<endl; 

            /*=======================================*/
            /*MAIN FUNCTION*/
            int main(int argc, char *argv[])
            {  
               Romberg  romberg(
            0,1,1.5);//ROMBERG API :BEGIN(0END(1EXP(1.5)
               system(
            "PAUSE");
               return EXIT_SUCCESS;
            }

            Feedback

            # re: 龍貝格Romberg算法cpp實(shí)現(xiàn)  回復(fù)  更多評(píng)論   

            2008-09-05 17:57 by matdu
            good
            久久99国产精品久久99小说| 91精品国产高清久久久久久国产嫩草| 国产成人精品久久综合| 精品国产综合区久久久久久 | 中文精品99久久国产 | 久久国产精品77777| 一本色道久久88加勒比—综合| 国内精品久久久久久麻豆| 国产精品久久久久久五月尺| 99久久超碰中文字幕伊人| 四虎影视久久久免费| 精品综合久久久久久97超人| 伊人久久大香线蕉精品不卡| .精品久久久麻豆国产精品| 日日狠狠久久偷偷色综合免费 | 久久亚洲中文字幕精品一区| 少妇内射兰兰久久| 综合久久一区二区三区| 秋霞久久国产精品电影院| 久久婷婷人人澡人人爽人人爱| 99久久精品国产麻豆| 中文字幕乱码人妻无码久久| 色天使久久综合网天天| 精品综合久久久久久97超人| 亚洲精品乱码久久久久66| 久久久这里有精品| 亚洲AⅤ优女AV综合久久久| 久久AⅤ人妻少妇嫩草影院| 亚洲成色999久久网站| 久久精品国产亚洲沈樵| 久久99国产综合精品免费| 亚洲综合熟女久久久30p| 思思久久精品在热线热| 日日狠狠久久偷偷色综合免费| 久久99精品久久久久久噜噜| 伊人久久精品线影院| 国产成人无码精品久久久免费| 亚洲国产成人久久精品动漫| a级毛片无码兔费真人久久| 久久久久九国产精品| 亚洲国产精品无码久久青草|