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

浏览该文件的源代码.

结构体

struct  bisection_state_t

函数

lmmc_status_t lmmc_bisection_solve (lmmc_scalar_func_t func, void *user_data, lmmc_real_t left, lmmc_real_t right, const lmmc_nonlinear_config_t *cfg, lmmc_nonlinear_result_t *out_result)
 二分法求根.

结构体说明

◆ bisection_state_t

struct bisection_state_t

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

bisection_state_t 的协作图:
成员变量
lmmc_scalar_func_t func
void * user_data
lmmc_nonlinear_config_t local_cfg
lmmc_nonlinear_result_t * out_result
lmmc_real_t left
lmmc_real_t right
lmmc_real_t f_left
lmmc_real_t f_right
size_t iter

函数说明

◆ lmmc_bisection_solve()

lmmc_status_t lmmc_bisection_solve ( lmmc_scalar_func_t func,
void * user_data,
lmmc_real_t left,
lmmc_real_t right,
const lmmc_nonlinear_config_t * cfg,
lmmc_nonlinear_result_t * out_result )

二分法求根.

要求 f(left)*f(right) < 0(或端点本身为根)。中点与半区间宽度按 端点符号选择等价公式,不形成可能溢出的 left+right 或 right-left。收敛判据为 |f(mid)| <= abs_tol 或半区间宽度 <= x_tol。

参数
[in]func标量函数 f(x).
[in]user_data传递给 func 的用户上下文.
[in]left区间左端点,要求 left < right.
[in]right区间右端点.
[in]cfg配置参数,可为 NULL(使用默认值).
[out]out_result求根结果统计.
返回
副作用
  • 无内存分配.多次调用 func.

在文件 nonlinear_bisection.c 第 126 行定义.

引用了 lmmc_nonlinear_result_t::converged, lmmc_nonlinear_result_t::failure_reason, bisection_state_t::func, bisection_state_t::iter, bisection_state_t::left, lmmc_bisection_solve(), LMMC_NONLINEAR_FAILURE_MAX_ITER, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK, bisection_state_t::local_cfg, lmmc_nonlinear_config_t::max_iter, bisection_state_t::out_result, bisection_state_t::right , 以及 bisection_state_t::user_data.

被这些函数引用 lmmc_bisection_solve().

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