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

            阿基米德在洗澡時發(fā)現(xiàn)浮力原理,高興得來不及穿上褲子,跑到街上大喊:Eureka(我找到了)。
            posts - 39, comments - 26, trackbacks - 0, articles - 4
              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
            /*
            Romberg Algorithm 
            開發(fā)者:newplan
            開發(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ù)  更多評論   

            2008-09-05 17:57 by matdu
            good
            99久久综合国产精品二区| 四虎影视久久久免费观看| 丁香五月网久久综合| 色综合久久88色综合天天| 91精品国产91久久| 99久久国产亚洲综合精品| 色妞色综合久久夜夜| 久久免费视频一区| 亚洲伊人久久大香线蕉综合图片| 日本道色综合久久影院| 91麻豆国产精品91久久久| 久久99精品国产麻豆| 蜜桃麻豆www久久国产精品| 久久国产精品99国产精| 亚洲AV伊人久久青青草原| 国产精品久久久久AV福利动漫| 久久免费大片| 国内精品久久久久| 亚洲综合精品香蕉久久网| 亚洲欧美久久久久9999| 久久精品免费一区二区三区| 久久婷婷五月综合色奶水99啪 | 久久午夜综合久久| 久久er国产精品免费观看2| 久久久久久午夜精品| 久久影视国产亚洲| 国产精品99久久不卡| 国产精品一久久香蕉国产线看 | 91久久国产视频| 色欲综合久久躁天天躁蜜桃| 手机看片久久高清国产日韩| 亚洲欧美日韩精品久久| 97久久精品午夜一区二区| 无码精品久久久久久人妻中字| 香蕉久久夜色精品国产2020| 精品久久久久一区二区三区| 93精91精品国产综合久久香蕉 | 7777久久亚洲中文字幕| 久久亚洲私人国产精品vA | 精品综合久久久久久97超人| 精品永久久福利一区二区|