aclgrg.c
来自「程序为五个一元插值算法」· C语言 代码 · 共 35 行
C
35 行
#include"math.h"
double aclgrg(x,y,n,t)
int n;
double t,x[],y[];
{int i,j,k,m;
double z,s;
z=0.0;
if(n<1)return(z);
if(n==1){z=y[0];return(z);}
if(n==2)
{z=(y[0]*(t-x[1])-y[1]*(t-x[0]))/(x[0]-x[1]);
return(z);
}
if (t<=x[1]){k=0;m=2;}
else if(t>=x[n-2]){k=n-3;m=n-1;}
else
{k=1;m=n;
while (m-k!=1)
{i=(k+m)/2;
if(t<x[i-1])m=i;
else k=i;
}
k=k-1;m=m-1;
if(fabs(t-x[k])<fabs(t-x[m]))k=k-1;
else m=m+1;
}
z=0.0;
for(i=k;i<=m;i++)
{s=1.0;
for(j=k;j<=m;j++)
if(j!=i)s=s*(t-x[j])/(x[i]-x[j]);
z=z+s*y[i];
}
return(z);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?