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

浏览该文件的源代码.

结构体

struct  lmmc_minres_state_t

函数

lmmc_status_t lmmc_minres_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)
 MINRES 求解对称(可能不定)稀疏系统 A x = b 。

结构体说明

◆ lmmc_minres_state_t

struct lmmc_minres_state_t

在文件 itersolve_minres.c 第 4 行定义.

lmmc_minres_state_t 的协作图:
成员变量
lmmc_vec_t r_prev
lmmc_vec_t r_curr
lmmc_vec_t y
lmmc_vec_t v
lmmc_vec_t lanczos_tmp
lmmc_vec_t w_prev2
lmmc_vec_t w_prev
lmmc_vec_t w_next
lmmc_vec_t true_r
double beta
double old_beta
double beta_next
double alpha
double dbar
double epsln
double cs
double sn
double phibar
double norm_r
double threshold

函数说明

◆ lmmc_minres_solve()

lmmc_status_t lmmc_minres_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 )

MINRES 求解对称(可能不定)稀疏系统 A x = b 。

当 cfg->apply_op 非 NULL 时使用 matrix-free 模式(此时 a 必须为 NULL)。 若同时提供 a 和 cfg->apply_op ,返回 LMMC_STATUS_INVALID_ARGUMENT 。

precond 表示求解 M*z=r;仅接受 NULL / NONE 或有限严格正的 Jacobi。 ILU0 / ILUT 返回 INVALID_ARGUMENT,非正 Jacobi 返回 NOT_POSITIVE_DEFINITE, 非有限内部数据返回 NUMERICAL_FAILURE,尺寸不符返回 DIMENSION_MISMATCH。

初始及每次完成 x 更新后计算真实残差 r=b-A*x,仅在 ||r||_2 <= abs_tol + rel_tol * ||b||_2 时标记收敛。统计和诊断报告真实范数, num_iter 计完成的解更新次数;达到 max_iter 或基空间耗尽仍返回 OK, converged 为零。错误保留最近成功计算的残差统计,算子错误原样传播。 每步额外执行一次前向算子以检查真实残差。一次分配九个长度 n 的工作向量, 迭代中不分配;restart 被忽略。

在文件 itersolve_minres.c 第 215 行定义.

引用了 lmmc_minres_state_t::lanczos_tmp, lmmc_itersolve_do_log(), lmmc_itersolve_finish(), lmmc_itersolve_initial(), lmmc_itersolve_result_init(), lmmc_itersolve_workspace(), lmmc_memory_free(), lmmc_minres_solve(), LMMC_STATUS_OK, lmmc_minres_state_t::norm_r, lmmc_minres_state_t::r_curr, lmmc_minres_state_t::r_prev, lmmc_vec_t::size, lmmc_minres_state_t::threshold, lmmc_minres_state_t::true_r, lmmc_minres_state_t::v, lmmc_minres_state_t::w_next, lmmc_minres_state_t::w_prev, lmmc_minres_state_t::w_prev2 , 以及 lmmc_minres_state_t::y.

被这些函数引用 lmmc_minres_solve().

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