|
LMMC
Lamina Mathematic core
|
#include "optimize_internal.h"结构体 | |
| struct | lmmc_broyden_workspace_t |
函数 | |
| lmmc_status_t | lmmc_nleq_broyden (lmmc_opt_func_t F, void *user_data, lmmc_vec_t *x, const lmmc_optimize_config_t *cfg, lmmc_optimize_result_t *out) |
| Broyden 法求解非线性方程组 F(x) = 0。 | |
| struct lmmc_broyden_workspace_t |
在文件 optimize_broyden.c 第 3 行定义.
| 成员变量 | ||
|---|---|---|
| lmmc_opt_workspace_t | arena | |
| lmmc_vec_t | value | |
| lmmc_vec_t | next_value | |
| lmmc_vec_t | delta_x | |
| lmmc_vec_t | delta_F | |
| lmmc_vec_t | Bdx | |
| lmmc_vec_t | rhs | |
| lmmc_mat_t | B | |
| lmmc_mat_t | lu | |
| lmmc_status_t lmmc_nleq_broyden | ( | lmmc_opt_func_t | F, |
| void * | user_data, | ||
| lmmc_vec_t * | x, | ||
| const lmmc_optimize_config_t * | cfg, | ||
| lmmc_optimize_result_t * | out ) |
Broyden 法求解非线性方程组 F(x) = 0。
维护 B ≈ J 的秩一更新:B += (ΔF - B·Δx)·Δxᵀ / (Δxᵀ·Δx)。 初始 B 通过有限差分近似。
| [in] | F | 非线性函数回调。 |
| [in] | user_data | 传递给回调的用户数据。 |
| [in,out] | x | 初始猜测 / 输出解。 |
| [in] | cfg | 算法配置。 |
| [out] | out | 迭代结果。 |
首次更新前尚无步长差分或下一步残差。
在文件 optimize_broyden.c 第 79 行定义.
引用了 lmmc_opt_workspace_t::allocation, lmmc_broyden_workspace_t::arena, lmmc_broyden_workspace_t::B, lmmc_broyden_workspace_t::delta_x, lmmc_optimize_result_t::failure_reason, lmmc_optimize_result_t::final_residual, lmmc_memory_free(), lmmc_nleq_broyden(), LMMC_OPT_FAILURE_NONE, LMMC_OPT_FAILURE_NUMERICAL_ISSUE, lmmc_optimize_arguments_valid(), lmmc_optimize_emit(), lmmc_optimize_jacobian(), lmmc_optimize_norm(), lmmc_optimize_result_init(), lmmc_optimize_stop(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_broyden_workspace_t::next_value, lmmc_optimize_result_t::num_iter, lmmc_vec_t::size , 以及 lmmc_broyden_workspace_t::value.
被这些函数引用 lmmc_nleq_broyden().