拉格朗日曲面插值代码c++
时间: 2023-10-16 08:23:18 浏览: 116
c++拉格朗日插值法
5星 · 资源好评率100%
以下是一个基于C语言的拉格朗日曲面插值的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
double lagrange(double* x, double* y, int n, double xi) {
double yi = 0.0;
for (int i = 0; i < n; i++) {
double p = 1.0;
for (int j = 0; j < n; j++) {
if (i != j) {
p *= (xi - x[j]) / (x[i] - x[j]);
}
}
yi += y[i] * p;
}
return yi;
}
int main() {
int n = 5; // 数据点数
double* x = (double*)malloc(n * sizeof(double));
double* y = (double*)malloc(n * sizeof(double));
x[0] = 0.0; y[0] = 1.0;
x[1] = 1.0; y[1] = 3.0;
x[2] = 2.0; y[2] = 5.0;
x[3] = 3.0; y[3] = 7.0;
x[4] = 4.0; y[4] = 9.0;
double xi = 2.5; // 待插值点
double yi = lagrange(x, y, n, xi);
printf("At x = %.2f, y = %.2f\n", xi, yi);
free(x);
free(y);
return 0;
}
```
在这个例子中,我们将要对给定的5个数据点进行拉格朗日曲面插值,并计算在x=2.5处的插值结果。代码中的`lagrange`函数接受数据点的横纵坐标数组x和y,数据点数n,以及待插值的横坐标值xi,并返回插值结果yi。主函数中的数据点和待插值点都是硬编码的,我们也可以通过文件读取等方式来指定。
阅读全文