⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chasingmethod.c.txt

📁 chasingMethod 追赶法解方程
💻 TXT
字号:
 void chasingMethod(Type** inMatrixArr,Type* bList,Type* xAnsList,int size)
  {
  
       /*Core think of this algorithm,this algorithm is just a special version 
  of the LUPationMethod:
         matrix_L*yAnsList=bList;
         matrix_U*xAnsList=yAnsList;
         */
         Type* listA,* listB,* listC;/*to crack the in matrix in three one 
  demision list*/
         Type* listAlpha,* listBeta;/*The tween list for resolve the problem*/
         Type* yAnsList;
         int i,j;
          /*pointer data assertion*/
         assertF(inMatrixArr!=NULL,"in LUPationMethod,matrixArr is NULL\n");
         assertF(bList!=NULL,"in LUPationMethod,bList is NULL\n");
         assertF(xAnsList!=NULL,"in LUPationMethod,xAnsList is NULL\n");       
            /*The Assertion of the pass in matrixs format.*/
         for(i=0;i<size;i++)
           for(j=i;j<size;j++)
            if(j-i>1)
             assertF(inMatrixArr[i][j]==0,"In chasingMethod,the pass in matrix format is                 not correct\n");
         /*Mem Apply*/             
         listArrMemApply(&listA,size);
         listArrMemApply(&listB,size);             
         listArrMemApply(&listC,size);
         listArrMemApply(&listAlpha,size);
         listArrMemApply(&listBeta,size);
         listArrMemApply(&yAnsList,size);              
         /*locate the inMatrixArr data into correct position*/
         listB[0]=inMatrixArr[0][0];
         listC[0]=inMatrixArr[0][1];
         for(i=1;i<size-1;i++)
         {
          listA[i]=inMatrixArr[i][i-1];
          listB[i]=inMatrixArr[i][i];
          listC[i]=inMatrixArr[i][i+1];
         }
          listA[size-1]=inMatrixArr[size-1][size-2];
          listB[size-1]=inMatrixArr[size-1][size-1];
           /*main program of the chasingMethod*/             
          listAlpha[0]=listB[0];
          listBeta[0]=listC[0]/listAlpha[0];
         for(i=1;i<size-1;i++)
         {
           listAlpha[i]=listB[i]-listA[i]*listBeta[i-1];
           listBeta[i]=listC[i]/listAlpha[i];
         }
         listAlpha[i]=listB[i]-listA[i]*listBeta[i-1];       
         /*To get the yAnsList*/
        yAnsList[0]=bList[0]/listAlpha[0];
        for(i=1;i<size;i++)
         yAnsList[i]=(bList[i]-listA[i]*yAnsList[i-1])/listAlpha[i];
         showArrListFloat(yAnsList,0,size);
         /*To get the xAnsList*/
         xAnsList[size-1]=yAnsList[size-1];
         for(i=size-2;i>=0;i--)
           xAnsList[i]=yAnsList[i]-listBeta[i]*xAnsList[i+1];
            /*Mem Free*/
         free(listA);
         free(listB);
         free(listC);
         free(listAlpha);
         free(listBeta);
         free(yAnsList);              
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -