计算方法_拉格朗日插值_C++实现_方法2

来源:互联网 发布:node 模块开发 编辑:程序博客网 时间:2024/05/08 01:29
#include<cstring>#include<string.h>#include<stdio.h>#include<iostream>#include<stdlib.h>#include<math.h>using namespace std;int main( ){    int n;       char c;    void sub44();    cout<<"拉格朗日插值法 " ;    sub44();        return 0;}void sub44(){     int n,i,j;    double xm,ym=0;    double x[200],y[200], l[200];    cout <<endl<<"请输入已知点的个数n-1=";    cin >> n;    cout << endl;    cout <<"请输入待求点的横坐标xm="<<endl;    cin >> xm;    cout << endl;        cout <<endl<<"请分别输入已知点的横坐标"<<endl;    for(i=0;i<=n;i++)    {        cout << "x[" << i << "]=";        cin >> x[i];        cout << endl;    }        cout <<endl<<"请分别输入已知点的纵坐标"<<endl;    for(i=0;i<=n;i++)    {        cout << "y[" << i << "]=";        cin >> y[i];        cout << endl;    }         for(i=0;i<=n;i++)    {        double b=1,c=1;        for(j=0;j<=n;j++)        {            if(i!=j){b=b*(xm-x[j]);}        }        for(j=0;j<=n;j++)        {            if(i!=j){c=c*(x[i]-x[j]);}        }        l[i]=b/c;    }    for(i=0;i<=n;i++)    {         ym=ym+y[i]*l[i];    }    cout <<"你输入待求点xm的值,即ym=?"<< endl<<ym<<endl;} 


0 0