lisp抛物线插值_抛物线插值

#include<stdio.h>

#include<math.h>

#define m 10

void main()

{

int i,n;

float x[m],y[m],xgiven,yresult,yresult10,yresult20,yresult30,yresult11,yresult21,yresult31;

printf("\n<抛物线插值法>\n");

printf("请输入已知点个数(少于%d个):\n",m);

scanf("%d",&n);

printf("\n请输入已知坐标点:\n");

for(i=0;i<n;i++)

{

printf("\n点(%d)=",i);

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

}

printf("\n请输入求解坐标点:");

scanf("%f",&xgiven);

if(xgiven<x[0]||xgiven>x[n-1])

printf("越界\n");

else

{

for(i=1;i<n-1;i++)

{

if(xgiven<=x[i])

{

if(i=1)

break;

else if(fabs(xgiven-x[i-1])<=fabs(x[i]-xgiven))

{

i=i-1;

break;

}

}

}

if(x[n-2]<xgiven&&xgiven<=x[n-1])

i=n-2;

yresult10=y[i-1]*(xgiven-x[i])*(xgiven-x[i+1]);

yresult11=(x[i-1]-x[i])*(x[i-1]-x[i+1]);

yresult20=y[i]*(xgiven-x[i-1])*(xgiven-x[i+1]);

yresult21=(x[i]-x[i-1])*(x[i]-x[i+1]);

yresult30=y[i+1]*(xgiven-x[i-1])*(xgiven-x[i]);

yresult31=(x[i+1]-x[i-1])*(x[i+1]-x[i]);

yresult=yresult10/yresult11+yresult20/yresult21+yresult30/yresult31;

printf("xgiven=%f,yresult=%f\n",xgiven,yresult);

}

}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部