拉格朗日插值法(代码实现及部分证明)

来源:互联网 发布:淘宝客推广技术 编辑:程序博客网 时间:2024/06/06 09:56

6来飞起



图片的i=j?下面第二个应该为temp = temp / (xi - xj);

#include "cstdio"const int MAXN = (int) 1e5 + 5;struct point  {    double x, y;} list[MAXN];int n, m;double x;double Lagrange( point *list, int qnum, double x )  {    double rt = 0, tmp = 1.0;    for(int i = 1; i <= qnum; rt += list[i].y * tmp, tmp = 1.0, ++i)        for(int j = 1; j <= qnum; ++j)            if(i != j)                tmp *= (x - list[j].x) / (list[i].x - list[j].x);    return rt;}int main()  {    scanf("%d", &n);    for(int i = 1; i <= n; scanf("%lf%lf", &list[i].x, &list[i].y), ++i);    scanf("%d", &m);    while( m-- )        scanf("%lf", &x), printf("%lf\n", Lagrange(list, n, x));}

感觉自己学了假的OI, 姚班大神虐蒟蒻~

大家都很强, 可与之共勉。

2017.3.18

0 0
原创粉丝点击