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

浏览该文件的源代码.

结构体

struct  lmmc_quad_romberg_state_t

函数

lmmc_status_t lmmc_quad_romberg (lmmc_quad_func_t f, void *ud, lmmc_real_t a, lmmc_real_t b, lmmc_real_t abs_tol, size_t max_iter, lmmc_quad_result_t *out)
 Romberg 积分(Richardson 外推加速梯形法则)。

结构体说明

◆ lmmc_quad_romberg_state_t

struct lmmc_quad_romberg_state_t

在文件 quadrature_extrapolation.c 第 3 行定义.

lmmc_quad_romberg_state_t 的协作图:
成员变量
lmmc_quad_func_t func
void * user_data
lmmc_real_t center
lmmc_real_t half_length
lmmc_real_t prev[30]
lmmc_real_t curr[30]
lmmc_quad_result_t * out

函数说明

◆ lmmc_quad_romberg()

lmmc_status_t lmmc_quad_romberg ( lmmc_quad_func_t f,
void * ud,
lmmc_real_t a,
lmmc_real_t b,
lmmc_real_t abs_tol,
size_t max_iter,
lmmc_quad_result_t * out )

Romberg 积分(Richardson 外推加速梯形法则)。

通过逐次加密梯形法则并进行 Richardson 外推,快速提升收敛阶。 外推使用增量形式,避免先将有限梯形估计乘以 \(4^j\); 采样点在 [-1,1] 生成后通过溢出安全的中心和半长度映射到 [a,b], 不直接形成可能溢出的 b-a。对光滑被积函数效率极高。

参数
[in]f被积函数回调。
[in]ud用户数据指针,传递给 f 。
[in]a积分下限。
[in]b积分上限。
[in]abs_tol绝对容差,范围 [1e-15, 1e-1]。
[in]max_iter最大迭代次数(Romberg 表行数),范围 [1, 30]。
[out]out积分结果(值、误差估计、求值次数)。
返回
LMMC_STATUS_OK 在容差内收敛; LMMC_STATUS_CONVERGENCE_FAILED 达到最大迭代次数; LMMC_STATUS_NUMERICAL_FAILURE 回调或中间结果为非有限值; LMMC_STATUS_INVALID_ARGUMENT 若参数超出有效范围或指针为 NULL。
副作用
  • 回调 f 被调用次数记录在 out->num_evals 中,最多为 \(2^{max\_iter-1}+1\) 次。
  • 不分配堆内存。

在文件 quadrature_extrapolation.c 第 92 行定义.

引用了 lmmc_quad_romberg_state_t::curr, lmmc_quad_result_t::error, lmmc_quad_romberg_state_t::func, lmmc_quad_romberg(), LMMC_STATUS_CONVERGENCE_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK, lmmc_quad_result_t::num_evals, lmmc_quad_romberg_state_t::out, lmmc_quad_romberg_state_t::prev, lmmc_quad_romberg_state_t::user_data , 以及 lmmc_quad_result_t::value.

被这些函数引用 lmmc_quad_romberg().

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