分段线性插值.c

来自「数值计算的源代码」· C语言 代码 · 共 41 行

C
41
字号
#include<stdio.h>
void main()
{
	float xy[2][11],x,y;
	int n,i,j;
    char flag='y';
	printf("input n,max[n]=10\n");
	scanf("%d",&n);
	printf("input x[i],y[i]:\n");
    printf("input x[i]:\n");
    for(j=0;j<=n;j++)
	scanf("%f",&xy[0][j]);
    printf("input y[i]:\n");
    for(j=0;j<=n;j++)
	scanf("%f",&xy[1][j]);

      getchar();
printf("please enter 'y' to start:\n");
for(;flag==getchar();)
{

    printf("input x:\n");
    scanf("%f",&x);

if(x-xy[0][0]<0)i=0;
else if(x-xy[0][n]>=0)i=n-1;
else for(i=0;i<n-1;i++)
     if(x-xy[0][i]>=0&&x-xy[0][i+1]<0)break;



y=(x-xy[0][i+1])/(xy[0][i]-xy[0][i+1])*xy[1][i]+(x-xy[0][i])/(xy[0][i+1]-xy[0][i])*xy[1][i+1];

printf("output y:\n");
printf("%f",y);
 getchar();
printf("\nplease enter 'y' to continue:\n");

}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?