|
LMMC
Lamina Mathematic core
|
#include <string.h>#include <math.h>#include "memory_bridge.h"#include "internal.h"#include "lmmc/sparse.h"#include "sparse_direct_internal.h"函数 | |
| lmmc_status_t | lmmc_sparse_chol_symbolic (const lmmc_sparse_mat_t *a, lmmc_sparse_chol_t **out_chol) |
| 稀疏 Cholesky 符号分析:去重简单图和贪心残余度重排序。 | |
| lmmc_status_t | lmmc_sparse_chol_numeric (const lmmc_sparse_mat_t *a, lmmc_sparse_chol_t *chol) |
| 使用稠密列工作区的左看稀疏 Cholesky 数值分解。 | |
| lmmc_status_t | lmmc_sparse_chol_solve (const lmmc_sparse_chol_t *chol, const lmmc_vec_t *b, lmmc_vec_t *x) |
| 使用残余度排序的 Cholesky 因子求解 A*x = b。 | |
| void | lmmc_sparse_chol_destroy (lmmc_sparse_chol_t *chol) |
| 销毁稀疏 Cholesky 上下文。 | |
| lmmc_status_t lmmc_sparse_chol_symbolic | ( | const lmmc_sparse_mat_t * | a, |
| lmmc_sparse_chol_t ** | out_chol ) |
稀疏 Cholesky 符号分析:去重简单图和贪心残余度重排序。
在文件 sparse_cholesky.c 第 39 行定义.
引用了 lmmc_sparse_mat_t::cols, lmmc_sparse_chol_t::L_nnz, lmmc_memory_alloc(), lmmc_sparse_chol_destroy(), lmmc_sparse_chol_symbolic(), lmmc_sparse_destroy(), lmmc_sparse_direct_csc(), lmmc_sparse_residual_reorder(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_chol_t::n, lmmc_sparse_mat_t::nnz, lmmc_sparse_chol_t::perm, lmmc_sparse_chol_t::perm_inv , 以及 lmmc_sparse_mat_t::rows.
被这些函数引用 lmmc_sparse_chol_symbolic().
| lmmc_status_t lmmc_sparse_chol_numeric | ( | const lmmc_sparse_mat_t * | a, |
| lmmc_sparse_chol_t * | chol ) |
使用稠密列工作区的左看稀疏 Cholesky 数值分解。
a 非正定返回 LMMC_STATUS_NOT_POSITIVE_DEFINITE 。 使用稠密列工作区执行左看 Cholesky 分解。
在文件 sparse_cholesky.c 第 193 行定义.
引用了 lmmc_sparse_mat_t::cols, lmmc_sparse_chol_t::L_col_ptr, lmmc_sparse_chol_t::L_nnz, lmmc_memory_alloc_array(), lmmc_memory_free(), lmmc_sparse_chol_numeric(), lmmc_sparse_destroy(), lmmc_sparse_direct_csc(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_chol_t::n , 以及 lmmc_sparse_mat_t::rows.
被这些函数引用 lmmc_sparse_chol_numeric().
| lmmc_status_t lmmc_sparse_chol_solve | ( | const lmmc_sparse_chol_t * | chol, |
| const lmmc_vec_t * | b, | ||
| lmmc_vec_t * | x ) |
使用残余度排序的 Cholesky 因子求解 A*x = b。
使用已分解的 Cholesky 因子求解 A*x = b。
P*A*P^T = L*L^T,其中 P 为残余度置换。
使用残余度排序的 Cholesky 因子求解 A*x = b。
应用置换:work = P * b。
还原置换:x = P^T * y。
perm[k] 为置换后位置 k 的原索引。
在文件 sparse_cholesky.c 第 327 行定义.
引用了 lmmc_vec_t::data, lmmc_memory_alloc_array(), lmmc_memory_free(), lmmc_sparse_chol_solve(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_sparse_chol_t::n, lmmc_sparse_chol_t::perm , 以及 lmmc_vec_t::size.
被这些函数引用 lmmc_sparse_chol_solve().
| void lmmc_sparse_chol_destroy | ( | lmmc_sparse_chol_t * | chol | ) |
销毁稀疏 Cholesky 上下文。
在文件 sparse_cholesky.c 第 375 行定义.
引用了 lmmc_sparse_chol_t::L_col_ptr, lmmc_sparse_chol_t::L_row_idx, lmmc_sparse_chol_t::L_values, lmmc_memory_free(), lmmc_sparse_chol_destroy(), lmmc_sparse_chol_t::perm , 以及 lmmc_sparse_chol_t::perm_inv.
被这些函数引用 lmmc_sparse_chol_destroy() , 以及 lmmc_sparse_chol_symbolic().