Cholesky分解法,求指点一下!
//-------------------------------------------------------------------
// 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,指的是啥?如何调用该函数!谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
大概是 函数参数默认值 ,
就是调用的时候可以不加这个参数
EPSILON
http://technet.microsoft.com/zh-cn/library/system.double.epsilon(v=vs.90).aspx