|
LMMC
Lamina Mathematic core
|
#include "itersolve_internal.h"结构体 | |
| 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。 | |
| struct lmmc_cg_state_t |
在文件 itersolve_cg.c 第 3 行定义.
| 成员变量 | ||
|---|---|---|
| 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_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。 |
在文件 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().