#include <stdio.h>
// 线性样条插值函数
float linear_spline_interpolation(float x[], float y[], int n, float target_x) {
int i;
for (i = 0; i < n - 1; i++) {
if (target_x >= x[i] && target_x <= x[i + 1]) {
return y[i] + (y[i + 1] - y[i]) / (x[i + 1] - x[i]) * (target_x - x[i]);
}
}
return 0; // 如果target_x不在已知数据范围内,返回0
}
int main() {
float x[] = {1, 2, 3, 4, 5};
float y[] = {2, 4, 6, 8, 10};
int n = sizeof(x) / sizeof(x[0]);
float target_x = 2.5;
float result = linear_spline_interpolation(x, y, n, target_x);
printf("插值结果: %f\n", result);
return 0;
} |