⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lagrange.cpp

📁 实现拉格朗日插值定理的完整代码,要求输入的是整型数
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h> 
#include <math.h> 
float lagrange(int n,float *x,float *y,float X);  //声明拉格朗日插值函数
int main()
{
  int i;
  int t;
  float x[20];                 //最多20组成员数组
  float y[20];                 //最多20组成员对应的数据
  float X,Px;
    printf("    请输入插值多项式的次数N\n");   
    scanf("    %d",&t);         //获取多项式的次数t次
    t=t+1;
  for( i=0;i<t;i++)             //获取各组数据,共t+1组,因为t+1个点惟一地确定t次多项式h(x)
  {
    printf("    请输入x[%d]:\n",i);
    scanf("    %f",&x[i]);
    printf("    请输入y[%d]:\n",i);
    scanf("    %f",&y[i]);
  }
  printf("    请输入要计算的X的值:\n");  
  scanf("    %f",&X);            //获取计算的X的值,应用中取x=0
  Px=lagrange(t,x,y,X);          //调用拉格朗日插值函数计算
  system("cls");
  printf("\n===计算结果如下=====\n\n");
  printf("    当 X=%.4f 时",X);  //输出X的值
  printf("   Y=%.4f \n",Px);     //输出计算结果
  
  return 1; 
  
}
float lagrange(int n,float *x,float *y,float X)   //定义拉格朗日插值函数,n为次数,x指针指向对应成员数组,                                            
                                                  //y指针指向对应成员的值的数组,X为计算多项式中X的取值
{
    float L,P=0.0;
    int j,k;
     for(k=0;k<n;k++)
      {
        L=1.0;
        for(j=0;j<n;j++)
          {
            if(j==k)
              continue;
            L*=(X-x[j])/(x[k]-x[j]);         //L为Lagrange插值基函数
          }
        P+=y[k]*L;                           //P为n次Lagrange插值多项式
     }
   return P;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -