分段三次hermite插值C程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

分段三次hermite插值C程序

XYYZ

#include

#include

#define m 4

#define n 5

void main()

{

int i,k;

float x[n+1],y[n+1],yy[n+1],h,z[m];

printf("请按行输入一系列的x值:\n");

for(k=0;k

scanf("%f",&x[k]);

printf("请按行输入一系列的y值:\n");

for(k=0;k

scanf("%f",&y[k]);

printf("请输入一系列的y'的值:\n");

for(k=0;k

scanf("%f",&yy[k]);

printf("请按行输入这%d个插值点:\n",m+1);

for(i=0;i

scanf("%f",&z[i]);

printf("%f\n",z[i]);

for(i=0;i

for(k=0;k

if(z[i]>=x[k]&&z[i]<=x[k+1])

{

h=pow((z[i]-x[k+1])/(x[k]-x[k+1]),2.0)*(1+2*(z[i]-x[k])/(x[k+1]-x[k]))*y[k]+pow((z[i]-x[k])/(x[k +1]-x[k]),2.0)*(1+2*(z[i]-x[k+1])/(x[k]-x[k+1]))*y[k+1]+pow((z[i]-x[k+1])/(x[k]-x[k+1]),2.0)*(z [i]-x[k])*yy[k]+pow((z[i]-x[k])/(x[k+1]-x[k]),2.0)*(z[i]-x[k+1])*yy[k+1];

printf("h(%f)=%f\n",z[i],h);

}

}

附:程序运行结果如下:

请按行输入一系列的x值:

0.1 0.2 0.3 0.4 0.5 0.6

请按行输入一系列的y值:

0.09983 0.19867 0.29552 0.38942 0.47943 0.56462

请输入一系列的y'的值:

0.99500 0.98007 0.95534 0.92106 0.87758 0.82534

请按行输入这5个插值点: 0.15 0.25 0.35 0.45 0.55 0.995000

h(0.150000)=0.149437

h(0.250000)=0.247404

h(0.350000)=0.342898

h(0.450000)=0.434968

h(0.421384)=0.421384 Press any key to continue

相关文档
最新文档