// 函数功能: 关于插值点point的拉格朗日插值函数在当前点x的值。 // 输入: point:n * 2维矩阵,n为节点数目。 // x为当前点。 // 输出: 对应于插值点point,x为输入条件下下的输出值 // 方法: 无 // 编写: 李兆亭,2019/12/23修改程序说明 // PS: 支持X为向量输入。 #include "GPM.h" int Lagrange_base(mat* point, vec* x, vec* f) { // 初始化 int row_len = (size(*point))(0); int x_len = (size(*x))(0); *f = vec(x_len, fill::zeros); double xj, yj, xi; vec a; // 计算 for (int j = 0; j < row_len; j++ ) { xj = (*point)(j, 0); yj = (*point)(j, 1); a = vec(x_len, fill::ones); for (int i = 0; i < row_len; i++) { if (i == j) { } else { xi = (*point)(i, 0); a = a%(*x - xi)*(1.0/(xj - xi)); } } *f = *f + a*yj; } return 1; }