LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
itersolve_cg.c 文件参考
itersolve_cg.c 的引用(Include)关系图:

浏览该文件的源代码.

结构体

struct  lmmc_cg_state_t

函数

lmmc_status_t lmmc_cg_solve (const lmmc_sparse_mat_t *a, const lmmc_vec_t *b, const lmmc_precond_t *precond, const lmmc_itersolve_config_t *cfg, lmmc_vec_t *x, lmmc_itersolve_result_t *out_result)
 共轭梯度法(CG)求解对称正定稀疏系统 A*x = b。

结构体说明

◆ lmmc_cg_state_t

struct lmmc_cg_state_t

在文件 itersolve_cg.c 第 3 行定义.

lmmc_cg_state_t 的协作图:
成员变量
lmmc_vec_t r
lmmc_vec_t z
lmmc_vec_t p
lmmc_vec_t ap
lmmc_real_t rho
lmmc_real_t norm
lmmc_real_t threshold

函数说明

◆ lmmc_cg_solve()

lmmc_status_t lmmc_cg_solve ( const lmmc_sparse_mat_t * a,
const lmmc_vec_t * b,
const lmmc_precond_t * precond,
const lmmc_itersolve_config_t * cfg,
lmmc_vec_t * x,
lmmc_itersolve_result_t * out_result )

共轭梯度法(CG)求解对称正定稀疏系统 A*x = b。

要求 A 对称正定。x 作为初始猜测输入,收敛后存储解。 收敛判据:||r||_2 <= abs_tol + rel_tol * ||b||_2。

参数
[in]a对称正定稀疏矩阵(不被修改)。
[in]b右端向量(不被修改)。
[in]precond预处理子,可为 NULL(无预处理)。
[in]cfg配置参数,可为 NULL(使用默认值)。
[in,out]x初始猜测 / 输出解向量。
[out]out_result迭代统计结果,可为 NULL。
返回
副作用
  • 就地修改 x->data。分配并释放 4 个长度为 n 的临时向量。

在文件 itersolve_cg.c 第 113 行定义.

引用了 lmmc_cg_state_t::ap, lmmc_cg_solve(), lmmc_itersolve_do_log(), lmmc_itersolve_finish(), lmmc_itersolve_initial(), lmmc_itersolve_validate(), lmmc_itersolve_workspace(), lmmc_memory_free(), LMMC_STATUS_OK, lmmc_cg_state_t::norm, lmmc_cg_state_t::p, lmmc_cg_state_t::r, lmmc_vec_t::size, lmmc_cg_state_t::threshold , 以及 lmmc_cg_state_t::z.

被这些函数引用 lmmc_cg_solve().

函数调用图:
这是这个函数的调用关系图: