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

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

?? jama_cholesky.h

?? fast marching method
?? H
字號:
#ifndef JAMA_CHOLESKY_H
#define JAMA_CHOLESKY_H

#include "math.h"
	/* needed for sqrt() below. */


namespace JAMA
{

using TNT::Array2D;
using TNT::Array1D;

/** 
   <P>
   For a symmetric, positive definite matrix A, this function
   computes the Cholesky factorization, i.e. it computes a lower 
   triangular matrix L such that A = L*L'.
   If the matrix is not symmetric or positive definite, the function
   computes only a partial decomposition.  This can be tested with
   the is_spd() flag.

   <p>Typical usage looks like:
   <pre>
	Array2D<double> A(n,n);
	Array2D<double> L;

	 ... 

	Cholesky<double> chol(A);

	if (chol.is_spd())
		L = chol.getL();
		
  	else
		cout << "factorization was not complete.\n";

	</pre>


   <p>
	(Adapted from JAMA, a Java Matrix Library, developed by jointly 
	by the Mathworks and NIST; see  http://math.nist.gov/javanumerics/jama).

   */

template <class Real>
class Cholesky
{
	Array2D<Real> L_;		// lower triangular factor
	int isspd;				// 1 if matrix to be factored was SPD

public:

	Cholesky();
	Cholesky(const Array2D<Real> &A);
	Array2D<Real> getL() const;
	Array1D<Real> solve(const Array1D<Real> &B);
	Array2D<Real> solve(const Array2D<Real> &B);
	int is_spd() const;

};

template <class Real>
Cholesky<Real>::Cholesky() : L_(0,0), isspd(0) {}

/**
	@return 1, if original matrix to be factored was symmetric 
		positive-definite (SPD).
*/
template <class Real>
int Cholesky<Real>::is_spd() const
{
	return isspd;
}

/**
	@return the lower triangular factor, L, such that L*L'=A.
*/
template <class Real>
Array2D<Real> Cholesky<Real>::getL() const
{
	return L_;
}

/**
	Constructs a lower triangular matrix L, such that L*L'= A.
	If A is not symmetric positive-definite (SPD), only a
	partial factorization is performed.  If is_spd()
	evalutate true (1) then the factorizaiton was successful.
*/
template <class Real>
Cholesky<Real>::Cholesky(const Array2D<Real> &A)
{


   	int m = A.dim1();
	int n = A.dim2();
	
	isspd = (m == n);

	if (m != n)
	{
		L_ = Array2D<Real>(0,0);
		return;
	}

	L_ = Array2D<Real>(n,n);


      // Main loop.
     for (int j = 0; j < n; j++) 
	 {
        double d = 0.0;
        for (int k = 0; k < j; k++) 
		{
            Real s = 0.0;
            for (int i = 0; i < k; i++) 
			{
               s += L_[k][i]*L_[j][i];
            }
            L_[j][k] = s = (A[j][k] - s)/L_[k][k];
            d = d + s*s;
            isspd = isspd && (A[k][j] == A[j][k]); 
         }
         d = A[j][j] - d;
         isspd = isspd && (d > 0.0);
         L_[j][j] = sqrt(d > 0.0 ? d : 0.0);
         for (int k = j+1; k < n; k++) 
		 {
            L_[j][k] = 0.0;
         }
	}
}

/**

	Solve a linear system A*x = b, using the previously computed
	cholesky factorization of A: L*L'.

   @param  B   A Matrix with as many rows as A and any number of columns.
   @return     x so that L*L'*x = b.  If b is nonconformat, or if A
   				was not symmetric posidtive definite, a null (0x0)
   						array is returned.
*/
template <class Real>
Array1D<Real> Cholesky<Real>::solve(const Array1D<Real> &b)
{
	int n = L_.dim1();
	if (b.dim1() != n)
		return Array1D<Real>();


	Array1D<Real> x = b.copy();


      // Solve L*y = b;
      for (int k = 0; k < n; k++) 
	  {
         for (int i = 0; i < k; i++) 
               x[k] -= x[i]*L_[k][i];
		 x[k] /= L_[k][k];
		
      }

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

	return x;
}


/**

	Solve a linear system A*X = B, using the previously computed
	cholesky factorization of A: L*L'.

   @param  B   A Matrix with as many rows as A and any number of columns.
   @return     X so that L*L'*X = B.  If B is nonconformat, or if A
   				was not symmetric posidtive definite, a null (0x0)
   						array is returned.
*/
template <class Real>
Array2D<Real> Cholesky<Real>::solve(const Array2D<Real> &B)
{
	int n = L_.dim1();
	if (B.dim1() != n)
		return Array2D<Real>();


	Array2D<Real> X = B.copy();
	int nx = B.dim2();

// Cleve's original code
#if 0
      // Solve L*Y = B;
      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]*L_[k][i];
            }
         }
         for (int j = 0; j < nx; j++) {
            X[k][j] /= L_[k][k];
         }
      }

      // Solve L'*X = Y;
      for (int k = n-1; k >= 0; k--) {
         for (int j = 0; j < nx; j++) {
            X[k][j] /= L_[k][k];
         }
         for (int i = 0; i < k; i++) {
            for (int j = 0; j < nx; j++) {
               X[i][j] -= X[k][j]*L_[k][i];
            }
         }
      }
#endif


      // Solve L*y = b;
  	  for (int j=0; j< nx; j++)
	  {
      	for (int k = 0; k < n; k++) 
		{
			for (int i = 0; i < k; i++) 
               X[k][j] -= X[i][j]*L_[k][i];
		    X[k][j] /= L_[k][k];
		 }
      }

      // Solve L'*X = Y;
     for (int j=0; j<nx; j++)
	 {
      	for (int k = n-1; k >= 0; k--) 
	  	{
         	for (int i = k+1; i < n; i++) 
               X[k][j] -= X[i][j]*L_[i][k];
         	X[k][j] /= L_[k][k];
		}
      }



	return X;
}


}
// namespace JAMA

#endif
// JAMA_CHOLESKY_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品在线视频观看| 欧美一二三区在线| 欧美剧情电影在线观看完整版免费励志电影 | 欧美午夜精品久久久| 久久婷婷久久一区二区三区| 一区二区在线免费观看| 国产黄色精品网站| 91精品国产综合久久国产大片| 中文字幕日韩一区二区| 欧美激情在线观看视频免费| 欧美日本在线一区| 1000精品久久久久久久久| 狠狠网亚洲精品| 91精品国产色综合久久不卡蜜臀| 国产精品久久国产精麻豆99网站| 国产在线国偷精品产拍免费yy| 欧美日韩国产欧美日美国产精品| 一区二区三区自拍| 91丨九色porny丨蝌蚪| 国产精品久久久久影院老司| 经典一区二区三区| 日韩精品一区在线| 久久综合综合久久综合| 制服丝袜中文字幕一区| 亚洲午夜视频在线| 欧美羞羞免费网站| 亚洲综合久久久| 91小视频免费观看| 亚洲欧美日本韩国| 在线观看不卡一区| 天天综合日日夜夜精品| 欧美日韩精品一区二区三区蜜桃| 亚洲愉拍自拍另类高清精品| 91理论电影在线观看| 亚洲欧美日韩电影| 欧美日韩在线精品一区二区三区激情| 亚洲精品国产视频| 欧美三级蜜桃2在线观看| 午夜电影一区二区三区| 欧美老女人在线| 精一区二区三区| 国产三级欧美三级日产三级99| 国产成人福利片| 亚洲国产高清不卡| 在线视频国内自拍亚洲视频| 洋洋av久久久久久久一区| 欧美人成免费网站| 久久www免费人成看片高清| 久久久久久久久99精品| 不卡电影一区二区三区| 夜夜操天天操亚洲| 日韩一级二级三级精品视频| 国产一区二区中文字幕| 中文字幕亚洲精品在线观看| 在线看一区二区| 九色综合国产一区二区三区| 久久精品男人的天堂| 色婷婷亚洲综合| 日韩专区欧美专区| 日本一区二区三区四区| 色老综合老女人久久久| 午夜av一区二区| 久久久777精品电影网影网| 91在线免费看| 蜜桃视频第一区免费观看| 欧美激情一区二区三区不卡| 欧美亚洲综合在线| 国产成人在线网站| 亚洲r级在线视频| 国产视频在线观看一区二区三区| 色婷婷综合激情| 国产一区二区免费看| 一区二区三区免费网站| 久久女同互慰一区二区三区| 91小视频在线免费看| 精品综合免费视频观看| 夜色激情一区二区| 亚洲国产经典视频| 欧美一区二区三区小说| 91视频观看视频| 国内精品自线一区二区三区视频| 一区二区三区在线高清| 久久综合999| 欧美一区二区在线看| 91亚洲男人天堂| 久久国产精品第一页| 亚洲二区在线观看| 国产日韩精品久久久| 欧美久久一二三四区| 91一区二区在线| 国产精品1区二区.| 青青草97国产精品免费观看无弹窗版| 亚洲日本va午夜在线影院| 久久综合久久99| 欧美日本乱大交xxxxx| 欧美专区日韩专区| 国产精品系列在线播放| 美腿丝袜在线亚洲一区| 五月婷婷综合激情| 一区二区三区中文免费| 中文字幕一区二区三区四区| 中文字幕第一区第二区| 久久九九99视频| 精品福利av导航| 欧美videos中文字幕| 日韩一本二本av| 久久久另类综合| 91麻豆精品国产综合久久久久久| 色噜噜狠狠一区二区三区果冻| 97久久精品人人做人人爽50路| 国产精品一区二区91| 国产精品亚洲专一区二区三区| 日韩电影在线看| 日韩综合一区二区| 日韩av电影一区| 久久不见久久见免费视频7| 老色鬼精品视频在线观看播放| 捆绑调教一区二区三区| 美女视频网站黄色亚洲| 蜜桃视频在线观看一区二区| 久久疯狂做爰流白浆xx| 免费看欧美女人艹b| 国模无码大尺度一区二区三区| 韩国女主播一区| 成人丝袜高跟foot| 91在线观看免费视频| 色狠狠桃花综合| 欧美日韩一区在线观看| 91精品国产综合久久福利 | 一区二区三区小说| 一区二区三区四区高清精品免费观看 | 成人午夜电影小说| 99久久国产综合精品麻豆| 欧美在线看片a免费观看| 欧美精品免费视频| 久久久亚洲精品一区二区三区| 久久久国产精品麻豆| 国产精品二三区| 亚洲女子a中天字幕| 喷白浆一区二区| 成人性视频免费网站| 一本色道亚洲精品aⅴ| 91麻豆精品国产91久久久久久 | 欧美午夜电影一区| 欧美亚洲一区三区| 日韩一级大片在线| 国产精品久久久一本精品| 亚洲1区2区3区视频| 国产一区美女在线| 日本高清成人免费播放| 欧美日韩精品一区二区三区蜜桃| 精品国产123| 夜夜操天天操亚洲| 高清成人在线观看| 欧美日韩色一区| 国产精品电影院| 麻豆精品新av中文字幕| 99久久精品国产导航| 欧美一级精品在线| 亚洲欧美日韩久久精品| 六月丁香综合在线视频| 在线观看91精品国产入口| 久久网这里都是精品| 午夜一区二区三区视频| 成人a级免费电影| 欧美电影免费观看高清完整版| 中文字幕一区二区三区不卡 | 欧美主播一区二区三区| 国产精品三级久久久久三级| 亚洲成人黄色影院| 91老司机福利 在线| 久久免费偷拍视频| 日本v片在线高清不卡在线观看| 91麻豆福利精品推荐| 久久久久久久久一| 美女视频黄久久| 9191精品国产综合久久久久久| 亚洲色图在线看| 不卡av在线免费观看| 国产日韩成人精品| 国产成人免费网站| 欧美一级黄色片| 美日韩黄色大片| 在线不卡一区二区| 偷偷要91色婷婷| 欧美男男青年gay1069videost | 欧美日韩精品一区二区三区蜜桃| 国产精品不卡视频| 国产乱码精品一区二区三区av | 丁香五精品蜜臀久久久久99网站| 欧美sm极限捆绑bd| 日本欧美在线看| 日韩欧美国产一二三区| 日本欧美韩国一区三区| 欧美精品乱码久久久久久| 亚洲午夜激情av| 欧美日韩国产首页在线观看| 亚洲一二三区在线观看| 欧美丝袜自拍制服另类| 久草这里只有精品视频|