亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? jama_lu.h.svn-base

?? fast marching method
?? SVN-BASE
字號(hào):
#ifndef JAMA_LU_H
#define JAMA_LU_H

#include "tnt.h"

// using namespace TNT;


namespace JAMA
{

   /** LU Decomposition.
   <P>
   For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n
   unit lower triangular matrix L, an n-by-n upper triangular matrix U,
   and a permutation vector piv of length m so that A(piv,:) = L*U.
   If m < n, then L is m-by-m and U is m-by-n.
   <P>
   The LU decompostion with pivoting always exists, even if the matrix is
   singular, so the constructor will never fail.  The primary use of the
   LU decomposition is in the solution of square systems of simultaneous
   linear equations.  This will fail if isNonsingular() returns false.
   */
template <class Real>
class LU
{



   /* Array for internal storage of decomposition.  */
   Array2D<Real>  LU_;
   int m, n, pivsign; 
   Array1D<int> piv;


   Array2D<Real> permute_copy(const Array2D<Real> &A, 
   			const Array1D<int> &piv, int j0, int j1)
	{
		int piv_length = piv.dim();

		Array2D<Real> X(piv_length, j1-j0+1);


         for (int i = 0; i < piv_length; i++) 
            for (int j = j0; j <= j1; j++) 
               X[i][j-j0] = A[piv[i]][j];

		return X;
	}

   Array1D<Real> permute_copy(const Array1D<Real> &A, 
   		const Array1D<int> &piv)
	{
		int piv_length = piv.dim();
		if (piv_length != A.dim())
			return Array1D<Real>();

		Array1D<Real> x(piv_length);


         for (int i = 0; i < piv_length; i++) 
               x[i] = A[piv[i]];

		return x;
	}


	public :

   /** LU Decomposition
   @param  A   Rectangular matrix
   @return     LU Decomposition object to access L, U and piv.
   */

    LU (const Array2D<Real> &A) : LU_(A.copy()), m(A.dim1()), n(A.dim2()), 
		piv(A.dim1())
	
	{

   // Use a "left-looking", dot-product, Crout/Doolittle algorithm.

	  int i=0;
	  int j=0;
	  int k=0;

      for (i = 0; i < m; i++) {
         piv[i] = i;
      }
      pivsign = 1;
      Real *LUrowi = 0;;
      Array1D<Real> LUcolj(m);

      // Outer loop.

      for (j = 0; j < n; j++) {

         // Make a copy of the j-th column to localize references.

         for (i = 0; i < m; i++) {
            LUcolj[i] = LU_[i][j];
         }

         // Apply previous transformations.

         for (int i = 0; i < m; i++) {
            LUrowi = LU_[i];

            // Most of the time is spent in the following dot product.

			int kmax = TNT_MIN(i,j);
            double s = 0.0;
            for (k = 0; k < kmax; k++) {
               s += LUrowi[k]*LUcolj[k];
            }

            LUrowi[j] = LUcolj[i] -= s;
         }
   
         // Find pivot and exchange if necessary.

         int p = j;
         for (int i = j+1; i < m; i++) {
            if (TNT_ABS(LUcolj[i]) > TNT_ABS(LUcolj[p])) {
               p = i;
            }
         }
         if (p != j) {
            for (k = 0; k < n; k++) {
               double t = LU_[p][k]; 
			   LU_[p][k] = LU_[j][k]; 
			   LU_[j][k] = t;
            }
            k = piv[p]; 
			piv[p] = piv[j]; 
			piv[j] = k;
            pivsign = -pivsign;
         }

         // Compute multipliers.
         
         if ((j < m) && (LU_[j][j] != 0.0)) {
            for (int i = j+1; i < m; i++) {
               LU_[i][j] /= LU_[j][j];
            }
         }
      }
   }


   /** Is the matrix nonsingular?
   @return     1 (true)  if upper triangular factor U (and hence A) 
   				is nonsingular, 0 otherwise.
   */

   int isNonsingular () {
      for (int j = 0; j < n; j++) {
         if (LU_[j][j] == 0)
            return 0;
      }
      return 1;
   }

   /** Return lower triangular factor
   @return     L
   */

   Array2D<Real> getL () {
      Array2D<Real> L_(m,n);
      for (int i = 0; i < m; i++) {
         for (int j = 0; j < n; j++) {
            if (i > j) {
               L_[i][j] = LU_[i][j];
            } else if (i == j) {
               L_[i][j] = 1.0;
            } else {
               L_[i][j] = 0.0;
            }
         }
      }
      return L_;
   }

   /** Return upper triangular factor
   @return     U portion of LU factorization.
   */

   Array2D<Real> getU () {
   	  Array2D<Real> U_(n,n);
      for (int i = 0; i < n; i++) {
         for (int j = 0; j < n; j++) {
            if (i <= j) {
               U_[i][j] = LU_[i][j];
            } else {
               U_[i][j] = 0.0;
            }
         }
      }
      return U_;
   }

   /** Return pivot permutation vector
   @return     piv
   */

   Array1D<int> getPivot () {
      return piv;
   }


   /** Compute determinant using LU factors.
   @return     determinant of A, or 0 if A is not square.
   */

   Real det () {
      if (m != n) {
         return Real(0);
      }
      Real d = Real(pivsign);
      for (int j = 0; j < n; j++) {
         d *= LU_[j][j];
      }
      return d;
   }

   /** Solve A*X = B
   @param  B   A Matrix with as many rows as A and any number of columns.
   @return     X so that L*U*X = B(piv,:), if B is nonconformant, returns
   					0x0 (null) array.
   */

   Array2D<Real> solve (const Array2D<Real> &B) 
   {

	  /* Dimensions: A is mxn, X is nxk, B is mxk */
      
      if (B.dim1() != m) {
	  	return Array2D<Real>(0,0);
      }
      if (!isNonsingular()) {
        return Array2D<Real>(0,0);
      }

      // Copy right hand side with pivoting
      int nx = B.dim2();


	  Array2D<Real> X = permute_copy(B, piv, 0, nx-1);

      // Solve L*Y = B(piv,:)
      for (int k = 0; k < n; k++) {
         for (int i = k+1; i < n; i++) {
            for (int j = 0; j < nx; j++) {
               X[i][j] -= X[k][j]*LU_[i][k];
            }
         }
      }
      // Solve U*X = Y;
      for (int k = n-1; k >= 0; k--) {
         for (int j = 0; j < nx; j++) {
            X[k][j] /= LU_[k][k];
         }
         for (int i = 0; i < k; i++) {
            for (int j = 0; j < nx; j++) {
               X[i][j] -= X[k][j]*LU_[i][k];
            }
         }
      }
      return X;
   }


   /** Solve A*x = b, where x and b are vectors of length equal	
   		to the number of rows in A.

   @param  b   a vector (Array1D> of length equal to the first dimension
   						of A.
   @return x a vector (Array1D> so that L*U*x = b(piv), if B is nonconformant,
   					returns 0x0 (null) array.
   */

   Array1D<Real> solve (const Array1D<Real> &b) 
   {

	  /* Dimensions: A is mxn, X is nxk, B is mxk */
      
      if (b.dim1() != m) {
	  	return Array1D<Real>();
      }
      if (!isNonsingular()) {
        return Array1D<Real>();
      }


	  Array1D<Real> x = permute_copy(b, piv);

      // Solve L*Y = B(piv)
      for (int k = 0; k < n; k++) {
         for (int i = k+1; i < n; i++) {
               x[i] -= x[k]*LU_[i][k];
            }
         }
      
	  // Solve U*X = Y;
      for (int k = n-1; k >= 0; k--) {
            x[k] /= LU_[k][k];
      		for (int i = 0; i < k; i++) 
            	x[i] -= x[k]*LU_[i][k];
      }
     

      return x;
   }

}; /* class LU */

} /* namespace JAMA */

#endif
/* JAMA_LU_H */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线亚洲精品福利网址导航| 日韩二区在线观看| 成人国产视频在线观看| 国产精品麻豆网站| 91在线视频网址| 亚洲图片欧美色图| 精品国产欧美一区二区| 成人网在线免费视频| 亚洲黄色av一区| 91精品婷婷国产综合久久性色| 久久精品国内一区二区三区| 国产欧美日韩综合精品一区二区| eeuss鲁片一区二区三区在线观看| 一区二区三区四区在线播放| 日韩一区二区电影| 成人做爰69片免费看网站| 一区二区三区在线观看动漫| 日韩免费视频线观看| www.性欧美| 久久精品免费观看| 亚洲视频在线一区| 欧美一级黄色录像| 高清shemale亚洲人妖| 日产精品久久久久久久性色| 久久久久久久久久久久久女国产乱| 波多野洁衣一区| 日本欧美大码aⅴ在线播放| 亚洲国产精品激情在线观看| 欧美精品日韩综合在线| 国产超碰在线一区| 热久久一区二区| 国产精品成人免费在线| 日韩视频在线观看一区二区| 一本久道中文字幕精品亚洲嫩| 秋霞av亚洲一区二区三| 亚洲乱码国产乱码精品精的特点| 精品日韩99亚洲| 欧美日韩精品久久久| 成人av手机在线观看| 久久 天天综合| 亚洲不卡一区二区三区| 中文字幕人成不卡一区| 欧美电影免费提供在线观看| 在线一区二区三区四区五区| 国产成人综合在线播放| 久久精品国产亚洲一区二区三区| 一区二区三区不卡视频在线观看 | 日本高清不卡视频| 国内不卡的二区三区中文字幕| 亚洲综合一二三区| 国产精品久久久久影院色老大| 日韩欧美不卡在线观看视频| 欧美日韩三级在线| 色乱码一区二区三区88| 成人性视频网站| 国产精一区二区三区| 日韩av电影天堂| 日韩国产精品久久久久久亚洲| 一区二区三区不卡视频| 亚洲天堂成人在线观看| 国产精品免费看片| 国产欧美日韩精品一区| 日韩免费观看高清完整版在线观看| 欧美日韩国产另类不卡| 欧洲精品在线观看| 在线观看免费一区| 一本色道久久综合狠狠躁的推荐| 成人app软件下载大全免费| 国产电影一区二区三区| 国产成人午夜片在线观看高清观看| 色一情一伦一子一伦一区| 国产成人福利片| 国产精品资源在线看| 激情图片小说一区| 国产酒店精品激情| 国产精品1024| 99国产精品99久久久久久| aaa亚洲精品| 在线观看视频欧美| 欧美人与禽zozo性伦| 91精品国产综合久久国产大片| 欧美一级精品大片| 精品国产乱码久久久久久闺蜜| 久久一区二区三区国产精品| 国产日韩欧美制服另类| 亚洲欧洲无码一区二区三区| 一区二区三区国产精华| 五月综合激情网| 久久99国产精品麻豆| 国产一区二区三区四| 成人高清av在线| 91久久久免费一区二区| 在线成人av网站| 久久新电视剧免费观看| 日韩理论片一区二区| 亚洲国产一二三| 美女免费视频一区二区| 国产高清不卡一区二区| 色噜噜夜夜夜综合网| 6080yy午夜一二三区久久| 久久久不卡影院| 亚洲欧美激情一区二区| 欧美aⅴ一区二区三区视频| 国内精品第一页| 色综合久久六月婷婷中文字幕| 欧美男女性生活在线直播观看| 欧美精品一区二区在线观看| 亚洲欧美影音先锋| 奇米一区二区三区| 成人动漫在线一区| 久久精品日产第一区二区三区高清版 | 日韩精品一区二区三区四区| 国产三级久久久| 亚洲成人免费av| 国产成人精品亚洲日本在线桃色| 色婷婷亚洲精品| 精品久久久久久久久久久久包黑料 | 亚洲一区二区三区四区在线观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 不卡高清视频专区| 日韩欧美区一区二| 亚洲综合自拍偷拍| 成人性生交大合| 日韩午夜在线观看视频| 亚洲日穴在线视频| 国产乱人伦精品一区二区在线观看| 在线观看av一区二区| 久久精品一区二区三区不卡| 亚洲亚洲人成综合网络| 不卡视频免费播放| 2021国产精品久久精品| 丝袜脚交一区二区| 色香色香欲天天天影视综合网| 久久先锋影音av| 日韩极品在线观看| 欧美伊人久久大香线蕉综合69| 久久久精品国产99久久精品芒果| 日韩中文字幕1| 欧美色欧美亚洲另类二区| 国产精品亲子伦对白| 国产毛片一区二区| 精品美女一区二区三区| 日韩国产欧美在线观看| 欧美体内she精视频| 亚洲人成网站在线| a美女胸又www黄视频久久| 久久精品在这里| 国产一区二区精品久久99 | 欧美大片顶级少妇| 国产福利一区二区三区视频在线| 在线91免费看| 石原莉奈一区二区三区在线观看| 91精品91久久久中77777| 国产精品美女久久久久久2018 | 五月婷婷激情综合| 日本乱码高清不卡字幕| 国产精品久久久久9999吃药| 国产成人av影院| 日本一区二区三区国色天香 | 免费欧美在线视频| 91麻豆精品国产91久久久久久| 亚洲制服丝袜av| 欧美日韩日本视频| 午夜精品成人在线| 欧美日本在线观看| 日本sm残虐另类| 日韩精品在线看片z| 久久不见久久见免费视频1| 日韩欧美一区在线观看| 韩国v欧美v亚洲v日本v| 久久午夜国产精品| 成人美女在线观看| 亚洲欧美激情一区二区| 欧美性大战xxxxx久久久| 亚洲已满18点击进入久久| 欧美另类变人与禽xxxxx| 另类成人小视频在线| 久久夜色精品一区| www.亚洲在线| 亚洲福利一二三区| 日韩一区二区三区精品视频 | 1024成人网色www| 在线观看国产日韩| 三级不卡在线观看| 2014亚洲片线观看视频免费| 成人av在线资源网| 亚洲国产欧美在线| 正在播放一区二区| 国产91综合网| 亚洲五码中文字幕| 久久综合色婷婷| 白白色 亚洲乱淫| 亚洲va国产天堂va久久en| 欧美成人女星排名| www.av亚洲| 日韩专区欧美专区| 国产精品色呦呦| 欧美日韩黄视频| 高清成人在线观看| 亚洲va在线va天堂|