拉格朗日插值的实现

 

 

  • 问题描述:

对于要求选取11个等距插值节点,用拉格朗日插值,计算x为0.5, 4.5处的函数值并将结果与精确值进行比较。

输入:区间长度,n(即n+1个节点),预测点

输出:预测点的近似函数值,精确值,及误差

 

  • 朗格朗日插值公式:

原理就不再介绍了,下面来看一下公式

  • 朗格朗日插值公式流程图:

拉格朗日插值的实现_第1张图片

 

 

 

  • 程序实现
#include 
#include 

using namespace std;

//产生的节点数
int N;
//保存生成的节点横坐标
double dataX[1000];
//保存生成的节点纵坐标
double dataY[1000];
//生成坐标点
void produceData(double startX,double endX,int N);
//计算误差
double calcDeviation(double accuracy,double calcValue);
//拉格朗日计算插值
double calc(double x);


int main()
{
    double x;
    double startX,endX;
    char ch = 'n';
    cout<<"插值函数为:1/(1+x*x)"<>N;
    cout<<"请输入左右区间范围:";
    cin>>startX;
    cin>>endX;
    produceData(startX,endX,N);
    while(ch != 'y')
    {
        cout<<"请输入要计算的x值:";
        cin>>x;
        double correctValue = 1.0/(1 + x*x);
        double calcValue = calc(x);
        cout<<"精确值为:"<>ch;
    }
    return 0;
}
//生成坐标点
void produceData(double startX,double endX,int N)
{
    double x=startX;
    double dX = (endX - startX) /(N-1) ;
    dataX[0] = x;
    dataY[0] = 1.0 / (1 + x*x);
    for(int i=1;i

 

  • 运行截图

拉格朗日插值的实现_第2张图片

你可能感兴趣的:(插值与拟合,计算方法,数值分析,朗格朗日插值,C++)