123456789101112131415161718192021222324252627282930313233343536373839 |
- // 函数功能: 关于插值点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;
- }
|