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 + -
显示快捷键?