预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

线性插值 给出两点(,xyii),0,1i=,则有线性插值函数 xx−1xx−0 Lx10011()=+=l()xylxy()y0+y1 x01−−xxx10 抛物插值 给出三点(,xyii),0,1,2i=,则有三点抛物线插值函数 ()()xxxx−−12()()xx−−02xx()()xx−−01xx Lx2012()=++yyy ()()()()()()xxxx0102−−xxxx1012−−xxxx2021−− Lagrange插值函数的一般形式 两点线性插值函数和三点抛物线插值函数属于Lagrange插值中比较常用的低次插值,对于N个点 (xii,yi),=0,1,2,…,N-2,N-1的Lagrange插值函数的一般形式为: ()()()()xxxx−−12……xx−nn−−2xx−1()()()()xx−−02xxxx−nn−−2xx−1 Lxn−101()=++yy… ()()()()()()()()xxxx0102−−……xx0−nn−−20xx−1xxxx1012−−xx1−nn−−21xx−1 ()()()()xxxx−−12…xx−nn−−3xx−2 +yn−1 ()()(xxxxnn−−11−−12…xxxxnnnn−−−−1211−−)() Lagrange插值的C语言编程 #include<stdio.h> #include<iostream.h> #include<stdlib.h> #include<math.h> //拉格朗日高次插值 doubleLInterp(double*px,double*py,intn,double*pxx,double*pyy,intnn) { intii,i,j; double*temp=(double*)malloc(n*sizeof(double)); double*sumb=(double*)malloc(nn*sizeof(double)); for(ii=0;ii<nn;ii++) { for(i=0;i<n;i++) { *(temp+i)=1; for(j=0;j<n;j++) if(j!=i) *(temp+i)*=(*(pxx+ii)-*(px+j))/(*(px+i)-*(px+j)); } *(sumb+ii)=0; for(i=0;i<n;i++) *(sumb+ii)+=*(temp+i)**(py+i); } for(ii=0;ii<nn;ii++) *(pyy+ii)=*(sumb+ii); free(temp); free(sumb); return0; } //分段线性插值 doublePLInterp(double*px,double*py,intn,double*pxx,double*pyy,intnn) { double*result=(double*)malloc(nn*sizeof(double)); inti,ii; for(ii=0;ii<nn;ii++) for(i=0;i<n;i++) { if(*(pxx+ii)>=*(px+i)&&*(pxx+ii)<=*(px+i+1)) { *(result+ii)=(*(pxx+ii)-*(px+i+1))/(*(px+i)-*(px+i+1))**(py+i) +(*(pxx+ii)-*(px+i))/(*(px+i+1)-*(px+i))**(py+i+1); break; } } for(ii=0;ii<nn;ii++) *(pyy+ii)=*(result+ii); free(result); return0; } //分段抛物插值 doublePPInterp(double*px,double*py,intn,double*pxx,double*pyy,intnn) { double*result=(double*)malloc(nn*sizeof(double)); inti,ii; for(ii=0;ii<nn;ii++) for(i=0;i<n;i++) { if(*(pxx+ii)>=*(px+i)&&*(pxx+ii)<=*(px+i+1)&&fabs(*(pxx+ii)-*(px+i))>=fabs(*(pxx+ii)-*(px+i+1))) { if(i==n-2) i=i-1; *(result+ii)=(*(pxx+ii)-*(px+i+1))*(*(pxx+ii)-*(px+i+2))/((*(px+i)-*(px+i+1))*(*(px+i)-*(px+i+2)))**(py+i) +(*(pxx+ii)-*(px+i))*(*(pxx+ii)-*(px+i+2))/((*(px+i+1)-*(px+