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

📄 chazhisuanfa.cpp

📁 高级程序设计语言实现Lagrange插值
💻 CPP
字号:
#include <stdlib.h>

#include <stdio.h>

#include <string.h>

#include <math.h>

 

typedef struct {

       float x;

       float y;

}POINT;

float Lagrange(POINT Table[],int n,float x);

 

 

int Check_x_is_same_as_former(POINT Table[],int i){

       int k;

       for(k=0;k<i;++k)

              if(fabs(Table[k].x-Table[i].x)<0.000001)

                     return 1;

              return 0;

}

void InputTable(POINT Table[],int *n){

       int i;

       printf("\nNumber of Points n=");

       scanf("%d",n);

       for(i=0;i<*n;++i){

              printf("Input %dth point(x%d,y%d):",i,i,i);

              scanf("%f,%f",&Table[i].x,&Table[i].y);

              if(Check_x_is_same_as_former(Table,i)){

                     printf("\nThis x is the same as the former,ReInput!\n",i);

                     --i;

              }

       }

}

float Lagrange(POINT Table[],int n,float x){

       float Result,tmp;

       int i,j;

       Result=0.0;

       for(i=0;i<n;++i){

              tmp=1.0;

              for(j=0;j<n;++j){

                     if(j==i)continue;

                     tmp*=((x-Table[j].x)/(Table[i].x-Table[j].x));

              }

              Result+=(tmp*Table[i].y);

       }

       return(Result);

}

void main(){

       int n;

       float x,y;

       POINT Table[1000];

       InputTable(Table,&n);

       printf("\nInput x=");

       scanf("%f",&x);

       y=Lagrange(Table,n,x);

       printf("\nL(%f)=%f\n",x,y);

       }

⌨️ 快捷键说明

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