asolve.h
来自「经典numerical receip 配套代码」· C头文件 代码 · 共 23 行
H
23 行
struct NRsparseLinbcg : Linbcg {
NRsparseMat &mat;
Int n;
NRsparseLinbcg(NRsparseMat &matrix) : mat(matrix), n(mat.nrows) {}
void atimes(VecDoub_I &x, VecDoub_O &r, const Int itrnsp) {
if (itrnsp) r=mat.atx(x);
else r=mat.ax(x);
}
void asolve(VecDoub_I &b, VecDoub_O &x, const Int itrnsp) {
Int i,j;
Doub diag;
for (i=0;i<n;i++) {
diag=0.0;
for (j=mat.col_ptr[i];j<mat.col_ptr[i+1];j++)
if (mat.row_ind[j] == i) {
diag=mat.val[j];
break;
}
x[i]=(diag != 0.0 ? b[i]/diag : b[i]);
}
}
};
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?