LMMC
Lamina Mathematic core
Toggle main menu visibility
载入中...
搜索中...
未找到
nonlinear.h
浏览该文件的文档.
1
5
#ifndef LMMC_NONLINEAR_H
6
#define LMMC_NONLINEAR_H
7
8
#include <stddef.h>
9
#include "
lmmc/numeric.h
"
10
#include "
lmmc/diagnostic.h
"
11
12
#ifdef __cplusplus
13
extern
"C"
{
14
#endif
15
23
typedef
lmmc_real_t
(*
lmmc_scalar_func_t
)(
lmmc_real_t
x,
void
* user_data);
24
28
typedef
lmmc_real_t
(*
lmmc_scalar_dfunc_t
)(
lmmc_real_t
x,
void
* user_data);
29
33
typedef
enum
{
34
LMMC_NONLINEAR_FAILURE_NONE
= 0,
35
LMMC_NONLINEAR_FAILURE_INVALID_BRACKET
= 1,
36
LMMC_NONLINEAR_FAILURE_MAX_ITER
= 2,
37
LMMC_NONLINEAR_FAILURE_ZERO_DERIVATIVE
= 3,
38
LMMC_NONLINEAR_FAILURE_NUMERICAL_ISSUE
= 4,
39
LMMC_NONLINEAR_FAILURE_SINGULAR_STEP
= 5
40
}
lmmc_nonlinear_failure_t
;
41
45
typedef
struct
{
46
int
converged
;
47
size_t
num_iter
;
48
lmmc_real_t
root
;
49
lmmc_real_t
function_value
;
50
lmmc_real_t
residual_norm
;
51
lmmc_nonlinear_failure_t
failure_reason
;
52
}
lmmc_nonlinear_result_t
;
53
57
typedef
struct
{
58
lmmc_real_t
abs_tol
;
59
lmmc_real_t
rel_tol
;
60
size_t
max_iter
;
61
lmmc_real_t
derivative_step
;
62
lmmc_real_t
min_derivative
;
63
lmmc_real_t
min_step
;
64
lmmc_diagnostic_sink_t
diagnostics
;
65
}
lmmc_nonlinear_config_t
;
66
68
const
char
*
lmmc_nonlinear_failure_string
(
lmmc_nonlinear_failure_t
reason);
69
71
lmmc_status_t
lmmc_nonlinear_default_config
(
lmmc_nonlinear_config_t
* out_cfg);
72
94
lmmc_status_t
lmmc_bisection_solve
(
95
lmmc_scalar_func_t
func,
96
void
* user_data,
97
lmmc_real_t
left,
98
lmmc_real_t
right,
99
const
lmmc_nonlinear_config_t
* cfg,
100
lmmc_nonlinear_result_t
* out_result
101
);
102
125
lmmc_status_t
lmmc_newton_solve
(
126
lmmc_scalar_func_t
func,
127
lmmc_scalar_dfunc_t
dfunc,
128
void
* user_data,
129
lmmc_real_t
x0,
130
const
lmmc_nonlinear_config_t
* cfg,
131
lmmc_nonlinear_result_t
* out_result
132
);
133
153
lmmc_status_t
lmmc_secant_solve
(
154
lmmc_scalar_func_t
func,
155
void
* user_data,
156
lmmc_real_t
x0,
157
lmmc_real_t
x1,
158
const
lmmc_nonlinear_config_t
* cfg,
159
lmmc_nonlinear_result_t
* out_result
160
);
161
162
#ifdef __cplusplus
163
}
164
#endif
165
166
#endif
lmmc_real_t
double lmmc_real_t
Public and internal LMMC real type.
定义
config.h:28
diagnostic.h
Unified diagnostic events for LMMC operations.
lmmc_diagnostic_sink_t
定义
diagnostic.h:37
lmmc_nonlinear_result_t::num_iter
size_t num_iter
定义
nonlinear.h:47
lmmc_nonlinear_result_t::residual_norm
lmmc_real_t residual_norm
定义
nonlinear.h:50
lmmc_nonlinear_config_t::abs_tol
lmmc_real_t abs_tol
定义
nonlinear.h:58
lmmc_nonlinear_result_t::converged
int converged
定义
nonlinear.h:46
lmmc_nonlinear_config_t::rel_tol
lmmc_real_t rel_tol
定义
nonlinear.h:59
lmmc_nonlinear_config_t::diagnostics
lmmc_diagnostic_sink_t diagnostics
定义
nonlinear.h:64
lmmc_nonlinear_failure_t
lmmc_nonlinear_failure_t
求根失败原因.
定义
nonlinear.h:33
LMMC_NONLINEAR_FAILURE_INVALID_BRACKET
@ LMMC_NONLINEAR_FAILURE_INVALID_BRACKET
定义
nonlinear.h:35
LMMC_NONLINEAR_FAILURE_NONE
@ LMMC_NONLINEAR_FAILURE_NONE
定义
nonlinear.h:34
LMMC_NONLINEAR_FAILURE_ZERO_DERIVATIVE
@ LMMC_NONLINEAR_FAILURE_ZERO_DERIVATIVE
定义
nonlinear.h:37
LMMC_NONLINEAR_FAILURE_SINGULAR_STEP
@ LMMC_NONLINEAR_FAILURE_SINGULAR_STEP
定义
nonlinear.h:39
LMMC_NONLINEAR_FAILURE_MAX_ITER
@ LMMC_NONLINEAR_FAILURE_MAX_ITER
定义
nonlinear.h:36
LMMC_NONLINEAR_FAILURE_NUMERICAL_ISSUE
@ LMMC_NONLINEAR_FAILURE_NUMERICAL_ISSUE
定义
nonlinear.h:38
lmmc_nonlinear_config_t::min_derivative
lmmc_real_t min_derivative
定义
nonlinear.h:62
lmmc_scalar_dfunc_t
lmmc_real_t(*) lmmc_scalar_dfunc_t(lmmc_real_t x, void *user_data)
标量函数导数签名: ,与 lmmc_scalar_func_t 同形参.
定义
nonlinear.h:28
lmmc_nonlinear_result_t::failure_reason
lmmc_nonlinear_failure_t failure_reason
定义
nonlinear.h:51
lmmc_nonlinear_config_t::min_step
lmmc_real_t min_step
定义
nonlinear.h:63
lmmc_newton_solve
lmmc_status_t lmmc_newton_solve(lmmc_scalar_func_t func, lmmc_scalar_dfunc_t dfunc, void *user_data, lmmc_real_t x0, const lmmc_nonlinear_config_t *cfg, lmmc_nonlinear_result_t *out_result)
Newton 法求根.
定义
nonlinear_newton.c:126
lmmc_nonlinear_default_config
lmmc_status_t lmmc_nonlinear_default_config(lmmc_nonlinear_config_t *out_cfg)
生成默认配置.
定义
nonlinear.c:130
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)
二分法求根.
定义
nonlinear_bisection.c:126
lmmc_nonlinear_result_t::function_value
lmmc_real_t function_value
定义
nonlinear.h:49
lmmc_nonlinear_config_t::derivative_step
lmmc_real_t derivative_step
定义
nonlinear.h:61
lmmc_nonlinear_config_t::max_iter
size_t max_iter
定义
nonlinear.h:60
lmmc_scalar_func_t
lmmc_real_t(*) lmmc_scalar_func_t(lmmc_real_t x, void *user_data)
标量函数签名: .
定义
nonlinear.h:23
lmmc_nonlinear_result_t::root
lmmc_real_t root
定义
nonlinear.h:48
lmmc_nonlinear_failure_string
const char * lmmc_nonlinear_failure_string(lmmc_nonlinear_failure_t reason)
获取失败原因对应的可读字符串.
定义
nonlinear.c:111
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)
割线法求根.
定义
nonlinear_secant.c:106
lmmc_nonlinear_config_t
求根算法配置.
定义
nonlinear.h:57
lmmc_nonlinear_result_t
求根结果统计.
定义
nonlinear.h:45
numeric.h
数值标量、特殊函数和 FFT 公共接口。
lmmc_status_t
lmmc_status_t
LMMC 库统一返回的状态码.
定义
status.h:22
lmmc
nonlinear.h
生成于
, 为 LMMC使用
1.18.0