|
LMMC
Lamina Mathematic core
|
#include "memory_bridge.h"#include "internal/interp_internal.h"#include <math.h>#include <string.h>结构体 | |
| struct | lmmc_interp_cspline_t |
| 三次样条插值上下文(不透明类型,自然边界条件). 更多... | |
函数 | |
| void | lmmc_interp_cspline_destroy (lmmc_interp_cspline_t *spline) |
| 销毁三次样条上下文,释放内部分配的所有内存. | |
| lmmc_status_t | lmmc_interp_cspline_eval (const lmmc_interp_cspline_t *spline, lmmc_real_t query_x, lmmc_real_t *out_y) |
| 在样条上求值. | |
| lmmc_status_t | lmmc_interp_cspline_create_ex (const lmmc_real_t *xs, const lmmc_real_t *ys, size_t n, lmmc_spline_bc_t bc, lmmc_real_t deriv_left, lmmc_real_t deriv_right, lmmc_interp_cspline_t **out_spline) |
| 由节点构造带指定边界条件的三次样条. | |
| lmmc_status_t | lmmc_interp_cspline_create (const lmmc_real_t *xs, const lmmc_real_t *ys, size_t n, lmmc_interp_cspline_t **out_spline) |
| 由节点构造自然三次样条. | |
| struct lmmc_interp_cspline_t |
三次样条插值上下文(不透明类型,自然边界条件).
在文件 interp_spline.c 第 7 行定义.
| 成员变量 | ||
|---|---|---|
| size_t | n | |
| lmmc_real_t * | xs | |
| lmmc_real_t * | ys | |
| lmmc_real_t * | coeffs |
共 4*(n-1) 个系数,每段按 a、b、c、d 存储。 |
| void lmmc_interp_cspline_destroy | ( | lmmc_interp_cspline_t * | spline | ) |
销毁三次样条上下文,释放内部分配的所有内存.
在文件 interp_spline.c 第 14 行定义.
引用了 lmmc_interp_cspline_t::coeffs, lmmc_interp_cspline_destroy(), lmmc_memory_free(), lmmc_interp_cspline_t::xs , 以及 lmmc_interp_cspline_t::ys.
被这些函数引用 lmmc_interp_cspline_create_ex() , 以及 lmmc_interp_cspline_destroy().
| lmmc_status_t lmmc_interp_cspline_eval | ( | const lmmc_interp_cspline_t * | spline, |
| lmmc_real_t | query_x, | ||
| lmmc_real_t * | out_y ) |
在样条上求值.
在文件 interp_spline.c 第 25 行定义.
引用了 lmmc_interp_cspline_t::coeffs, interp_find_interval(), lmmc_interp_cspline_eval(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK, LMMC_STATUS_OUT_OF_RANGE, lmmc_interp_cspline_t::n, lmmc_interp_cspline_t::xs , 以及 lmmc_interp_cspline_t::ys.
被这些函数引用 lmmc_interp_cspline_eval().
| lmmc_status_t lmmc_interp_cspline_create_ex | ( | const lmmc_real_t * | xs, |
| const lmmc_real_t * | ys, | ||
| size_t | n, | ||
| lmmc_spline_bc_t | bc, | ||
| lmmc_real_t | deriv_left, | ||
| lmmc_real_t | deriv_right, | ||
| lmmc_interp_cspline_t ** | out_spline ) |
由节点构造带指定边界条件的三次样条.
支持自然,固定(clamped),not-a-knot 和周期四种边界条件. 对于 LMMC_SPLINE_CLAMPED,需通过 deriv_left/deriv_right 指定端点导数; 其他边界条件下这两个参数被忽略.
| [in] | xs | 严格升序节点 x 数组. |
| [in] | ys | 对应 y 值数组. |
| [in] | n | 节点数,至少 3 . |
| [in] | bc | 边界条件类型. |
| [in] | deriv_left | 左端点一阶导数(仅 LMMC_SPLINE_CLAMPED 时使用). |
| [in] | deriv_right | 右端点一阶导数(仅 LMMC_SPLINE_CLAMPED 时使用). |
| [out] | out_spline | 返回的样条句柄. |
在文件 interp_spline.c 第 141 行定义.
引用了 lmmc_interp_cspline_t::coeffs, interp_spline_workspace_t::h, interp_check_finite_values(), interp_check_samples(), interp_spline_not_a_knot(), interp_spline_periodic(), interp_spline_standard(), lmmc_interp_cspline_create_ex(), lmmc_interp_cspline_destroy(), lmmc_memory_free(), LMMC_SPLINE_NOT_A_KNOT, LMMC_SPLINE_PERIODIC, LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK , 以及 interp_spline_workspace_t::moments.
被这些函数引用 lmmc_interp_cspline_create() , 以及 lmmc_interp_cspline_create_ex().
| lmmc_status_t lmmc_interp_cspline_create | ( | const lmmc_real_t * | xs, |
| const lmmc_real_t * | ys, | ||
| size_t | n, | ||
| lmmc_interp_cspline_t ** | out_spline ) |
由节点构造自然三次样条.
| [in] | xs | 严格升序节点 x 数组. |
| [in] | ys | 对应 y 值数组. |
| [in] | n | 节点数,至少 3 . |
| [out] | out_spline | 返回的样条句柄. |
在文件 interp_spline.c 第 187 行定义.
引用了 lmmc_interp_cspline_create(), lmmc_interp_cspline_create_ex() , 以及 LMMC_SPLINE_NATURAL.
被这些函数引用 lmmc_interp_cspline_create().