数值分析(一)拉格朗日插值法c++实现

#include 
#include 
#include 
using namespace std;
typedef struct
{
    int x;
    float  y;
} LAGRANG_DATA;
typedef vector LAGDATE;
void print( LAGDATE &largeng,int m)
{
    LAGDATE::iterator ite1,ite2;
    float sum1,sum2,sum=0;
    for(ite1=largeng.begin(); ite1!=largeng.end(); ite1++)
    {
        sum1=1;
        sum2=1;
        for(ite2=largeng.begin(); ite2!=largeng.end(); ite2++)
        {
            if(ite1==ite2)
                continue;
            sum1*=(m-(ite2->x));
            sum2*=((ite1->x)-(ite2->x));
        }
        sum+=(ite1->y)*sum1/sum2;
    }
    cout<<"sum="<int main()
{
    LAGRANG_DATA date;
    LAGDATE lagrang;
    int n,m;
    cin>>n;  //输入多少组数据
    cin>>m;  //输入要计算的值
    for(int i=0; icin>>date.x;
        cin>>date.y;
        lagrang.push_back(date);
    }
    print(lagrang,m);
//  cout<<"第一个lagrang:"<
    //  cout<<&lagrang<

    return 0;
}
/*
3
18
4 10
5 5.25
6 1
*/
//18   -11

还有很多改进的地方

你可能感兴趣的:(数学)