马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
一个一次和二次插值的程序,能通过编译,但是不管输入什么入口参数,得到的z总是0.000000.不知道为什么,希望大家帮忙。
#include"stdlib.h"
#include"stdio.h"
main()
{
int k;
float x,z;
table(); 输出表格
printf("enter x please\n");
scanf("%f",&x);
loop: printf("linear interpolation or quadratic interpolation?(1 or 2?)\n");
scanf("%d",&k);
switch(k)
{
case 1: linear();break; 一次插值
case 2: quadratic();break; 二次插值
defult: printf("sorry,wrong input!\n");
goto loop;
}
printf("z=%f\n",z);
system("pause");
}
table()
{
int i,j;
float table[2][5]={.4,.5,.6,.7,.8,-0.916291,-.693147,-0.510826,-0.356675,-0.223144};
printf(" x ");
for(i=0;i<=1;i++)
{ for(j=0;j<=4;j++)printf("%10f",table[j]);
0==i? printf("\nlnx "):printf("\n");
}
}
linear()
{ float x0,y0,x1,y1,x2,y2,l0,l1,l2,x,ans;
printf("please enter parameter x0,y0,x1,y1\n");
scanf("%f%f%f%f",&x0,&y0,&x1,&y1);
l0=(x-x1)/(x0-x1);
l1=(x-x0)/(x1-x0);
ans=y0*l0+y1*l1;
return(ans);
}
quadratic()
{ float x0,y0,x1,y1,x2,y2,l0,l1,l2,x,ans;
printf("please enter parameter x0,y0,x1,y1,x2,y2\n");
scanf("%f%f%f%f%f%f",&x0,&y0,&x1,&y1,&x2,&y2);
l0=((x-x1)*(x-x2))/((x0-x1)*(x0-x2));
l1=((x-x0)*(x-x2))/((x1-x0)*(x1-x2));
l2=((x-x0)*(x-x1))/((x2-x0)*(x2-x1));
ans=y0*l0+y1*l1+y2*l2;
return(ans);
} |