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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? jama_lu.h

?? 在MATLAB環境下的level set方法的實現
?? H
字號:
#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 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品资源在线看| 一区二区不卡在线播放| 日韩精品在线网站| 国产三级久久久| 国产精品传媒视频| 亚洲国产视频a| 国产精品一二三区在线| 99视频超级精品| 欧美一卡二卡三卡| 久久久天堂av| 欧美激情在线观看视频免费| 亚洲第一搞黄网站| 日本不卡视频在线| 国产精品综合一区二区| 成人高清在线视频| 精品欧美一区二区三区精品久久| 中文一区一区三区高中清不卡| 亚洲精品网站在线观看| 国产一区二区在线视频| 欧美丝袜自拍制服另类| 精品国产一区二区亚洲人成毛片| 中文字幕av一区二区三区| 久久精品国产在热久久| 欧美网站一区二区| 国产精品第一页第二页第三页| 蜜桃久久av一区| 欧美日韩一级二级| 中文字幕制服丝袜一区二区三区 | 丝袜美腿亚洲一区| 91在线porny国产在线看| 日韩一区二区三区在线观看| 偷拍日韩校园综合在线| 欧美日韩在线播| 青青草伊人久久| 日韩一区二区三区三四区视频在线观看| 亚洲国产成人私人影院tom| 日本免费在线视频不卡一不卡二| 欧美日免费三级在线| 亚洲愉拍自拍另类高清精品| 欧美日韩精品欧美日韩精品一| 一区二区三区欧美日韩| 欧美日韩在线一区二区| 无吗不卡中文字幕| 精品国产一区二区精华| 成人av先锋影音| 国产精品不卡一区二区三区| 日本韩国欧美国产| 日本aⅴ免费视频一区二区三区| 在线播放日韩导航| 国产成人综合视频| 亚洲成人福利片| 日韩精品中文字幕一区二区三区 | 欧美三级一区二区| 日韩国产欧美在线播放| 国产亚洲一二三区| 色婷婷狠狠综合| 久久99久国产精品黄毛片色诱| 欧美tk丨vk视频| 色94色欧美sute亚洲13| 免费高清不卡av| 亚洲美女电影在线| 久久久777精品电影网影网| 欧美群妇大交群的观看方式| 国产成人日日夜夜| 婷婷综合在线观看| 日韩美女视频一区| 久久嫩草精品久久久精品| 欧美综合亚洲图片综合区| 国产精品一区免费在线观看| 亚洲一区影音先锋| 亚洲午夜在线电影| 亚洲精品水蜜桃| 亚洲精品高清在线| 国产精品免费久久久久| 久久精品日产第一区二区三区高清版| 欧美久久一二区| 欧美精品tushy高清| 91久久精品午夜一区二区| 成人免费视频免费观看| 国产v日产∨综合v精品视频| 久久99日本精品| 精品在线播放免费| 精品亚洲porn| 成人午夜激情片| 成人国产精品免费观看动漫| 不卡av免费在线观看| 色综合中文字幕| 91精品黄色片免费大全| 日韩免费视频一区| 国产欧美精品一区二区色综合朱莉| 欧美v日韩v国产v| 成人少妇影院yyyy| 国产99久久久久久免费看农村| 亚洲va欧美va人人爽| 日韩国产成人精品| 国内精品伊人久久久久av影院 | 中文字幕va一区二区三区| 国产精品久久三| 午夜天堂影视香蕉久久| 国产在线播放一区三区四| 成人av在线资源网站| 欧美精品 国产精品| 国产三级精品三级在线专区| 亚洲影视在线播放| 国产电影精品久久禁18| 欧洲中文字幕精品| 欧美国产日韩在线观看| 首页综合国产亚洲丝袜| 粉嫩嫩av羞羞动漫久久久| 欧美日韩国产123区| 中文字幕在线免费不卡| 麻豆国产精品官网| 欧美日韩亚洲综合在线 | 欧美一区日韩一区| 国产精品国产三级国产aⅴ原创 | 亚洲人妖av一区二区| 国产高清在线精品| 日韩精品一区二区三区中文不卡| 国产精品伦一区| 国模冰冰炮一区二区| 在线不卡a资源高清| 亚洲第一电影网| 精品视频在线视频| 污片在线观看一区二区| 69堂精品视频| 精品一区二区三区影院在线午夜| 69堂成人精品免费视频| 日韩黄色免费电影| 久久久高清一区二区三区| 久久久精品国产99久久精品芒果 | 91欧美一区二区| 亚洲手机成人高清视频| 色综合天天狠狠| 夜夜嗨av一区二区三区| 欧美日韩日本视频| 看片网站欧美日韩| 日本一二三不卡| av日韩在线网站| 亚洲永久免费av| 2021国产精品久久精品| 成人性视频免费网站| 亚洲欧美日韩国产手机在线| 欧美日韩高清一区二区三区| 男男gaygay亚洲| 国产精品久久久久久久浪潮网站| 欧美三片在线视频观看| 国产jizzjizz一区二区| 一区二区三区国产| 日韩一区二区免费在线电影| 高清国产一区二区三区| 日本不卡视频在线| 亚洲男人的天堂av| 国产日韩欧美精品电影三级在线 | 亚洲五月六月丁香激情| 久久久综合九色合综国产精品| 色综合久久综合| 99国产精品视频免费观看| 成人视屏免费看| 国产真实乱偷精品视频免| 五月天亚洲婷婷| 日韩一区在线播放| 亚洲欧洲日产国产综合网| 精品1区2区在线观看| 欧美一级一级性生活免费录像| 91国偷自产一区二区三区观看| 激情图区综合网| 韩国一区二区三区| 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产亚洲va综合人人澡精品 | 午夜视频久久久久久| 一区二区三区在线观看网站| 中文字幕色av一区二区三区| 国产亚洲一区字幕| 国产偷国产偷精品高清尤物 | 国产成人av福利| 成人性生交大片免费看在线播放| 韩国成人福利片在线播放| 韩国一区二区三区| 懂色av中文字幕一区二区三区 | 亚洲免费视频成人| 午夜欧美视频在线观看| 日韩激情av在线| 国产美女娇喘av呻吟久久| 成人精品视频一区二区三区| 91老师国产黑色丝袜在线| 欧美特级限制片免费在线观看| 6080日韩午夜伦伦午夜伦| www久久精品| 一区二区三区中文免费| 蜜乳av一区二区| 91蝌蚪国产九色| 欧美一区二区三区免费大片| 久久久久综合网| 亚洲一卡二卡三卡四卡五卡| 国产酒店精品激情| 欧美色图天堂网| 中文字幕亚洲电影| 麻豆精品久久精品色综合| eeuss鲁片一区二区三区在线看| 91精品久久久久久久久99蜜臂|