📄 enhmt.c
字号:
double enhmt(double x[],double y[],double dy[],int n,double t);
main()
{
int n=3;
double x[3]={0.1,0.3,0.5},y[3]={0.099833,0.295520,0.479726},dy[3]={0.995004,0.955336,0.877583};
double t=0.25;
double z;
z=enhmt(x,y,dy,n,t);
printf("%lf",z);getch();
}
//埃尔米特(Hermite)插值
//x-长度为n的数组,存放n个节点xi,要求增序
//y-长度为n的数组,存放n个节点yi
//dy-长度为n的数组,存放n个节点上的一阶导数值
//n-给定节点的个数
//t-存放指定插值点的值x
double enhmt(double x[],double y[],double dy[],int n,double t)
{
int i,j;
double z,p,q,s;
z=0.0;
for (i=1;i<=n;i++)
{
s=1.0;
for (j=1;j<=n;j++)
{
if (j!=i)
{
s=s*(t-x[j-1])/(x[i-1]-x[j-1]);
}
}
s=s*s;
p=0.0;
for (j=1;j<=n;j++)
{
if (j!=i)
{
p=p+1.0/(x[i-1]-x[j-1]);
}
}
q=y[i-1]+(t-x[i-1])*(dy[i-1]-2.0*y[i-1]*p);
z=z+q*s;
}
return(z);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -