#define N 10
#include<stdio.h>
void main()
{
int i,n,t=1;
float x[N],y[N],yy[N],X,Y;
float Hermite(int n,float x[N],float y[N],float yy[N],float X);
while(t)
{
printf("please input n(this number must between 1-%d):",N);
scanf("%d",&n);
if(n<1||n>N)printf("Erroe!please input n again!");
else t=0;
}
for(i=0;i<=n;i++)
{
printf("please input x[%d]:",i);
scanf("%f",&x[i]);
printf("please input y[%d]:",i);
scanf("%f",&y[i]);
printf("please input y'[%d]:",i);
scanf("%f",&yy[i]);
}
printf("please input x:");
scanf("%f",&X);
Y=Hermite(n,x,y,yy,X);
printf("this result is:%f",Y);
}
float Hermite(int n,float x[N],float y[N],float yy[N],float X)
{
int i,j;
float p[N],q[N],h[N],z;
for(i=0;i<=n;i++)
if(X<x[i]){j=i;break;}
h[j]=x[j]-x[j-1];
p[j-1]=(1+2*(X-x[j-1])/h[j])*(X-x[j])*(X-x[j])/(h[j]*h[j]);
p[j]=(1-2*(X-x[j-1])/h[j])*(X-x[j-1])*(X-x[j-1])/(h[j]*h[j]);
q[j-1]=(X-x[j-1])*(X-x[j])*(X-x[j])/(h[j]*h[j]);
1
评论13
最新资源