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

浏览该文件的源代码.

结构体

struct  secant_state_t

函数

lmmc_status_t lmmc_secant_solve (lmmc_scalar_func_t func, void *user_data, lmmc_real_t x0, lmmc_real_t x1, const lmmc_nonlinear_config_t *cfg, lmmc_nonlinear_result_t *out_result)
 割线法求根.

结构体说明

◆ secant_state_t

struct secant_state_t

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

secant_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 x0
lmmc_real_t x1
lmmc_real_t f0
lmmc_real_t f1
size_t iter

函数说明

◆ lmmc_secant_solve()

lmmc_status_t lmmc_secant_solve ( lmmc_scalar_func_t func,
void * user_data,
lmmc_real_t x0,
lmmc_real_t x1,
const lmmc_nonlinear_config_t * cfg,
lmmc_nonlinear_result_t * out_result )

割线法求根.

仅需函数值,不需要导数。使用两个初始点 x0 != x1 逼近;函数值先按 相邻值的最大绝对值缩放,异号函数值使用凸组合计算截距,因此函数值差、 初始点差均不必在原始量级上可表示。非零常数缩放 f 不改变判定。 收敛判据同 Newton 法。

参数
[in]func标量函数 f(x).
[in]user_data传递给 func 的用户上下文.
[in]x0第一个初始点.
[in]x1第二个初始点,须 x0 != x1.
[in]cfg配置参数,可为 NULL.
[out]out_result求根结果统计.
返回
同 lmmc_newton_solve.
副作用
  • 无内存分配.多次调用 func.

在文件 nonlinear_secant.c 第 106 行定义.

引用了 lmmc_nonlinear_config_t::abs_tol, lmmc_nonlinear_result_t::converged, secant_state_t::f0, secant_state_t::f1, lmmc_nonlinear_result_t::failure_reason, secant_state_t::func, lmmc_nonlinear_result_t::function_value, secant_state_t::iter, lmmc_nonlinear_do_log(), LMMC_NONLINEAR_FAILURE_MAX_ITER, LMMC_NONLINEAR_FAILURE_NONE, LMMC_NONLINEAR_FAILURE_NUMERICAL_ISSUE, lmmc_nonlinear_load_and_validate_config(), lmmc_nonlinear_reset_result(), lmmc_secant_solve(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK, secant_state_t::local_cfg, lmmc_nonlinear_config_t::max_iter, secant_state_t::out_result, lmmc_nonlinear_result_t::residual_norm, lmmc_nonlinear_result_t::root, secant_state_t::user_data, secant_state_t::x0 , 以及 secant_state_t::x1.

被这些函数引用 lmmc_secant_solve().

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