|
LMMC
Lamina Mathematic core
|
结构体 | |
| struct | lmmc_quad_leaf_t |
| 叶节点保存五个采样值,每个子节点复用其中三个。 更多... | |
| struct | lmmc_quad_sum_t |
| struct | lmmc_quad_workspace_t |
函数 | |
| lmmc_status_t | lmmc_quad_adaptive (lmmc_quad_func_t func, void *user_data, lmmc_real_t a, lmmc_real_t b, lmmc_real_t abs_tol, lmmc_real_t rel_tol, size_t max_depth, lmmc_quad_result_t *out_result) |
| 自适应 Simpson 积分,使用最大误差堆控制全局误差。 | |
| struct lmmc_quad_leaf_t |
叶节点保存五个采样值,每个子节点复用其中三个。
在文件 quadrature_adaptive.c 第 5 行定义.
| 成员变量 | ||
|---|---|---|
| lmmc_real_t | x[5] | |
| lmmc_real_t | f[5] | |
| lmmc_real_t | value | |
| lmmc_real_t | error | |
| size_t | depth | |
| struct lmmc_quad_sum_t |
在文件 quadrature_adaptive.c 第 13 行定义.
| 成员变量 | ||
|---|---|---|
| lmmc_real_t | sum | |
| lmmc_real_t | correction | |
| struct lmmc_quad_workspace_t |
在文件 quadrature_adaptive.c 第 18 行定义.
| 成员变量 | ||
|---|---|---|
| lmmc_quad_func_t | func | |
| void * | user_data | |
| lmmc_quad_leaf_t * | heap | |
| size_t | size | |
| size_t | capacity | |
| size_t | num_evals | |
| size_t | max_depth | |
| lmmc_quad_sum_t | value | |
| lmmc_quad_sum_t | error | |
| lmmc_status_t lmmc_quad_adaptive | ( | lmmc_quad_func_t | func, |
| void * | user_data, | ||
| lmmc_real_t | a, | ||
| lmmc_real_t | b, | ||
| lmmc_real_t | abs_tol, | ||
| lmmc_real_t | rel_tol, | ||
| size_t | max_depth, | ||
| lmmc_quad_result_t * | out_result ) |
自适应 Simpson 积分,使用最大误差堆控制全局误差。
每次二分误差最大的可分叶区间,并复用已经求得的回调样本。 所有叶区间(包括达到深度限制的叶)的校正积分和非负误差估计 分别以补偿求和累加。仅在全局条件 \(sum\_error \le \max(abs\_tol, rel\_tol |sum\_value|)\) 满足时返回成功。误差为 Simpson 外推估计,对不光滑或欠采样函数 不保证严格误差界。 中点和区段半长度使用溢出安全公式。无法继续表示内部采样点的叶 不再细分,但仍保留在全局积分和误差中。
| [in] | func | 被积函数回调。 |
| [in] | user_data | 传递给 func 的用户上下文。 |
| [in] | a | 积分下限。 |
| [in] | b | 积分上限。 |
| [in] | abs_tol | 绝对容差(>= 0)。 |
| [in] | rel_tol | 相对容差(>= 0)。 |
| [in] | max_depth | 最大二分深度(根为 0);工作区按需增长。 |
| [out] | out_result | 包含积分值、误差估计与求值次数。 |
在文件 quadrature_adaptive.c 第 318 行定义.
引用了 lmmc_quad_workspace_t::func, lmmc_quad_workspace_t::heap, lmmc_memory_free(), lmmc_quad_adaptive(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK, LMMC_STATUS_WARNING_MAX_DEPTH, lmmc_quad_workspace_t::max_depth , 以及 lmmc_quad_workspace_t::user_data.
被这些函数引用 lmmc_quad_adaptive().