Cholesky分解法,求指点一下!

MichaelZgh 发布于 2012/08/17 15:25
阅读 237
收藏 0

//-------------------------------------------------------------------
// Cholesky
分解法 ,谁能帮我讲讲这个程序,谢谢
//-------------------------------------------------------------------
template <class T>
int cholesky(Matrix<T>& mat, double epsilon=EPSILON) {
size_t i, j, k;
for (i=0; i<mat.Rows(); ++i) {
//
计算第 i 轮主元

for (k=0; k<i; ++k) mat[i][i] -= mat[k][i]*mat[k][i];
mat[i][i] = sqrt(mat[i][i]);
//
计算第 i 轮主元结束

if (fabs(mat[i][i])<epsilon) break;
//
计算第 i

// for (j=i+1; j<mat.Rows(); ++j) {
// for (k=0; k<i; ++k) mat[j][i] -= mat[j][k]*mat[i][k];
// }
//
计算第 i 列结束

//
计算第 i

for (j=i+1; j<mat.Cols(); ++j) {
for (k=0; k<i; ++k) mat[i][j] -= mat[k][i]*mat[k][j];
mat[i][j] /= mat[i][i];
}
//
计算第 i 行结束

}
return (i==mat.Rows());
}

 

函数中double epsilon=EPSILON,指的是啥?如何调用该函数!谢谢

 

加载中
0
钱钱磊
钱钱磊

大概是 函数参数默认值 , 

就是调用的时候可以不加这个参数

EPSILON  

http://technet.microsoft.com/zh-cn/library/system.double.epsilon(v=vs.90).aspx

 

返回顶部
顶部