|
LMMC
Lamina Mathematic core
|
#include "memory_bridge.h"#include "internal.h"#include "internal/interp_internal.h"#include <math.h>#include <string.h>结构体 | |
| struct | lmmc_interp_pchip_t |
| PCHIP 插值上下文(不透明类型). 更多... | |
| struct | lmmc_interp_akima_t |
| Akima 插值上下文(不透明类型). 更多... | |
函数 | |
| void | lmmc_interp_pchip_destroy (lmmc_interp_pchip_t *p) |
| 销毁 PCHIP 插值上下文,释放内部分配的所有内存. | |
| lmmc_status_t | lmmc_interp_pchip_create (const lmmc_real_t *xs, const lmmc_real_t *ys, size_t n, lmmc_interp_pchip_t **out) |
| 由节点构造 PCHIP 单调三次插值. | |
| lmmc_status_t | lmmc_interp_pchip_eval (const lmmc_interp_pchip_t *p, lmmc_real_t x, lmmc_real_t *out_y) |
| 在 PCHIP 插值上求值. | |
| void | lmmc_interp_akima_destroy (lmmc_interp_akima_t *a) |
| 销毁 Akima 插值上下文,释放内部分配的所有内存. | |
| lmmc_status_t | lmmc_interp_akima_create (const lmmc_real_t *xs, const lmmc_real_t *ys, size_t n, lmmc_interp_akima_t **out) |
| 由节点构造 Akima 局部三次插值. | |
| lmmc_status_t | lmmc_interp_akima_eval (const lmmc_interp_akima_t *a, lmmc_real_t x, lmmc_real_t *out_y) |
| 在 Akima 插值上求值. | |
| struct lmmc_interp_pchip_t |
PCHIP 插值上下文(不透明类型).
在文件 interp_shape.c 第 8 行定义.
| 成员变量 | ||
|---|---|---|
| size_t | n | |
| lmmc_real_t * | xs | |
| lmmc_real_t * | ys | |
| lmmc_real_t * | d |
各节点导数。 |
| struct lmmc_interp_akima_t |
Akima 插值上下文(不透明类型).
在文件 interp_shape.c 第 148 行定义.
| 成员变量 | ||
|---|---|---|
| size_t | n | |
| lmmc_real_t * | xs | |
| lmmc_real_t * | ys | |
| lmmc_real_t * | d |
各节点导数。 |
| void lmmc_interp_pchip_destroy | ( | lmmc_interp_pchip_t * | p | ) |
销毁 PCHIP 插值上下文,释放内部分配的所有内存.
在文件 interp_shape.c 第 15 行定义.
引用了 lmmc_interp_pchip_t::d, lmmc_interp_pchip_destroy(), lmmc_memory_free(), lmmc_interp_pchip_t::xs , 以及 lmmc_interp_pchip_t::ys.
被这些函数引用 lmmc_interp_pchip_create() , 以及 lmmc_interp_pchip_destroy().
| lmmc_status_t lmmc_interp_pchip_create | ( | const lmmc_real_t * | xs, |
| const lmmc_real_t * | ys, | ||
| size_t | n, | ||
| lmmc_interp_pchip_t ** | out ) |
由节点构造 PCHIP 单调三次插值.
PCHIP(Piecewise Cubic Hermite Interpolating Polynomial)在单调数据上 保持插值单调性.节点导数由 Fritsch-Carlson 方法计算.
| [in] | xs | 严格升序节点 x 数组. |
| [in] | ys | 对应 y 值数组. |
| [in] | n | 节点数,至少 2 . |
| [out] | out | 返回的 PCHIP 句柄. |
< 各段斜率。
在文件 interp_shape.c 第 64 行定义.
引用了 lmmc_interp_pchip_t::d, interp_check_finite_values(), interp_check_samples(), lmmc_interp_pchip_create(), lmmc_interp_pchip_destroy(), lmmc_memory_alloc(), lmmc_memory_alloc_array(), lmmc_memory_free(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK, lmmc_interp_pchip_t::n, lmmc_interp_pchip_t::xs , 以及 lmmc_interp_pchip_t::ys.
被这些函数引用 lmmc_interp_pchip_create().
| lmmc_status_t lmmc_interp_pchip_eval | ( | const lmmc_interp_pchip_t * | p, |
| lmmc_real_t | x, | ||
| lmmc_real_t * | out_y ) |
在 PCHIP 插值上求值.
在文件 interp_shape.c 第 115 行定义.
引用了 lmmc_interp_pchip_t::d, interp_find_interval(), lmmc_interp_pchip_eval(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK, LMMC_STATUS_OUT_OF_RANGE, lmmc_interp_pchip_t::n, lmmc_interp_pchip_t::xs , 以及 lmmc_interp_pchip_t::ys.
被这些函数引用 lmmc_interp_pchip_eval().
| void lmmc_interp_akima_destroy | ( | lmmc_interp_akima_t * | a | ) |
销毁 Akima 插值上下文,释放内部分配的所有内存.
在文件 interp_shape.c 第 155 行定义.
引用了 lmmc_interp_akima_t::d, lmmc_interp_akima_destroy(), lmmc_memory_free(), lmmc_interp_akima_t::xs , 以及 lmmc_interp_akima_t::ys.
被这些函数引用 lmmc_interp_akima_create() , 以及 lmmc_interp_akima_destroy().
| lmmc_status_t lmmc_interp_akima_create | ( | const lmmc_real_t * | xs, |
| const lmmc_real_t * | ys, | ||
| size_t | n, | ||
| lmmc_interp_akima_t ** | out ) |
由节点构造 Akima 局部三次插值.
Akima 插值使用局部加权平均计算节点导数,使离群点的影响保持局部. 边界导数计算需要至少 5 个节点.
| [in] | xs | 严格升序节点 x 数组. |
| [in] | ys | 对应 y 值数组. |
| [in] | n | 节点数,至少 5(Akima 需要至少 5 个点). |
| [out] | out | 返回的 Akima 句柄. |
< 扩展斜率 m[-2]..m[n] 存于索引 0..n+2。
在文件 interp_shape.c 第 203 行定义.
引用了 lmmc_interp_akima_t::d, interp_check_finite_values(), interp_check_samples(), lmmc_interp_akima_create(), lmmc_interp_akima_destroy(), lmmc_memory_alloc(), lmmc_memory_alloc_array(), lmmc_memory_free(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK, lmmc_interp_akima_t::n, lmmc_interp_akima_t::xs , 以及 lmmc_interp_akima_t::ys.
被这些函数引用 lmmc_interp_akima_create().
| lmmc_status_t lmmc_interp_akima_eval | ( | const lmmc_interp_akima_t * | a, |
| lmmc_real_t | x, | ||
| lmmc_real_t * | out_y ) |
在 Akima 插值上求值.
在文件 interp_shape.c 第 254 行定义.
引用了 lmmc_interp_akima_t::d, interp_find_interval(), lmmc_interp_akima_eval(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK, LMMC_STATUS_OUT_OF_RANGE, lmmc_interp_akima_t::n, lmmc_interp_akima_t::xs , 以及 lmmc_interp_akima_t::ys.
被这些函数引用 lmmc_interp_akima_eval().