当前位置:文档之家› 实验四 插值法与曲线拟合

实验四 插值法与曲线拟合

计算方法实验报告
专业班级:医学信息工程一班姓名:陈小芳学号:201612203501002 实验成绩:
1.【实验题目】
插值法与曲线拟合
2.【实验目的】
3.【实验内容】
4. 【实验要求】
5. 【源程序(带注释)】
(1)拉格朗日插值
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
#define n 4 //插值节点的最大下标
main()
{
double x1[n+1]={0.4,0.55,0.65,0.8,0.9};
double y1[n+1]={0.4175,0.57815,0.69657,0.88811,1.02652};
double Lagrange(double x1[n+1],double y1[n+1],float t);
int m,k;float x,y;float X;double z;
printf("\n The number of the interpolation points is m =");
//输入插值点的个数
while(!scanf("%d",&m))
{
fflush(stdin);
printf("\n输入错误,请重新输入:\n");
printf("\n The number of the interpolation points is m =");
}
for(k=1;k<=m;k++)
{
printf("\ninput X%d=",k);
while(!scanf("%f",&X))
{
fflush(stdin);
printf("\n输入错误,请重新输入:\n");
printf("\ninput X%d=",k);
}
z=Lagrange(x1,y1,X);
printf("P(%f)=%f\n",X,z);
}
getch();
return (0);
}
double Lagrange(double x[n+1],double y[n+1],float X)
{
int i,j;
double L,P;
P=0.0;
for(i=0;i<=n;i++)
{
L=1.0;
for(j=0;j<=n;j++)
if(j!=i)L=L*(X-x[j])/(x[i]-x[j]);
P=P+y[i]*L;
}
return(P);
}。

相关主题