KIPL_Cs1gd
计算三次样条拟合函数的导数值。
接口定义
void KIPL_Cs1gd(int ideriv, int nVec, float *xVec, int initv, float *xData, float *coef, float *derValue)
参数
参数名 |
类型 |
描述 |
输入/输出 |
---|---|---|---|
ideriv |
整型数 |
需要计算的导数阶数。 |
输入 |
nVec |
整型数 |
数组xVec的长度。 |
输入 |
xVec |
单精度浮点数组 |
长度为nVec的数组,包含要计算三次样条的点。 |
输入 |
initv |
整型数 |
表示拟合得到三次多项式个数,等于nData-1。 |
输入 |
xData |
单精度浮点数组 |
长度为initv+1的数组,表示数据点的横坐标。 |
输入 |
coef |
单精度浮点数组 |
长度为4*(initv+1)的数组,表示生成的系数序列。 |
输入 |
derValue |
单精度浮点数组 |
长度为nVec的数组,包含三次样条在xVec各点的ideriv阶导数的值。 |
输出 |
依赖
#include "kipl.h"
示例
#include <stdio.h> #include <math.h> #include "kipl.h" int main() { int data_n = 11; float data_x[data_n]; float data_y[data_n]; for (int i = 0; i < data_n; i++) { data_x[i] = (float)(i) / (data_n - 1); data_y[i] = sin(15.0 * data_x[i]); } int test_n = 2 * data_n - 1; float test_x[test_n]; float test_y[test_n]; for (int i = 0; i < test_n; i++) { test_x[i] = (float)(i) / (test_n - 1); test_y[i] = sin(15.0 * test_x[i]); } float b[data_n], cscoef[4 * data_n]; KIPL_Csint(data_n, data_x, data_y, cscoef); int nintv = data_n - 1; int ideriv = 0; float derValue[test_n]; KIPL_Cs1gd(ideriv, test_n, test_x, nintv, data_x, cscoef, derValue); return 0; }
父主题: 三次样条函数