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

浏览该文件的源代码.

结构体

struct  lmmc_quad_tanh_sinh_state_t
 双指数映射:x(t) = center + half_length*tanh(pi/2*sinh(t))。 更多...

函数

lmmc_status_t lmmc_quad_tanh_sinh (lmmc_quad_func_t f, void *ud, lmmc_real_t a, lmmc_real_t b, lmmc_real_t abs_tol, size_t max_nodes, lmmc_quad_result_t *out)
 Tanh-Sinh(双指数)积分,适用于端点奇异性。

结构体说明

◆ lmmc_quad_tanh_sinh_state_t

struct lmmc_quad_tanh_sinh_state_t

双指数映射:x(t) = center + half_length*tanh(pi/2*sinh(t))。

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

lmmc_quad_tanh_sinh_state_t 的协作图:
成员变量
lmmc_quad_func_t func
void * user_data
lmmc_real_t a
lmmc_real_t b
lmmc_real_t center
lmmc_real_t half_length
size_t max_nodes
size_t num_evals

函数说明

◆ lmmc_quad_tanh_sinh()

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

Tanh-Sinh(双指数)积分,适用于端点奇异性。

利用 \(\tanh(\frac{\pi}{2}\sinh t)\) 变换将端点奇异性映射为指数衰减。 因浮点舍入落到精确端点的节点不调用 f,其极限权重贡献按零处理; 非端点回调的 NaN 或无穷值仍返回数值失败。 对端点处有代数或对数奇异性的被积函数特别有效。

参数
[in]f被积函数回调。
[in]ud用户数据指针,传递给 f 。
[in]a积分下限。
[in]b积分上限。
[in]abs_tol绝对容差,范围 [1e-15, 1e-1]。
[in]max_nodes实际回调次数的总预算,范围 [1, 1000000]。
[out]out积分结果(值、误差估计、求值次数)。
返回
LMMC_STATUS_OK 在容差内收敛; LMMC_STATUS_CONVERGENCE_FAILED 预算不足以完成求积层,或十层后仍未收敛; LMMC_STATUS_NUMERICAL_FAILURE 回调或中间结果为非有限值; LMMC_STATUS_INVALID_ARGUMENT 若参数超出有效范围或指针为 NULL。
注解
  • 仅对可表示的内部节点调用 f。
  • 实际回调次数记录在 out->num_evals 中,不超过 max_nodes 次。
  • 仅比较并提交完整层的估计。
  • 预算/数值失败保留最后完整层的 value(尚无完整层则为零),error 为正无穷。
  • 完成十层仍不收敛时,保留最后完整层值和最后两个完整层的误差估计。
  • 不分配堆内存。

在文件 quadrature_tanh_sinh.c 第 136 行定义.

引用了 lmmc_quad_tanh_sinh_state_t::a, lmmc_quad_tanh_sinh_state_t::b, lmmc_quad_tanh_sinh_state_t::center, lmmc_quad_result_t::error, lmmc_quad_tanh_sinh_state_t::func, lmmc_quad_tanh_sinh_state_t::half_length, lmmc_quad_center_half_length(), lmmc_quad_tanh_sinh(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, lmmc_quad_tanh_sinh_state_t::max_nodes, lmmc_quad_result_t::num_evals, lmmc_quad_tanh_sinh_state_t::user_data , 以及 lmmc_quad_result_t::value.

被这些函数引用 lmmc_quad_tanh_sinh().

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