1、一、实验目的及要求实验目的:1. 体会分段低次插值在不增加结点的情况下,提高插值精度的思想和这种用低代价换取高回报的手段。2. 熟练掌握分段一次、分段二次插值多项式公式;3. 掌握分段插值多项式算法设计的特点。实验要求:1. 给出分段一次、二次插值算法,用流程图来描述算法;2. 用 C 语言或 matlab 实现算法3. 给出误差分析。二、实验内容用下列插值节点数据,构造分段线性插值多项式,并计算 f(1.075),f(1.175)的值。x 1.05 1.10 1.15 1.20F(x) 2.12 2.20 2.17 2.32三、实验步骤(该部分不够填写.请填写附页)1.算法分析:下面用伪码描
2、述分段插值多项式的算法:Step1 输入插值节点数 n,插值点序列x(i),f(i),i=1,2,n,要计算的插值点 x.Step2 将输入的插值点 x 与每一个点对应的 x 作比较,比较出比它大的时完成。for i=0 to nif(x#define MAX_N 20 /*定义的点的最大个数为 20*/typedef struct tagPOINT /*结构化定义点,包括 x 和 y*/double x;double y;POINT;int main(void)int n,i,j;POINT pointsMAX_N+1;double x,a,b,P,f1,f2;clrscr();printf
3、(“Please input n value:n“);scanf(“%d“,if(nMAX_N)printf(“The input n is larger than MAX_N,please redefine the MAX_N.n“);return 1;if(npointsn-1.x) /*如果 x 比第一个点的 x 小或 x 比 最后一个点的 x 大时*/printf(“Input x value error!“);exit(0);for(i=0;in;i+) /*记录下插值区间的左端点和右端点*/if(xpointsi.x)b=pointsi.x;f2=pointsi.y;a=pointsi-1.x;f1=pointsi-1.y;break;P=(x-b)/(a-b)*f1+(x-a)/(b-a)*f2; /*插值函数*/printf(“nShow the result:%f“,P);实 验 报 告 附 页四、实验结果分析与评价 (该部分不够填写.请填写附页)注: 实验成绩等级分为(90-100 分)优,(80-89 分)良,(70-79 分) 中,(60-69 分) 及格,(59 分)不及格