c_cpp 计算Cholesky分解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 计算Cholesky分解相关的知识,希望对你有一定的参考价值。

void calcCholesky( int nP, double * fCov, double* fCovSqrt ){

		double *C = fCovSqrt;
		double *V = fCov;

		// calculate sqrt(V) as lower diagonal matrix
		for( int i = 0; i < nP; ++i ) {
			for( int j = 0; j < nP; ++j ) {
				C[i*nP+j] = 0;
			}
		}

		for( int j = 0; j < nP; ++j ) {
			// diagonal terms first
			double Ck = 0;
			for( int k = 0; k < j; ++k ) {
				Ck += C[j*nP+k] * C[j*nP+k];
			} // k
			C[j*nP+j] = sqrt( fabs( V[j*nP+j] - Ck ) );

			// off-diagonal terms
			for( int i = j+1; i < nP; ++i ) {
				Ck = 0;
				for( int k = 0; k < j; ++k ) {
					Ck += C[i*nP+k] * C[j*nP+k];
				} //k
				if( C[ j * nP + j ] != 0 ) 
					C[ i * nP + j ] = ( V[ i * nP + j ] - Ck ) / C[ j * nP + j ];
				else 
					C[ i * nP + j ] = 0;
			}// i
		} // j
	} // calcCholesky

以上是关于c_cpp 计算Cholesky分解的主要内容,如果未能解决你的问题,请参考以下文章

使用 OpenMP 进行 Cholesky 分解

Cholesky 分解的 Matlab Mex C 实现

三十分钟理解:矩阵Cholesky分解,及其在求解线性方程组矩阵逆的应用

三十分钟理解:矩阵Cholesky分解,及其在求解线性方程组矩阵逆的应用

矩阵分解----Cholesky分解

高等工程数学 矩阵的三角分解 (LU分解,LDR分解,Cholesky分解)