LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
sparse_cholesky.c 文件参考
#include <string.h>
#include <math.h>
#include "memory_bridge.h"
#include "internal.h"
#include "lmmc/sparse.h"
#include "sparse_direct_internal.h"
sparse_cholesky.c 的引用(Include)关系图:

浏览该文件的源代码.

函数

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_sparse_chol_symbolic()

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_sparse_chol_numeric()

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_sparse_chol_solve()

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().

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

◆ lmmc_sparse_chol_destroy()

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().

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