本程序为本人参考一些资料后编写,在visual c++6.0下调试通过。[@more@]///////////////////
/////埃尔米特Hermite插值
//////////////////
#include
using namespace std;
////////////
double Hermite(int n,double x,double *tx,double *ty,double *tyl);
////////////
////////////
int main()
{
int i,n;
double x,y;
x=y=0.0;
cout<<"请输入埃尔米特Hermite插值的节点数: n=";cin>>n;
while(n<2)
{
cout< cout<<"请重新输入埃尔米特Hermite插值的节点数: n=";cin>>n;
}
double *tx=new double[n];
double *ty=new double[n];
double *tyl=new double[n];
cout< for(i=0;i {
cout<<"x["<>tx[i];
cout<<"对应的函数值: ";cin>>ty[i];
cout<<"对应的导数值: ";cin>>tyl[i];
}
cout< delete [] tx;
delete [] ty;
delete [] tyl;
return 0;
}
////////////
////////////
double Hermite(int n,double x,double *tx,double *ty,double *tyl)
{
double h,a;
double y=0.0;
int i,j;
for(j=0;j {
h=1.0;
a=0.0;
for(i=0;i {
if(j!=i)
{
h=h*(x-tx[i])*(x-tx[i])/(tx[j]-tx[i])/(tx[j]-tx[i]);
a=a+1.0/(tx[j]-tx[i]);
}
}
y=y+h*((tx[j]-x)*(2*a*ty[j]-tyl[j])+ty[j]);
}
return (y);
}
////////////
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/11355887/viewspace-974953/
,如需转载,请注明出处,否则将追究法律责任。